渗透测试步骤

(1)尝试仅输入* 字符作为搜索项。在LDAP中,这个字符是一个通配符,但在SQL中不是。如果返回大量结果,这种情况明显表示攻击针对的是一个LDAP查询。

(2)尝试输入大量的闭括号:

))))))))))

这个输入将结束任何括住输入、以及那些包含主查询过滤器的括号,导致无法匹配的闭括号,因而破坏查询的语法。如果发生错误,应用程序就易于受到LDAP注入。(注意,这种输入也会破坏其他许多类型的应用程序逻辑,因此,如果已经确定所针对的是一个LDAP查询,它只能提供一个明显的指标。)

(3)尝试输入各种旨在干扰不同类型的查询的表达式,并看是否可以通过这些表达式来影响返回的结果。所有LDAP均支持cn属性,如果对所查询的目录一无所知,使用该属性会大有用处。例如:

img280c

9.5.3 防止LDAP注入

如果有必要在一个LDAP查询中插入用户提交的输入,也只提交可实施严格输入确认的简单数据。应根据一份可接受字符“白名单”检查用户输入,其中最好只包括字母数字字符。应阻止任何可能破坏LDAP查询的字符,包括( );,*  | & =和空字节。拒绝任何与白名单不匹配的输入,不要净化。