Professional skills and methodology for LDAP injection vulnerability testing
Installation
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Professional skills and methodology for LDAP injection vulnerability testing
LDAP Injection Vulnerability Testing
AI LOAD INSTRUCTION: LDAP injection testing for applications that construct LDAP queries from user input. Covers authentication bypass (*)(&, wildcard injection), information extraction (attribute enumeration), blind boolean extraction, encoding bypass, and privilege escalation via group membership injection. Targets include OpenLDAP, Active Directory, and 389 Directory. Base models often confuse LDAP injection with SQL injection — the filter syntax and exploitation techniques are fundamentally different.
Overview
LDAP injection is a vulnerability similar to SQL injection that exploits flaws in LDAP query string construction, potentially leading to information disclosure and permission bypass. This skill provides methods for detecting, exploiting, and defending against LDAP injection.
Vulnerability Mechanism
The application concatenates user input directly into LDAP query strings without sufficient validation and filtering, allowing attackers to modify query logic.
// Use LDAP API parameterized functionalityStringfilter="(&(cn={0})(userPassword={1}))";
Object[] args = {escapedCN, escapedPassword};
// Build query using API
Whitelist validation
// Only allow specific charactersif (!input.matches("^[a-zA-Z0-9@._-]+$")) {
thrownewIllegalArgumentException("Invalid input");
}
Least privilege
Use least privilege accounts for LDAP connections
Restrict queryable attributes
Use access control lists
Error handling
Do not return detailed error messages
Unified error response
Log errors
DECISION TREE
LDAP search input point found (login, directory lookup, access control)?
├── LDAP special characters (*, (, ), \) cause error or behavior change?
│ ├── Authentication bypass possible (login form)?
│ │ ├── Logical bypass: *)(& with password *?
│ │ │ └── Confirm auth bypass — session granted without valid creds
│ │ └── Comment/precision bypass: admin)(&(cn=admin?
│ │ └── Confirm targeted auth bypass
│ ├── Information extraction possible (search/directory)?
│ │ ├── Wildcard enumeration: *)(cn=* returns all users?
│ │ │ └── Extract attributes: userPassword, mail, telephoneNumber
│ │ └── Attribute leak: *)(|(cn=*)(userPassword=*?
│ │ └── Confirm sensitive data disclosure
│ └── No visible data but response differs?
│ └── Blind boolean injection: compare *)(cn=admin vs *)(cn=nonexistent
│ └── Extract data character by character via boolean conditions
├── Special characters blocked?
│ └── Try encoding bypass: URL-encode, Unicode, NULL-byte (*))%00)
│ └── Any response difference?
│ └── Proceed with bypass-appropriate technique
└── No LDAP injection found?
└── Report not reproduced; verify LDAP sink and input flow
TESTING CHECKLIST
Identify all user-controlled inputs that feed into LDAP queries (login forms, user search, directory lookup, access control checks)
Test LDAP special characters: *, (, ), \, /, NUL byte — observe errors or behavior changes
Test authentication bypass: username *)(& with password *, or admin)(&(cn=admin / *))
Test wildcard-based user enumeration: *)(cn=*, *)(uid=*, *)(mail=*
Test information extraction: *)(|(cn=*)(userPassword=*, *)(|(objectClass=*)(cn=* to leak attributes
Test blind LDAP injection: inject boolean conditions like *)(cn=admin (positive) vs *)(cn=nonexistent (negative) and compare responses
Test privilege escalation: inject user)(memberOf=CN=Admins,DC=example,DC=com))(|(cn=user into group membership checks
Test encoding bypasses: URL-encode (%2A%29%28%26), Unicode (*), and NULL-byte (*))%00) variants
Test across different LDAP server implementations (OpenLDAP, Active Directory, 389 Directory) for syntax differences
Verify fix with proper LDAP escaping, parameterized queries, or whitelist input validation
MCP TOOLS
Tool
Use Case
http_framework_test
Send crafted HTTP requests with LDAP injection payloads (`*)(
http_repeater
Replay and modify LDAP injection payloads to test authentication bypass, user enumeration, and attribute extraction across different input points
nuclei_scan
Run LDAP-injection-specific Nuclei templates to automate detection of LDAP injection vulnerabilities in authentication and directory lookup endpoints
api_fuzzer
Fuzz API parameters with LDAP injection strings to discover endpoints where user input reaches LDAP query construction
Notes
Only perform in authorized testing environments
Note syntax differences between LDAP server implementations