IPB论坛全称为Invision Power Board(缩写为IPB或IP.Board),是世界上最著名的论坛程序之一,由PHP+MySQL架构,1.X版本是免费的,从2.X开始收费。很多大单位都是其用户比如美国国家航空航天局和超微半导体公司(AMD)等等。
在这个系统中存在interface/ipsconnect/ipconnect.php页面没有正确处理id参数,导致网站会出现sql error。此漏洞会把错误信息写入/cache/sql_error_latest.cgi。通过与此文件的不断交互,可以获得敏感信息。网上已经出现针对此漏洞的PoC代码,该代码用python写成,链接为:http://seclists.org/fulldisclosure/2014/Nov/20。利用此代码时可能需要在源代码中对目标IP地址进行修改
具体攻击过程:
1、获得系统中用户的数量
攻击者发送如下的POST请求,用于获得系统中存在的用户数目。
随后访问sql_error_latest.cgi,系统返回如下的内容,在报错信息中获得系统中存在的用户数量,可知系统中存在一个用户。
2、获得用户的ID攻击者发送如下的POST请求,用于获得用户的ID。
随后访问sql_error_latest.cgi,系统返回如下的内容,在报错信息中获得系统中存在的用户ID,可知用户的ID为1。
3、获得用户的名字攻击者发送如下的POST请求,用于获得用户的名字。
随后访问sql_error_latest.cgi,系统返回如下的内容,在报错信息中获得系统中存在的用户的名字,可知用户名为navyofficer。
4、获得用户的邮箱攻击者发送如下的POST请求,用来获得用户的邮箱。
随后访问sql_error_latest.cgi,系统返回如下的内容,在报错信息中获得系统中存在的用户的邮箱,可知用户的邮箱为[email protected]。
5、获得用户的密码HASH攻击者发送如下的POST请求,用来获得用户的密码HASH。
随后访问sql_error_latest.cgi,系统返回如下的内容,在报错信息中获得系统中存在的用户的密码HASH
这一步分为两步进行,其实之前的步骤在获得敏感信息之前都会先判断结果的长度,如果大于31,则会分多步进行,比如在获得名字之前会先发送如下POST,由于返回结果小于31,直接查询。
获得用户密码HASH的过程中,会先发送如下POST请求:
返回结果表示,密码HASH的长度为38,大于31,因此得到敏感信息的过程分为了两步进行,在返回的结果中需要将两次得到的结果连接起来。
运行攻击代码:
可见攻击代码将系统中存在的用户数量,用户名称,用户邮箱,用户密码HASH都曝了出来。并且和上面对数据包的分析结果完全相同,由此可知攻击成功。此漏洞被曝出的日期为2014年11月9日,第二天厂商Invision Power Services给出了相应的补丁。用户可自行下载补丁进行补救。
还没有评论,来说两句吧...