环境搭建
- 解压后将文件放在 web 目录下即可访问
漏洞复现
- 首先登录后台,找到模板编辑的地方(设计 -> 高级)插入恶意代码,但保存文件时显示需要存在指定文件时才能进行模板修改
- 找到设置,选择微信设置,在这里添加一个公众号,原始ID填写的内容为需要创建文件的路径加上一个
/0
,即类似于../../../system/tmp/bmet.txt/0
- 这里需要先创建⼀个正常的接⼝,然后再重新创建⼀个⽬录穿越接⼝,否则会报错
- 再回到模板编辑处,插入恶意代码,成功保存文件
- 访问前台页面,成功触发插入的恶意代码
漏洞分析
- 跟进
system/template/default/common/header.html.php
,发现保存编辑时调用了getEffectViewFile
方法
- 全局搜索一下该方法,跟进
system/module/ui/model.php
,发现存在file_exists
函数,这个函数可以使用文件或者文件夹绕过,所以此时只需要找一个地方能够创建文件或者文件夹的就能绕过这里从而写入恶意代码
- 全局搜索
mkdir
关键词找到一个可控可利用的地方,跟进system\module\wechat\model.php
,在这里调用了mkdir
方法来创建一个文件夹,通过这里创建一个模板编辑时需要的文件即可