Drupal 7.31 SQL注入漏洞(CVE-2014-3704)

最近频繁爆发各种0day,真是把大家累坏了。Drupal 7.31 SQL注入漏洞(CVE-2014-3704)就是其中一个,该漏洞利用测试方法“简单粗暴”,受到安全研究者们的青睐。
Drupal Sql注入漏洞原理是酱紫的,Drupal在处理IN语句的时候,要通过expandArguments函数来展开数组。由于expandArguments函数没有对当前数组中key值进行有效的过滤,给攻击者可乘之机。攻击者通过精心构造的SQL语句可以执行任意PHP代码。
expandArguments函数如下

该函数假定它被调用时是没有key的。例如:

执行的SQL语句为:

通过参数传入name_0= user1,name_1=user2。

那么问题来了,如果带入数组当中有key并且不是整数呢。例如:

执行SQL语句为:

参数:name_test=user2。

由于Drupal使用PDO,因此可以多语句查询。所以这个SQL注入向数据库里插入任意数据,下载或者修改存在的数据,甚至drop掉整个数据库。
POC
有人在pastebin上放出了把原来id为1的管理,替换成名字为owned,密码是thanks的管理员。

攻击者可以通过向数据库里插入任意的数据,利用Drupal的特性执行PHP代码。
为了方便大家测试直接上干货(EXP含有攻击性,仅供安全研究和教学,禁止非法使用)

测试效果如图

原文链接:,转发请注明来源!

发表评论

要发表评论,您必须先登录