MuYuCMS 2.7代码审计
环境搭建
下载地址:https://gitee.com/MuYuCMS/MuYuCMS
环境:
- php5.6.9
- Apache2.4.39
- MySQL5.7.26
框架分析
先看目录结构:
thinkphp框架,重点放在application
路由分析
进去看url:
1 | http://127.0.0.1/admin.php/index/index.html |
index对应控制器,index对应操作即方法,不过拼接了html
任意文件删除
第一处:模版管理处
常见的文件删除函数有:
1 | unlinkrmdir |
这里我们全局搜索delete,定位到application\admin\controller\Template.php文件的tempdel方法:
这里会将http请求的temn和tp参数进行拼接,然后调用delete_dir_file方法进行删除指定目录,跟进delete_dir_file方法:
可以看到该方法会判断传入的路径是否是目录然后遍历删除,从头到尾并没有对传入的参数作任何过滤,所以我们可以利用目录穿越实现任意目录删除
其功能点位于:
创建一个测试文件:
然后抓包修改:
成功删除b1uel0n3目录
第二处:图片管理处
搜索unlink,定位到application\admin\controller\Accessory.php文件的picdel方法:
同样是获取picdelur参数进行拼接且没有过滤,所以同样可以进行任意文件删除:
1 | picdelur=/../b1uel0n3.txt |
第三处:附件管理处
定位到application\admin\controller\Accessory.php文件的filesdel方法:
逻辑一样的:
任意文件上传
第一处:上传插件处
定位到application\admin\controller\Plug.php文件的addonsup方法
这里会对我们上传的文件进行解压然后放在ADDON_PATH目录下,也就是addon目录下,且没有任何过滤,直接导致任意文件上传从而getshell
直接上传恶意文件的压缩包:
直接访问:
第二处:模板上传处
定位到application\admin\controller\Template.php文件的tempup方法:
逻辑是类似的,一样是将上传的文件进行解压然后放到指定目录,而存在目录为template/home_temp/
功能点在模板上传处:
直接传恶意文件的zip就行了:
SSRF
定位到application\admin\controller\Base.php文件的get_url_content方法:
这里存在SSRF,逻辑就是获取url参数然后调用file_get_contents方法获取url指定的内容,唯一条件就是要求url是以http开头的,但依然能造成访问内网服务、获取敏感文件资源等危害,直接拼接路由:
1 | http://127.0.0.1/admin.php/Base/get_url_content.html?url=http://127.0.0.1/addons/phpinfo.php |




























