ZZCMS v8.2 重装GETSHELL工具

漏洞来源

[代码审计]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

网站还原

将这些信息按照注入出的还原回去即可。

代码下载:

ZZCMS_V8.2_GETSHELL

在编写程序的时候发现的越权

越过/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中了