LDAP Injection

Detects LDAP queries constructed from user input without proper escaping, enabling authentication bypass and data exfiltration.

zakirkun 51a8fea 2 files · 3.4 KB Updated

File contents

LDAP Injection

Overview

LDAP injection occurs when user-controlled input is incorporated into LDAP search filters without sanitization. Attackers can:

  • Bypass authentication by injecting *)(uid=*))(|(uid=*
  • Enumerate directory entries
  • Access unauthorized data

Detection Strategy

Look for LDAP filter strings built via string concatenation or format strings containing request parameters.

Remediation

Use LDAP escaping functions to sanitize input before including in filters.

Vulnerable (Java):

String filter = "(&(uid=" + username + ")(userPassword=" + password + "))";
DirContext ctx = new InitialDirContext(env);
ctx.search(baseDN, filter, controls);

Safe (Java):

String filter = "(&(uid={0})(userPassword={1}))";
// Use parameterized search with MessageFormat or escaping
String safeFilter = "(&(uid=" + LdapEncoder.encode(username) + "))";

zakirkun/ice-tea/tree/main/skills/injection/ldap-injection commit 51a8fea3ed

Frequently asked questions

npx skillmds@latest add zakirkun/ldap-injection