这是针对LDAP注入的合法保护吗?

这是针对LDAP注入的合法保护吗?,ldap,code-injection,protection,sanitize,Ldap,Code Injection,Protection,Sanitize,我们的软件从用户输入中获取用户名,并将其放入ldap请求中,如下所示: (& () (sAMAccountName=userinput)) 对我来说,这看起来很可疑,但到目前为止,我无法利用丢失的卫生设施来打破它。当我尝试任何特殊角色时,我总是会得到“缺少平等”。可能是com.sun.jndi.ldap.Filter.encodeFilter在处理这个问题吗?使用ldap注入时需要注意的一点是用户输入末尾的通配符(“*”)。对于搜索查询来说,它是一个完全有效的字符,但是如果您需要一个唯

我们的软件从用户输入中获取用户名,并将其放入ldap请求中,如下所示:

(& () (sAMAccountName=userinput))

对我来说,这看起来很可疑,但到目前为止,我无法利用丢失的卫生设施来打破它。当我尝试任何特殊角色时,我总是会得到“缺少平等”。可能是com.sun.jndi.ldap.Filter.encodeFilter在处理这个问题吗?

使用ldap注入时需要注意的一点是用户输入末尾的通配符(“*”)。对于搜索查询来说,它是一个完全有效的字符,但是如果您需要一个唯一的用户名,那么在构建过滤器并将其传递之前,您一定要对其进行清理。正则表达式通常用于此目的

Java的
过滤器
类的代码可以在这里找到:

看起来是
encodeSimpleFilter
函数引发了缺少的“equals”异常

如果要检查传递给AD的最终LDAP筛选器,可以轻松使用WireShark进行未加密连接,或使用此serverfault线程中的信息查看查询:


使用LDAP注入需要注意的一件事是用户输入末尾的通配符(“*”)。对于搜索查询来说,它是一个完全有效的字符,但是如果您需要一个唯一的用户名,那么在构建过滤器并将其传递之前,您一定要对其进行清理。正则表达式通常用于此目的

Java的
过滤器
类的代码可以在这里找到:

看起来是
encodeSimpleFilter
函数引发了缺少的“equals”异常

如果要检查传递给AD的最终LDAP筛选器,可以轻松使用WireShark进行未加密连接,或使用此serverfault线程中的信息查看查询: