常见漏洞验证121 条

LDAP 注入检查

LDAP 查询过滤器拼接用户输入时可改变查询语义;检查登录、通讯录、组织架构等由目录服务支撑的功能。

LDAP 注入是什么

LDAP 注入发生在把用户输入直接拼接进 LDAP 过滤器时:输入中的括号、通配符与转义字符会改变过滤条件的逻辑结构,使结果集异常扩大,甚至让认证判断失效。受影响的功能通常是目录服务支撑的登录、通讯录检索、组织架构同步与自助改密;MySQL 里的注入思路在这里换成了过滤器语法,原理一致。

基本信息

适用平台AD / OpenLDAP 等目录服务支撑的应用(Java、PHP、Python 均有)
注入入口用户名、搜索关键字、部门与岗位等筛选参数
观察信号结果集异常扩大、过滤器解析报错、响应时间变化
参考标准OWASP WSTG-INPV-06、CWE-90

典型使用场景

  • 统一身份登录改造后的注入面核查
  • 通讯录与员工检索功能的输入处理审计
  • AD 自助改密、账号绑定等目录写操作前的校验评估
  • 第三方系统通过 LDAP 对接时的边界检查
  • 代码审计中定位过滤器字符串拼接的写法

验证步骤(测试账号)

验证步骤(测试账号)
1. 定位使用 LDAP 的功能:统一登录、通讯录检索、自动补全
2. 提交包含目录服务元字符的取值(括号、通配符、转义字符的编码形式),观察结果集是否扩大或报错
3. 同时发一次正常请求做对照,确认差异方向与可重复性
4. 记录参数名、请求时间、现象与影响面,并把准确取值写入内部记录而不是报告正文

现象与判据

现象可能的含义后续验证
返回结果集明显扩大过滤器逻辑被输入改写用对照请求确认可重复
过滤器语法报错输入未转义直接拼接检查报错是否回显给用户
任意口令通过验证认证判断被绕过用测试账号复现并立即通报
响应时间显著变长目录查询被放大限次复现,避免影响服务
修复视角:使用语言或框架自带的过滤器转义函数(如 Java 的 JNDI 转义、PHP 的 ldap_escape),并优先用参数化的查询构造方式,而不是手工拼接字符串。
目录服务是认证中枢:在登录接口上的注入验证可能触发账号锁定与告警。只在测试账号与测试环境进行,高风险现象确认后立即通报客户。

易错点

  • 把正常的空结果当成注入失败,结论方向相反,需要始终保留对照请求
  • 只测登录字段,漏掉检索、自动补全、部门筛选这些同样拼接过滤器的入口
  • 在真实账号上做越权式验证触发锁定,影响他人登录
  • 忽略报错回显:语法错误页面暴露服务端实现细节,这一项通常单独作为问题记录
  • 只做动态验证不做代码走查,无法确认修复是否覆盖全部拼接点

数据来源与参考

  • OWASP WSTG WSTG-INPV-06
  • CWE-90(LDAP Injection)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌