fastcms是基于SpringBoot前后端分离技术,且具有插件化架构的CMS系统,系统具有高扩展性,易维护性,可以 快速搭建网站,微信小程序,是开发微信营销插件的基石
0x01 任意zip、jar文件删除(路径一)
com.fastcms.web.controller.admin#install()
可以看到先判断后缀是zip还是jar文件 然后使用try,catch语句,报错后直接删除文件,然而这里没有对getOriginalFilename()进行任何过滤。
跟进一下
可以看⻅路由为/fastcms/api/admin/plugin/install
这里先让他报错,得到路径,然后就可以进行任意zip或者jar删除。
创建测试zip
构造payload,发送
可以看到这里删除的路径
放行后,删除成功
0x02 任意zip文件删除(路径二)
com.fastcms.cms.controller.admin#install()
先取文件名后缀,然后判断是否是zip然后安装,安装错误时打印错误,然后删除文件。看一下路由
得到路由/fastcms/api/admin/template/install
先构造不存在的路由,得到web根目录 创建测试zip文件
0x03 任意路径文件写入
可以看到要删除的文件,放行后成功删除
com.fastcms.cms.controller.admin#upload()
这里先对dirname判断是否为空,以及..过滤
这里得到模版路径,跟进
发现是模版路径拼接传入的dirName。
然后这里给到上传filename,没有任何过滤,然后直接进行写入
得到路由fastcms/api/admin/template/files/upload
然后在把模版目录和文件名拼接进行文件写入。放行后,成功写入
所以写入计划任务、ssh公钥等就能shell
原文始发于微信公众号(黑伞安全):Fastcms 代码审计(第一篇)