代码审计之zzzcms_1.6.6

0x00 缓存文件可任意修改导致的Getshell

  1. 在系统后台中,每访问一个module都会生成相应的缓存文件,而下一次访问则会直接加载这个缓存文件,但是由于缓存文件可修改,造成可以注入恶意php代码。
  2. 在/adminxxx/index.php中加载生成的缓存文件
    在这里插入图片描述
  3. 跟踪查看parse_admin_tlp()函数:
    在这里插入图片描述
    其中$tplfile是加载的模块文件的源文件,而$cachefile是缓存文件的路径,这两个路径的位置如下:
    在这里插入图片描述
    在这里插入图片描述
    其中缓存文件的文件名是MD5签名之后的:
    在这里插入图片描述

根据代码的含义,如果这个模块还没有生成缓存文件则先生成缓存文件,如果存在缓存文件直接返回缓存文件路径。

  1. 漏洞利用:
    1、首先任意加载一个模块,让其生成缓存模块:
    在这里插入图片描述
    2、修改缓存模块代码,然后访问,执行恶意php代码达到getshell的目的:
    在这里插入图片描述
    在这里插入图片描述
  2. 修复方案:取消了修改缓存的功能:
    在这里插入图片描述
  3. 参考博文:http://www.iwantacve.cn/index.php/archives/250/

你可能感兴趣的:(代码审计)