added information on LDAP
This commit is contained in:
		
							parent
							
								
									04c0dcefa4
								
							
						
					
					
						commit
						60ae1f1993
					
				| 
						 | 
					@ -1,16 +1,36 @@
 | 
				
			||||||
# LDAP
 | 
					# Leightweight Directory Acess Protocol (LDAP)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LDAP structures directory objects in a tree structure for a given domain which
 | 
				
			||||||
 | 
					is used to inherit permissions from root and parent objects. The protocol is
 | 
				
			||||||
 | 
					used for authentication and authorization of groups, users and resources,
 | 
				
			||||||
 | 
					called Organizational Units (OUs). The root object is a top level domain.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Organizational Units are Distinguished Names (DN) which represent the path to
 | 
				
			||||||
 | 
					an object inside the tree.  Parts  of the DN are named Relative Distinguished
 | 
				
			||||||
 | 
					Names (RDN). The Distinguished Names have properties attached which contain
 | 
				
			||||||
 | 
					additional information.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ports:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* 389, without encryption or StartTLS
 | 
				
			||||||
 | 
					* 636, with encryption enabled
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Get Domain
 | 
					## Get Domain
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Use the `ldapsearch` tool to receive information from an LDAP server.
 | 
					Use the `ldapsearch` tool to receive information from an LDAP server.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```sh
 | 
					```sh
 | 
				
			||||||
ldapsearch -H ldap://$TARGET_IP -x -s base namingcontexts
 | 
					ldapsearch -H ldap://$TARGET_IP -x -s base namingcontexts
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Use found namingcontexts DC
 | 
					* Use found namingcontexts DC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```sh
 | 
					```sh
 | 
				
			||||||
ldapsearch -H ldap://$TARGET_IP -x -b 'DC=<DC>,DC=<ORG>
 | 
					ldapsearch -H ldap://$TARGET_IP -x -b 'DC=<DC>,DC=<ORG>
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Authenticated LDAP Search
 | 
					* Authenticated LDAP Search
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```sh
 | 
					```sh
 | 
				
			||||||
ldapsearch -H ldap://$TARGET_IP -x -b 'DC=<DC>,DC=<ORG>' -D '<DC>\<user>' -W > outfile
 | 
					ldapsearch -H ldap://$TARGET_IP -x -b 'DC=<DC>,DC=<ORG>' -D '<DC>\<user>' -W > outfile
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
| 
						 | 
					@ -18,7 +38,48 @@ ldapsearch -H ldap://$TARGET_IP -x -b 'DC=<DC>,DC=<ORG>' -D '<DC>\<user>' -W > o
 | 
				
			||||||
## Domain Dump
 | 
					## Domain Dump
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If a set of LDAP credentials is known dump the domain via
 | 
					If a set of LDAP credentials is known dump the domain via
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```sh
 | 
					```sh
 | 
				
			||||||
ldapdomaindump $TARGET_IP  -u '<domain>\<user>' -p '<password>' --no-json --no-grep
 | 
					ldapdomaindump $TARGET_IP  -u '<domain>\<user>' -p '<password>' --no-json --no-grep
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The result is a set of HTML files, take a look at them.
 | 
					The result is a set of HTML files, take a look at them.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Query LDAP Objects
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LDAP objects can be queried for information retrieval.
 | 
				
			||||||
 | 
					A query starts with a DN followed by the scope, a filter for criteria and
 | 
				
			||||||
 | 
					additional attributes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A filter searching for a user's common name including a wildcard may look likes this.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					ldapsearch -H ldap://$TARGET_IP -x -b "DC=<DC>,DC=<ORG>" "(&(objectClass=user)(|(cn=Max*)(cn=Furiosa*)))"
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Vulnerabilities of Queries
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Queries are vulnerable to unvalidated input, e.g. just using a wildcard instead
 | 
				
			||||||
 | 
					of a password or username.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					(&(username=*)(password=*))
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If the targeted user would be named Maximilian the query may look like this.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					(&(username=Max*)(password=*))
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					There is also the possibility of using a tautology based attack like they are
 | 
				
			||||||
 | 
					used for SQL injections. They way they are done in LDAP queries is the following.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					(&(username=*)(|(&)(password=password))
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The tautology is introduced through `(&)`, which sets the condition of the
 | 
				
			||||||
 | 
					password check to true.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Other injections like blind based are also possible through boolean or error based responses, providing information about the state of the LDAP query. 
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue