LDAP注入选哪个?别急,我踩过的坑都给你总结好了
说实话,第一次听到“LDAP注入选哪个”这个问题的时候,我整个人是懵的,啥?LDAP不是目录服务协议吗?跟注入能有啥关系?后来做渗透测试项目多了,才发现这玩意儿跟SQL注入一样,都是因为没过滤用户输入惹的祸,今天咱们就唠唠,LDAP注入选哪个工具、选哪个姿势、选哪个防御方案,我把我踩过的坑都给你倒出来。

先搞明白LDAP注入到底是啥玩意儿
你可能用过公司里的员工通讯录,输入名字就能查到工号、邮箱、部门对吧?后端很可能就是LDAP在干活,LDAP的查询语句长这样:(&(uid=zhangsan)(password=123456)),哎,你发现没有?如果用户输入没被过滤,攻击者输入个 或者 )(|(uid=* 这种东西,整个查询逻辑就被篡改了,这就是LDAP注入,跟SQL注入一个道理,只是换了个协议而已。
我第一次遇到的时候,那叫一个手忙脚乱,登录框输入 admin)(|(password=* 直接就进去了,当时我心里那个“卧槽”啊——这玩意儿也太好使了吧?但随之而来的问题是:LDAP注入选哪个测试工具?选哪个payload?选哪个防御方案?我是真的一头雾水。
LDAP注入选哪个工具?我试了一圈
先说工具吧,Burp Suite肯定是首选,这个没得跑,但光有Burp还不够,你需要一个能自动生成LDAP注入payload的插件,我试过几个:
- JNDIExplorer:偏向于JNDI注入,LDAP这块也能用,但不够专一。
- ldap-injection-scanner:GitHub上开源的,功能比较基础,但胜在轻量。
- 手动构造:说实话,很多时候还是得手动,特别是遇到盲注的时候,工具经常抽风。
我的建议是:LDAP注入选哪个?先选Burp + 手动,工具只是辅助,真正理解LDAP的查询语法才是王道。 匹配任意字符, 是或,& 是与, 是非,你把这几样玩熟了,比啥工具都强。
LDAP注入选哪个payload?看场景!
这就要看场景了,如果是登录绕过,经典payload就是:
admin)(&)
*
*)(uid=*))(|(uid=*
我最常用的是 *)(uid=*))(|(uid=*,这玩意儿在不少老系统上一打一个准,但如果是盲注,那就得用时间盲注或者布尔盲注的payload,
*)(|(uid=admin)(description=*
然后根据返回时间或者页面差异来判断,说实话,盲注这块真的考验耐心,我有时候测一上午就为了一个字符,那叫一个酸爽。
LDAP注入选哪个防御方案?这个最重要!
搞了这么多,LDAP注入选哪个防御方案才是最该关心的,我总结了几条:
- 参数化查询:跟SQL注入一样,能用参数化就用参数化,别自己拼接字符串,真的,别偷懒。
- 输入白名单:只允许字母数字,特殊字符一律干掉,别想着黑名单,绕过方法太多了。
- 转义特殊字符:如果非得拼接,那一定要对
&这些字符做转义。 - 最小权限:LDAP查询账号别给太高权限,只读就行,别整什么管理员。
我吃过亏的,有一次客户系统用了拼接,结果被我一发 直接查出了所有员工信息,包括密码哈希,那场面,尴尬得我脚趾抠地。
最后唠叨两句
LDAP注入选哪个?选哪个工具、哪个payload、哪个防御方案,其实核心就一句话:别信用户输入,你只要记住这一点,选啥都不会太离谱。
好了,今天就唠到这,如果你也在搞LDAP注入测试,或者正在纠结 LDAP注入选哪个方案,欢迎来我网站交流,我这人特别喜欢跟同行扯淡,说不定聊着聊着就有新思路了,记得啊,测试可以,别瞎搞,授权第一!