环境搭建

下载地址:https://gitee.com/MuYuCMS/MuYuCMS

环境:

  • php5.6.9
  • Apache2.4.39
  • MySQL5.7.26

框架分析

先看目录结构:

image-20251025180507891

thinkphp框架,重点放在application

路由分析

进去看url:
image-20251025180829850

1
http://127.0.0.1/admin.php/index/index.html

index对应控制器,index对应操作即方法,不过拼接了html

任意文件删除

第一处:模版管理处

常见的文件删除函数有:

1
2
3
4
unlinkrmdir
unlink
rmdir
delete

这里我们全局搜索delete,定位到application\admin\controller\Template.php文件的tempdel方法:

image-20251025181545483

这里会将http请求的temn和tp参数进行拼接,然后调用delete_dir_file方法进行删除指定目录,跟进delete_dir_file方法:
image-20251025181926539

可以看到该方法会判断传入的路径是否是目录然后遍历删除,从头到尾并没有对传入的参数作任何过滤,所以我们可以利用目录穿越实现任意目录删除

其功能点位于:

image-20251025182439903

创建一个测试文件:
image-20251025182205645

然后抓包修改:

image-20251025182223600

image-20251025182330600

成功删除b1uel0n3目录

第二处:图片管理处

搜索unlink,定位到application\admin\controller\Accessory.php文件的picdel方法:

image-20251025184854606

同样是获取picdelur参数进行拼接且没有过滤,所以同样可以进行任意文件删除:

image-20251025185241156

1
picdelur=/../b1uel0n3.txt

image-20251025185154299

第三处:附件管理处

定位到application\admin\controller\Accessory.php文件的filesdel方法:

image-20251025185400250

逻辑一样的:
image-20251025185443781

任意文件上传

第一处:上传插件处

定位到application\admin\controller\Plug.php文件的addonsup方法

image-20251025185804698

这里会对我们上传的文件进行解压然后放在ADDON_PATH目录下,也就是addon目录下,且没有任何过滤,直接导致任意文件上传从而getshell

image-20251025190002541

直接上传恶意文件的压缩包:

image-20251025190043221

直接访问:

image-20251025190132465

第二处:模板上传处

定位到application\admin\controller\Template.php文件的tempup方法:
image-20251025195617813

逻辑是类似的,一样是将上传的文件进行解压然后放到指定目录,而存在目录为template/home_temp/

功能点在模板上传处:

image-20251025195804480

直接传恶意文件的zip就行了:
image-20251025195926514

SSRF

image-20251025192228307

定位到application\admin\controller\Base.php文件的get_url_content方法:
image-20251025192332301

这里存在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

image-20251025202506929