漏洞来源
[代码审计]ZZCMS v8.2 前台注入,任意文件删除至getshell
作者是水泡泡,我只是写了一个利用工具,并且发现了两处彩蛋
工具编写思路
要考虑的难点
- (1) 由于是通过重装cms导致的GETSHELL,最重要的是:怎么才能尽可能小的缩小动静
解决方法: 不重写MYSQL的库,在安装的时候选择其他的库名,防止网站原来的内容丢失。
这里不要填写的和网站原来的数据库名相同,防止文件覆盖,导致网站无法运行(MYSQL 的数据以文件形式存放,一会儿还可以用来还原网站)
- (2) 水泡泡师傅提供了一个SQL注入点,可以用来注入出MYSQL用户的密码,但是密码无法解密怎么办?
解决方法:提供远程接口,可以在使用远程数据库来进行安装
工具流程图
成品展示
参数说明:
python3 main.py -u URL # 检测漏洞
python3 main.py -u URL --info # 注入数据
python3 main.py -u URL -H host -U MySQL_user -P MySQL_pass
网站还原
将这些信息按照注入出的还原回去即可。
代码下载:
在编写程序的时候发现的越权
越过/install/intall.lock重装:
在代码中只有setp_1检测了/install/install.lock是否存在,而其他的地方没有检测
重装CMS 需要用到第三步,拿到一个token , 然后第五步包括token和数据库信息进行安装。
第三步如下:
第五步如下:
然后第六步是生成/install/install.lock 如果没删就可以跳过,删了的话补充上这一步即可
第二处越权,无需token直接安装,看代码:
这是set_5.php中的,看到这里做了个验证,如果token不正确,那就退出
但是回到index.php中看:
包含set_5.php在对文件操作之后,所以说,无论set_5.php中的内容是怎样的,在执行其中代码之前就已经把恶意代码写入到inc/config.php中了