这个仓库提供了针对 **CVE-2025-25257** 的生产级检测工程内容,该漏洞是 Fortinet FortiWeb Fabric Connector 7.0 至 7.6.x 版本中存在的一个预认证 SQL 注入漏洞。成功利用该漏洞可在无需任何事先认证的情况下实现远程代码执行。
本仓库提供针对 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 |
| 漏洞类型 | 预认证 SQL 注入,可导致 RCE |
| 攻击向量 | 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 令牌值注入 SQL 语法,以操纵底层查询、绕过认证,并在特定配置下通过基于 SQL 的命令堆叠或文件写入原语实现远程代码执行。
该漏洞可通过网络利用,无需任何凭据。如果日志收集到位,在 HTTP 访问日志中极易检测到。
攻击者向 Fabric Connector API 发送精心构造的 HTTP GET 请求。Authorization 头中的 Bearer 令牌包含注入的 SQL。示例模式:
Authorization: Bearer aaa' OR '1'='1
这会导致后端 SQL 查询评估为真,从而绕过令牌验证。根据数据库配置和权限,进一步利用可能涉及基于 UNION 的注入来读取数据,或使用堆叠查询来写入文件或执行操作系统命令。
以下内容仅用于检测规则验证目的而记录。
GET /api/fabric/device/status HTTP/1.1
Host: <fortiweb-ip>
Authorization: Bearer aaa' OR '1'='1
本仓库中的检测规则经过调优,用于识别 HTTP 日志和网络流量中的此类及类似注入模式。
| ID | 类别 | 检测方法 | 来源 | 覆盖级别 |
|---|---|---|---|---|
| D-01 | Web 请求利用 | Authorization 头中的 SQLi 模式 | Web/代理日志、WAF | 高 |
| D-02 | Web 请求利用 | 对 /api/fabric/device/status 的请求缺少有效令牌 | Web 日志 | 高 |
| D-03 | 进程执行异常 | Web 服务器进程派生的 Shell 进程 | EDR / Sysmon | 高 |
| D-04 | 进程执行异常 | nginx 或 httpd 的 sh、bash、python 子进程 | EDR | 高 |
| D-05 | 可疑文件创建 | 写入 FortiWeb Web 根目录的 Web Shell | 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 规则位于 rules/yara/。
cve_2025_25257_http.yar - 检测 HTTP 日志文件和捕获流量中的利用模式cve_2025_25257_webshell.yar - 检测利用后可能被投放的 Web Shellcve_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 查询位于 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 规则位于 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 及更高版本
一个模拟易受攻击端点的基本 Nginx 反向代理可用于检测测试。基于日志的检测验证不需要实际的 FortiWeb 镜像。
# Pull the test lab container
docker run -d \
--name fortiweb-sim \
-p 8443:443 \
-v $(pwd)/src/lab/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx:alpine
# Send a simulated exploitation request
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
本仓库仅供防御和教育目的使用。所有检测内容旨在帮助安全团队识别和响应利用尝试。请勿将本仓库中的任何内容用于针对您不拥有或未经明确书面许可进行测试的系统。
本项目采用 MIT 许可证授权。详情请参阅 LICENSE。