看好你的门-攻击数据存储区(6)-LDAP盲注入

来源:互联网 发布:centos安装oracle失败 编辑:程序博客网 时间:2024/04/29 19:11

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考。

部分内容来自网络和翻译

1、一些多余的话

假设攻击者可以从服务器响应中推测出一些信息,虽然应用系统没有提供明显的出错信息。但是LDAP过滤器中的代码却生成了有效的响应或错误。攻击者可以利用这一行为向服务器问正确的或错误的问题。这种攻击称之为盲注入攻击。LDAP的盲注入攻击比较慢但容易实施,因为它们基于二进制逻辑,能让攻击者从LDAP目录提取信息。

2、 LDAP的AND盲注入攻击

假设一个Web应用想从一个LDAP目录列出所有可用的Epson打印机,错误信息不会返回,应用发送如下的过滤器:
(&(objectClass=printer)(type=Epson*))
使用这个查询,如果有可用的Epson打印机,其图标就会显示给客户端,否则没有图标出现。如果攻击者进行LDAP盲注入攻击
)(objectClass=))(&(objectClass=void
Web应用会构造如下查询:
(&(objectClass=)(objectClass=))(&(objectClass=void)(type=Epson*))
仅第一个LDAP过滤器会被处理:
(&(objectClass=)(objectClass=))
结果是,打印机的图标一定会显示到客户端,因为这个查询总是会获得结果:过滤器objectClass=*总是返回一个对象。当图标被显示时响应为真,否则为假。
从这一点来看,使用盲注技术比较容易,例如构造如下的注入:
(&(objectClass=)(objectClass=users))(&(objectClass=foo)(type=Epson))
(&(objectClass=)(objectClass=resources))(&(objectClass=foo)(type=Epson))
这种代码注入的设置允许攻击者推测可能存在于LDAP目录服务中不同对象类的值。当响应Web页面至少包含一个打印机图标时,对象类的值就是存在的,另一方面而言,如果对象类的值不存在或没有对它的访问,就不会有图标出现。
LDAP盲注技术让攻击者使用基于TRUE/FALSE的技术访问所有的信息。

3、 LDAP的OR盲注入攻击

这种情况下,用于推测想要的信息的逻辑与AND是相反的,因为使用的是OR逻辑操作符。接下来使用的是同一个例子,OR环境的注入为:
(|(objectClass=void)(objectClass=void))(&(objectClass=void)(type=Epson*))
这个LDAP查询没有从LDAP目录服务获得任何对象,打印机的图标也不会显示给客户端(FALSE)。如果在响应的Web页面中有任何图标,则响应为TRUE。故攻击者可以注入下列LDAP过滤器来收集信息:
(|(objectClass=void)(objectClass=users))(&(objectClass=void)(type=Epson*))
(|(objectClass=void)(objectClass=resources))(&(objectClass=void)(type=Epson*))

0 0
原创粉丝点击