24.Attacking-ldap
1. LDAP Fundamentals
Definition: Lightweight Directory Access Protocol (LDAP) is an open, vendor-neutral application protocol for accessing and maintaining distributed directory information services over an IP network. It provides a standardized way to query and modify directory services.
Purpose:
Centralized user authentication and authorization.
Storing and retrieving organizational data (users, groups, devices).
Managing directory services.
Architecture:
Client-server model.
Clients send requests; servers respond with directory data.
Data Model:
Hierarchical, tree-like structure (Directory Information Tree - DIT).
Entries are organized using Distinguished Names (DNs).
Attributes define characteristics of entries (e.g., cn, uid, mail).
Object classes define the types of entries.
Common Use Cases:
Single sign-on (SSO).
Email address lookup.
User account management.
Network resource access control.
Common Ports:
389 (LDAP - unencrypted).
636 (LDAPS - LDAP over SSL/TLS).
2. LDAP Requests and Responses
Requests:
bind: Authenticates a client.unbind: Closes a connection.search: Queries the directory.add: Creates a new entry.delete: Removes an entry.modify: Updates an existing entry.compare: Checks if an attribute matches a value.
Responses:
Result code (success, error).
Matched DN.
Referral URLs.
Requested data.
3. LDAP Implementations
OpenLDAP: Open-source, cross-platform, highly configurable.
Microsoft Active Directory (AD): Windows-based directory service that uses LDAP as one of its protocols and integrates with other Microsoft services.
4. LDAP Injection Vulnerability
Concept: LDAP injection exploits applications that construct LDAP queries from user-supplied input. Malicious input can alter the intended query logic, similar to SQL injection but targeting LDAP.
Attack Vectors:
Login forms.
Search fields.
Any input used in LDAP queries.
Special Characters:
*(wildcard).( )(parentheses - grouping).|(OR operator).&(AND operator).!(Negation).>=and<=(Greater/Lesser comparison).\(escape character).
Example Attack: If a login form uses (&(uid=$username)(userPassword=$password)), an attacker could enter *)(uid=* as the username, bypassing authentication.
Additional Payload Examples:
Extracting all users:
Privilege escalation:
Impact:
Unauthorized access to sensitive data.
Account compromise.
Privilege escalation.
Data modification or deletion.
5. LDAP Enumeration Techniques
Nmap: Identify open LDAP ports (389, 636).
ldapsearch: Query the LDAP server.
Anonymous Bind: Try connecting without credentials. Some LDAP servers allow anonymous reads.
DN Enumeration: Try common base DNs (e.g., dc=example,dc=com, ou=users,dc=example,dc=com).
User Enumeration:
Try common usernames or username patterns.
Look for the
sAMAccountNameattribute.
Group Enumeration:
Search for group objects.
LDAP Browser Tools:
JXplorer, Apache Directory Studio, and LdapAdmin for graphical LDAP exploration.
Additional Enumeration Tools:
LDAPenum (a Perl-based tool).
Medusa for brute-force attacks against LDAP authentication.
enum4linux (for Windows environments):
6. LDAP Injection Exploitation
Testing:
Use special characters in input fields (
*,(),|,&).Observe application behavior.
Bypassing Authentication: Inject *)(attribute=* to bypass conditions.
Data Retrieval: Modify queries to retrieve sensitive attributes.
Using ldapsearch for Exploitation: If an application reflects user input in an LDAP query, you can use ldapsearch syntax.
Tools like JXplorer (GUI) can be useful.
7. LDAP Injection Mitigation
Input Validation:
Sanitize user input.
Reject or escape special characters.
Parameterized Queries:
Treat user input as data, not code.
Least Privilege:
Limit LDAP bind account privileges.
Access Control:
Restrict access to sensitive attributes.
LDAPS (LDAP over SSL/TLS):
Encrypt LDAP traffic.
Regular Security Audits:
Penetration testing.
Code reviews.
Use of Web Application Firewalls (WAF):
Can detect and block LDAP injection attempts.
8. Commands Summary
Nmap:
ldapsearch:
Important Notes:
Replace placeholders with appropriate values.
Anonymous bind attempts may fail if the LDAP server requires authentication.
enum4linux is for Windows-based enumeration and has broader functionality.
Always use these techniques ethically and only on systems you have explicit permission to test.
Last updated