一款全面的 一体化 Python 概念验证脚本,用于发现并利用特定 Fortinet 设备中的严重认证绕过漏洞(CVE-2024-55591)。该脚本:
nmap 扫描目标主机上的开放端口CVE-2024-55591 是某些 Fortinet 产品(FortiOS 和 FortiProxy)中的一个严重认证绕过漏洞。通过利用 WebSocket/Telnet 管理接口中的缺陷,攻击者可在无需有效凭证的情况下获得特权 CLI 访问权限。
根据 Fortinet PSIRT 公告 (FG-IR-24-535),以下版本已知受影响:
git clone https://github.com/exfil0/CVE-2024-55591-POC.git
cd CVE-2024-55591-POC
python3 attack.py
执行时,脚本会自动检查缺失的 Python 依赖项(requests、urllib3)并尝试安装它们。
您将被提示提供:
确认后,脚本将测试连通性、检查漏洞、将连接升级为 WebSocket,并尝试绕过认证。
启动时,该脚本会检查 requests 和 urllib3。如果缺失,则尝试通过 pip 安装它们。
如果选择,脚本将运行 nmap -sS -p- --min-rate 500 <host> 以发现开放 TCP 端口,然后:
如果发现多个端口开放,您可以指示脚本 测试所有端口。这在 Fortinet 服务监听非标准端口时很有用。
如果利用成功,您可以可选地在同一 Telnet 会话中运行其他命令,例如:
diag sys topdiag debug crashlog readexecute shell您可以在脚本中修改这些利用后命令,以收集更多高级数据。
脚本尝试从 get system status 或 get system info 的输出中解析设备版本。如果匹配已知的受影响版本范围,它会通知您。
192.168.1.50y(是)以发现开放端口yget system statusy 或 n如果 Nmap 发现多个开放端口,您可以选择自动测试 所有 端口或指定一个特定端口。
/login?redir=/ng 是否返回 Fortinet 的管理界面service-worker.js?local_access_token=ScaryBYte 是否包含子串 api/v2/staticget system status 之类的命令如果启用了 利用后 模式,脚本会发送其他调试或系统命令。输出将被收集并显示在控制台中。
此概念验证脚本仅用于 教育和测试 目的。未经明确许可擅自利用系统是违法的。在扫描或测试任何系统之前,请确保您已获得适当的批准,并参考 Fortinet 的公告 (FG-IR-24-535) 获取补丁信息。