前言
极致CMS(简称:JIZHICMS)是一款开源的CMS建站系统。
环境
下载地址
-
Github:https://github.com/Cherry-toto/jizhicms
-
码云:https://gitee.com/Cherry_toto/jizhicms
宝塔运维
安装步骤
正常解压到根目录,然后访问即可
目录机构
网页漏洞位置,任意点击一处下载
跟进 ./app/admin/c/PluginsController.php
看update函数
可知参数filepath规定了不允许传入 ".",防止了文件名控制、目录穿越等漏洞
frparam函数判断结果,strpos判断网址大小写。downoad_url参数没做过滤这里我们就可以输入任意外部网址了
定位到
$tmp_path = Cache_Path."/update_".$filepath.".zip"
可知在这里做了拼接,规定了zip后缀,所以如果参数filepath我们可以自己设定,如传入1,文件就保存为update_1.zip。变量Cache_path定义路径,在./frphp/common/config.php里可知道下载的文件会保存到cache目录下
下面switch循环开始,prepare-download里简单做了个缓冲区并确定文件大小
准备压缩文件
prepare-download
来到start-download块,变量remote_url规定download_url远程下载,然后通过变量tmp_path保存在cache目录,这里没做过滤所以download_url值可控
参数filepath只过滤".",所以命名可控。参数download_url值填写事前压缩好的php文件
来到get-file-size块,判断cache目录有无文件及文件大小,变量tmp_path判断前面下载的文件命名,所以参数filepath需与前面的值一样,否则报报错
最后看到file-upzip块,变量filepath再次判断压缩包文件是否存在。变量path事前定义一个路径,通过解压缩函数将前面压缩包解压到定义的./app/admin/exts目录下
总结
一个小0day,若有问题欢迎大佬指正
原文始发于微信公众号(白帽那些事):代码审计类:jizhicms <=2.4.0最新版 RCE
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论