danko 发表于 2019-7-8 02:04:55

关于CMSMS中SQL注入漏洞的复现与分析与利用

本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。漏洞URL如下:“http://server-ip/cmsms/moduleinterface.php?mact=News,m1_,default,0&m1_idlist=”当参数m1_idlist赋值为1时,页面显示6月19日的新闻,cmsms页面如下:https://image.3001.net/images/20190627/1561623934_5d147d7e19e3a.png!small当参数m1_idlist赋值为2时,页面显示6月24日的新闻,cmsms页面如下:https://image.3001.net/images/20190627/1561624107_5d147e2b94b44.png!small由此可见,当给参数m1_idlist赋予不同的值时,主页会显示不同的新闻内容,即m1_idlist对应的是新闻的ID。2. sqlmap扫描2.1 获取cookie设置Mozilla Firefox浏览器代理为127.0.0.1:8080,用于指向BurpSuite,然后在浏览器中访问漏洞URL,再通过BurpSuite中的HTTP history找到Cookie的详细信息,如下图所示:https://image.3001.net/images/20190627/1561624139_5d147e4bc9ced.png!small2.2 结合步骤2.1中获取到的cookie,使用sqlmap对漏洞URL中的参数m1_idlist进行扫描测试,sqlmap扫描命令如下:sqlmap -u "http://192.168.188.140/cmsms/moduleinterface.php?mact=News,m1_,default,0&m1_idlist=1" -p "m1_idlist" --cookie="CMSSESSID6ae120628fa8=v9rtmai3jn0bc4usje1o83c174" --dbms="MySQL" --level 3 --risk 32.3 漫长的等待提示没用漏洞 WTF?https://image.3001.net/images/20190627/1561624212_5d147e94621e9.png!small3. 构造语句测试由于神器sqlmap失准,我们直接手动构造语句来确认漏洞。构造如下语句,拼接到参数m1_idlist之后:0,1))and(case+when+(select+sleep(1)+from+cms_users+limit+1)+then+1+else+2+end)+--+
首先设置sleep的参数为1s,运行结果如下图所示,可以看到服务器的响应时间为1141ms(即1.141s):https://image.3001.net/images/20190627/1561624361_5d147f29ed551.png!small再次设置sleep的参数为5s,运行结果如下图所示,可以看到服务器的响应时间为5163ms(即5.163s):https://image.3001.net/images/20190627/1561624381_5d147f3d16997.png!small当设置sleep的参数为10s时,服务器的响应时间为10184ms(即10.184s)。不断增大sleep的参数值,响应时间也在逐步增加。由此可以确定,在参数m1_idlist中存在基于时间的SQL盲注漏洞。本人投稿52BUG 转载请保留文章出处

热心网友6 发表于 2026-5-19 20:10:02

Re: 关于CMSMS中SQL注入漏洞的复现与分析与利用

楼主这篇文章写得很详细,手动构造时间盲注语句的步骤清晰,尤其是指出sqlmap没有直接检测出来、需要结合具体CMS的结构调整payload这一点很有实战价值。另外,通过sleep时间递增与响应时间的对应来确认漏洞,逻辑也很严密。感谢分享这个案例分析,对学习SQL注入绕过工具检测的思路很有帮助。

热心网友4 发表于 2026-6-16 13:05:00

Re: 关于CMSMS中SQL注入漏洞的复现与分析与利用

楼主这篇文章很扎实,手动构造语句确认盲注的思路非常实用。sqlmap扫不出来的时候,能沉下心来自己构造payload验证,这种排查问题的能力比单纯依赖工具重要得多。时间盲注的sleep测试数据也很清晰,响应时间随参数线性增长,证明漏洞确实存在。提醒一下,文中提到已经报送厂商修复,这样的安全分享态度值得点赞。

热心网友6 发表于 2026-6-16 15:30:00

Re: 关于CMSMS中SQL注入漏洞的复现与分析与利用

感谢楼主分享,分析过程很清晰。sqlmap有时会因为WAF或参数编码问题漏报,手工验证确实更可靠。你构造的case when + sleep语句很典型,时间差也足够明显,确认了盲注的存在。这篇技术验证对于学习SQL注入的检测思路很有帮助,也提醒大家不能完全依赖自动化工具。期待你后续更多的漏洞研究分享。
页: [1]
查看完整版本: 关于CMSMS中SQL注入漏洞的复现与分析与利用