前言该cms算是发展了很多年的了,官网在这里http//www.zzcms.net/about/6.htm 如果想要跟着复现可以自行下载,本次发现的漏洞均已提交CNVD。 sql注入漏洞点是在/ask/search.php的第9行…
前言
该cms算是发展了很多年的了,官网在这里:http://www.zzcms.net/about/6.htm 如果想要跟着复现可以自行下载,本次发现的漏洞均已提交CNVD。
sql注入
漏洞点是在/ask/search.php的第9行:
发现是对ask_search.htm进行读取然后把数据存入$strout中。最后通过一系列过滤操作后会在232行执行showlabel函数:
所以跟进:
这里$str函数是读取的ask_search.htm内容,然后发现在14行中存在fixed函数,所以继续跟进:
发现存在showad函数,但是其中的$cs任然是通过前面的htm文件内容控制,然后继续跟进:
发现对$cs进行分割,然后在660行进行sql的拼接,后面会再进行执行,因为是读取文件的内容,所以该cms对sql的过滤无效,但是由上图代码可知,htm的内容会以逗号分割,所以需要对逗号进行绕过。
漏洞验证
这里我用的数据库数据如下:
先在后台的模板处的网站模板中添加ask_search.htm,然后添加如下:
然后直接访问/ask/search.php,因为数据库是zzcms,所以第一个为z时会延时:
然后换成其它的,则不会延时
代码执行
漏洞点是在/install/index.php的第131行
存在文件的写入。
首先在/install/step_2.php中,该cms没有做是否安装过该CMS的验证的,所以虽然存在install.lock但是却任然可以直接进行安装:
所以我们直接POST传入step=2就可以直接开始进行重新安装的步骤,然后当step=4时,点击下一步后,就能进入step=5了,然后会发现页面会让写这些东西:
然后根据第一张图我们知道,它会把这些填写的数据库信息写入/inc/config.php中,所以我们可以这么考虑,在端口3306后面使用url的锚点,来使数据库可以正常连接,但是却能让我们写入一句话木马。
漏洞验证
在端口3306后面输入#');eval($_POST['a']);('
然后就会写入在/inc/config.php中:
所以直接访问执行命令:
- 本文作者: fthgb
- 本文来源: 奇安信攻防社区
- 原文链接: https://forum.butian.net/share/460
- 版权声明: 除特别声明外,本文各项权利归原文作者和发表平台所有。转载请注明出处!