从一次漏洞挖掘入门Ldap注入
字数 1520 2025-08-26 22:11:34
LDAP注入漏洞挖掘与利用详解
1. LDAP基础概念
1.1 什么是LDAP
LDAP(Lightweight Directory Access Protocol)即轻量级目录访问协议,是一种运行于TCP/IP之上的在线目录访问协议,主要用于目录中资源的搜索和查询。最广泛使用的LDAP服务包括:
- 微软的ADAM(Active Directory Application Mode)
- OpenLDAP
1.2 LDAP数据存储结构
与MySQL等关系型数据库不同,LDAP采用树形结构存储数据:
- dn(Distinguished Name):一条记录的位置
- dc(Domain Component):一条记录所属的区域
- ou(Organizational Unit):一条记录所属的组织
- cn/uid(Common Name/User ID):一条记录的名字/ID
1.3 LDAP核心组件
- 条目(Entry):目录中存储的基本信息单元,包含若干属性和值,可包含子条目
- 对象类(ObjectClass):
- 封装了可选/必选属性
- 支持继承关系
- 严格的等级之分(顶层是top和alias)
- 属性(Attribute):存储字段值,每个属性分配唯一的OID号码
2. LDAP查询语法
2.1 基本查询结构
一个圆括号内的判断语句称为过滤器(filter):
("&" or "|" (filter1) (filter2) (filter3))
2.2 逻辑操作符
-
逻辑与(&):
(&(username=Hpdoger)(password=ikun))查找username为Hpdoger且password为ikun的所有条目
-
逻辑或(|):
(|(username=Hpdoger)(displayname=Hpdoger))查找username或displayname为Hpdoger的所有条目
2.3 特殊符号
(&):绝对真(Absolute TRUE)(|):绝对假(Absolute FALSE)*:通配符
注意:LDAP的DN和所有属性默认不区分大小写。
3. LDAP注入原理
3.1 无逻辑操作符的注入
场景:
(attribute=$input)
构造输入:
$input=value)(injected_filter
完整查询语句:
(attribute=value)(injected_filter)
影响:
- OpenLDAP:忽略第二个过滤器
- ADAM:不允许有两个过滤器的查询
利用方法:
使用通配符判断字段是否存在某值:
$input=x*
3.2 带有逻辑操作符的注入
场景1:
(|(attribute=$input)(second_filter))
场景2:
(&(attribute=$input)(second_filter))
构造输入:
value)(injected_filter)
变形后的过滤器:
(&(attribute=value)(injected_filter))(second_filter)
实际案例(万能密码):
原始查询:
(&(USER=$username)(PASSWORD=$pwd))
注入输入:
$username = admin)(&)(
变形后的查询:
(&(USER=admin)(&))((PASSWORD=$pwd))
4. 实战案例分析
4.1 漏洞发现
- 发现SSO系统登录点存在不同回显
- 通过
!字符测试确认布尔型注入点 - 确认是LDAP注入漏洞
4.2 信息收集
-
确定objectclass:
username=admin)(objectclass%3d$str发现存在
person和user两个objectclass -
枚举属性:
username=admin)($str%3d* -
继承链分析:
top -> person -> organizationalperson -> user
4.3 数据盲注
-
盲注手机号:
username=admin)(mobile=%s*&password=123通过通配符逐步添加数字猜测
-
盲注用户名:
- 使用笛卡尔积方法生成用户名组合
- 通过通配符测试存在性
5. 防御措施
-
输入验证:
- 过滤特殊字符(
( ) | & *等) - 使用白名单验证输入格式
- 过滤特殊字符(
-
权限控制:
- 限制LDAP查询账户的权限
- 禁止匿名查询
-
编码处理:
- 对用户输入进行LDAP编码
-
使用预编译语句:
- 类似SQL的预编译方式处理LDAP查询
6. 扩展知识
-
LDAP注入类型:
- AND注入
- OR注入
- 盲注
-
历史漏洞参考:
- Joomla! LDAP注入导致登录认证绕过漏洞
- 其他Web应用中的LDAP实现漏洞
-
工具推荐:
- LDAP查询工具(如Apache Directory Studio)
- 模糊测试工具(如Burp Suite)
通过深入理解LDAP协议和查询机制,结合实际的注入案例,安全研究人员可以有效地发现和利用LDAP注入漏洞,同时也为开发人员提供了加固系统的思路。