GarethMSheldon/Fortinet-FortiWeb-Fabric-Connector-CVE-2025-25257-Detection
GitHub: GarethMSheldon/Fortinet-FortiWeb-Fabric-Connector-CVE-2025-25257-Detection
针对 Fortinet FortiWeb CVE-2025-25257 预认证 SQL 注入漏洞的生产级检测规则集,覆盖从漏洞利用到后渗透行为的全链路监测能力。
Stars: 0 | Forks: 0
# CVE-2025-25257 检测工程仓库







## 概述
本仓库为 **CVE-2025-25257** 提供生产可用的检测工程内容,这是 Fortinet FortiWeb Fabric Connector 7.0 至 7.6.x 版本中的一个预认证 SQL 注入漏洞。成功利用该漏洞可在无需任何事先认证的情况下导致远程代码执行 (RCE)。
此内容仅用于**防御目的**。其范围涵盖安全运营中心 (SOC) 团队、检测工程师和威胁猎手。不包含任何武器化的漏洞利用代码。
## 漏洞摘要
| 字段 | 详情 |
|---|---|
| CVE | CVE-2025-25257 |
| EDB-ID | 52473 |
| 产品 | Fortinet FortiWeb |
| 受影响版本 | 7.0.x 至 7.6.x |
| 漏洞类型 | 导致 RCE 的预认证 SQL 注入 |
| 攻击向量 | HTTP API 端点 (未认证) |
| 认证要求 | 无 |
| CVSS 评分 | 9.8 (严重) |
| 补丁可用 | 是,升级至 7.6.1 或更高版本 |
| 发布日期 | 2026-02-04 |
| 研究者 | Milad Karimi (Ex3ptionaL) |
## 漏洞描述
CVE-2025-25257 影响 FortiWeb 中的 Fabric Connector API 端点 `/api/fabric/device/status`。`Authorization` 标头被直接传入 SQL 查询而未经过净化。未经认证的攻击者可以在 Bearer token 值中注入 SQL 语法,以操纵底层查询、绕过认证,并在某些配置下通过基于 SQL 的命令堆叠或文件写入原语实现远程代码执行。
该漏洞可通过网络利用,无需凭据。如果已部署日志收集,则在 HTTP 访问日志中很容易检测到。
## 漏洞利用方法
攻击者向 Fabric Connector API 发送精心构造的 HTTP GET 请求。`Authorization` 标头中的 Bearer token 包含注入的 SQL。示例模式:
```
Authorization: Bearer aaa' OR '1'='1
```
这会导致后端 SQL 查询评估为真,从而绕过 token 验证。进一步的利用可能涉及基于 UNION 的注入以读取数据,或堆叠查询以写入文件或执行操作系统命令,具体取决于数据库配置和权限。
## 示例 PoC 载荷 (仅供参考)
以下内容仅用于检测规则验证目的。
```
GET /api/fabric/device/status HTTP/1.1
Host:
Authorization: Bearer aaa' OR '1'='1
```
本仓库中的检测规则经过调整,可识别 HTTP 日志和网络流量中的此模式及类似注入模式。
## 检测覆盖范围表
| ID | 类别 | 检测方法 | 来源 | 覆盖级别 |
|---|---|---|---|---|
| D-01 | Web 请求利用 | Authorization 标头中的 SQLi 模式 | Web/Proxy 日志, WAF | 高 |
| D-02 | Web 请求利用 | 对 `/api/fabric/device/status` 的无有效 token 请求 | Web 日志 | 高 |
| D-03 | 进程执行异常 | Web 服务器进程生成的 Shell 进程 | EDR / Sysmon | 高 |
| D-04 | 进程执行异常 | `sh`, `bash`, `python` 作为 nginx 或 httpd 的子进程 | EDR | 高 |
| D-05 | 可疑文件创建 | Web shell 被写入 FortiWeb web 根目录 | EDR / 文件完整性 | 中 |
| D-06 | 可疑文件创建 | web 目录中意外的 `.php`, `.jsp`, `.py` 文件 | 文件监控 | 中 |
| D-07 | 持久化机制 | 利用后的 Cron 作业修改 | EDR / Auditd | 中 |
| D-08 | 持久化机制 | SQLi 后通过 API 创建的新管理员帐户 | API / 认证日志 | 高 |
| D-09 | 容器活动 | FortiWeb 容器命名空间中的异常进程 | 容器运行时 | 中 |
| D-10 | 威胁猎杀 | Fabric Connector API 调用率的基线偏差 | SIEM / 分析 | 中 |
| D-11 | 威胁猎杀 | 源 IP 对 `/api/fabric/` 产生重复的 200/403 模式 | Web 日志 | 高 |
| D-12 | 配置篡改 | Web 请求后对 FortiWeb 配置文件的更改 | 文件完整性 / EDR | 高 |
| D-13 | 配置篡改 | 设备上对 `/data/` 或 `/etc/` 的意外写入 | Auditd / EDR | 中 |
## YARA 规则
YARA 规则位于 `rules/yara/`。
### 文件
- `cve_2025_25257_http.yar` - 检测 HTTP 日志文件和捕获流量中的利用模式
- `cve_2025_25257_webshell.yar` - 检测可能被利用后植入的 web shell
- `cve_2025_25257_payload.yar` - 检测磁盘上的原始载荷工件
### 用法
扫描 HTTP 访问日志:
```
yara -r rules/yara/cve_2025_25257_http.yar /var/log/fortiweb/
```
扫描 web 根目录以查找植入文件:
```
yara -r rules/yara/cve_2025_25257_webshell.yar /var/www/html/
```
扫描捕获的 PCAP:
```
yara rules/yara/cve_2025_25257_http.yar capture.pcap
```
针对目录递归运行所有规则:
```
yara -r rules/yara/ /path/to/scan/
```
## KQL 查询
KQL 查询位于 `rules/kql/`。每个文件针对特定的检测类别。
| 文件 | 描述 |
|---|---|
| `01_web_exploitation.kql` | Authorization 标头中的 SQL 注入模式 |
| `02_process_spawn.kql` | 来自 Web 服务器的异常子进程 |
| `03_command_execution.kql` | 可疑的命令执行链 |
| `04_file_creation.kql` | web 目录中的意外文件写入 |
| `05_persistence.kql` | 持久化机制指标 |
| `06_config_modification.kql` | 配置文件篡改 |
| `07_threat_hunting.kql` | 高级威胁猎杀查询 |
## Sigma 规则
Sigma 规则位于 `rules/sigma/`。可以使用 `sigma-cli` 或 `pySigma` 将其转换为任何 SIEM 格式。
转换为 Splunk SPL:
```
sigma convert -t splunk rules/sigma/cve_2025_25257_sqli.yml
```
转换为 Elastic EQL:
```
sigma convert -t elasticsearch rules/sigma/cve_2025_25257_sqli.yml
```
## 测试说明
### 验证受影响版本
在 FortiWeb 设备 CLI 上:
```
get system status | grep Version
```
受影响:`7.0.x` 至 `7.6.0`
已修补:`7.6.1` 及更高版本
### Docker 实验环境搭建
可以使用基本的 Nginx 反向代理模拟易受攻击的端点进行检测测试。基于日志的检测验证不需要实际的 FortiWeb 镜像。
```
# 拉取 test lab 容器
docker run -d \
--name fortiweb-sim \
-p 8443:443 \
-v $(pwd)/src/lab/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx:alpine
# 发送模拟 exploitation 请求
curl -k -H "Authorization: Bearer aaa' OR '1'='1" \
https://localhost:8443/api/fabric/device/status
```
这将生成一条与 D-01 中的检测模式匹配的访问日志条目。
### 验证检测触发
发送测试请求后,检查模拟日志输出:
```
docker logs fortiweb-sim | grep "fabric/device/status"
```
预期日志条目模式:
```
"GET /api/fabric/device/status HTTP/1.1" 401 - "Bearer aaa' OR '1'='1"
```
针对日志运行 YARA 规则:
```
yara rules/yara/cve_2025_25257_http.yar /var/log/nginx/access.log
```
预期输出:
```
CVE_2025_25257_SQLi_AuthHeader /var/log/nginx/access.log
```
## 仓库结构
```
cve-2025-25257-detection/
├── README.md
├── LICENSE
├── .gitignore
├── rules/
│ ├── yara/
│ │ ├── cve_2025_25257_http.yar
│ │ ├── cve_2025_25257_webshell.yar
│ │ └── cve_2025_25257_payload.yar
│ ├── kql/
│ │ ├── 01_web_exploitation.kql
│ │ ├── 02_process_spawn.kql
│ │ ├── 03_command_execution.kql
│ │ ├── 04_file_creation.kql
│ │ ├── 05_persistence.kql
│ │ ├── 06_config_modification.kql
│ │ └── 07_threat_hunting.kql
│ ├── sigma/
│ │ ├── cve_2025_25257_sqli.yml
│ │ └── cve_2025_25257_process_spawn.yml
│ └── splunk/
│ ├── web_exploitation.spl
│ └── process_anomaly.spl
├── docs/
│ ├── iocs.md
│ ├── mitre_attack.md
│ └── false_positive_analysis.md
├── src/
│ ├── poc.py
│ └── lab/
│ └── nginx.conf
└── sysmon/
└── sysmon_config_snippet.xml
```
## 参考
- [FortiWeb Security Advisory FG-IR-25-007](https://www.fortiguard.com/psirt)
- [ExploitDB Entry 52473](https://www.exploit-db.com/exploits/52473)
- [MITRE ATT&CK T1190 - Exploit Public-Facing Application](https://attack.mitre.org/techniques/T1190/)
- [OWASP SQL Injection](https://owasp.org/www-community/attacks/SQL_Injection)
- [Fortinet PSIRT Advisory Portal](https://www.fortiguard.com/psirt)
## 致谢
- **漏洞发现与 PoC**: Milad Karimi (Ex3ptionaL), miladgrayhat@gmail.com
- **检测工程**: 本仓库
- **MITRE ATT&CK 框架**: MITRE Corporation
## 免责声明
本仓库仅用于**防御和教育目的**。所有检测内容旨在帮助安全团队识别和响应利用企图。请勿将本仓库中的任何内容用于您不拥有或未获得明确书面许可进行测试的系统。
## 许可证
本项目采用 MIT 许可证授权。有关详细信息,请参阅 [LICENSE](LICENSE)。
标签:CISA项目, CVE-2025-25257, CVSS 9.8, EDR规则, Fabric Connector, Fortinet, FortiWeb, PFX证书, RCE, SIEM规则, Web安全, x64dbg, 攻击检测, 编程工具, 网络安全, 蓝队分析, 请求拦截, 远程代码执行, 逆向工具, 隐私保护, 预认证漏洞, 高危漏洞