代码审计类:jizhicms <=2.4.0最新版 RCE

admin 2022年10月29日19:02:41评论168 views字数 961阅读3分12秒阅读模式

前言

极致CMS(简称:JIZHICMS)是一款开源的CMS建站系统。

环境

下载地址

  • Github:https://github.com/Cherry-toto/jizhicms

  • 码云:https://gitee.com/Cherry_toto/jizhicms

宝塔运维

代码审计类:jizhicms <=2.4.0最新版 RCE

安装步骤

正常解压到根目录,然后访问即可

目录机构

代码审计类:jizhicms <=2.4.0最新版 RCE

代码审计类:jizhicms <=2.4.0最新版 RCE

网页漏洞位置,任意点击一处下载

代码审计类:jizhicms <=2.4.0最新版 RCE

跟进 ./app/admin/c/PluginsController.php

看update函数

代码审计类:jizhicms <=2.4.0最新版 RCE

可知参数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目录下

代码审计类:jizhicms <=2.4.0最新版 RCE

下面switch循环开始,prepare-download里简单做了个缓冲区并确定文件大小

准备压缩文件

代码审计类:jizhicms <=2.4.0最新版 RCE

代码审计类:jizhicms <=2.4.0最新版 RCE

prepare-download

代码审计类:jizhicms <=2.4.0最新版 RCE

来到start-download块,变量remote_url规定download_url远程下载,然后通过变量tmp_path保存在cache目录,这里没做过滤所以download_url值可控

代码审计类:jizhicms <=2.4.0最新版 RCE

参数filepath只过滤".",所以命名可控。参数download_url值填写事前压缩好的php文件

代码审计类:jizhicms <=2.4.0最新版 RCE

代码审计类:jizhicms <=2.4.0最新版 RCE


代码审计类:jizhicms <=2.4.0最新版 RCE

来到get-file-size块,判断cache目录有无文件及文件大小,变量tmp_path判断前面下载的文件命名,所以参数filepath需与前面的值一样,否则报报错

代码审计类:jizhicms <=2.4.0最新版 RCE

代码审计类:jizhicms <=2.4.0最新版 RCE

代码审计类:jizhicms <=2.4.0最新版 RCE


最后看到file-upzip块,变量filepath再次判断压缩包文件是否存在。变量path事前定义一个路径,通过解压缩函数将前面压缩包解压到定义的./app/admin/exts目录下

代码审计类:jizhicms <=2.4.0最新版 RCE

代码审计类:jizhicms <=2.4.0最新版 RCE

代码审计类:jizhicms <=2.4.0最新版 RCE

代码审计类:jizhicms <=2.4.0最新版 RCE

代码审计类:jizhicms <=2.4.0最新版 RCE


总结

一个小0day,若有问题欢迎大佬指正


原文始发于微信公众号(白帽那些事):代码审计类:jizhicms <=2.4.0最新版 RCE

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月29日19:02:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   代码审计类:jizhicms <=2.4.0最新版 RCEhttp://cn-sec.com/archives/1358817.html

发表评论

匿名网友 填写信息