CVE-2024-55591 - Fortinet FortiOS 身份验证绕过
一个用 Go 编写的教育性实现,用于演示 CVE-2024-55591 的技术机制,这是一个影响 Fortinet FortiOS 的身份验证绕过漏洞。本仓库严格用于安全研究、防御分析和授权渗透测试。
工作原理
该工具围绕两个主要阶段(目标验证与利用)构建,与漏洞工作流程相对应:
阶段 1:目标验证与检测
- 管理接口探测: 向
/login?redir=/ng 发送 HTTP/HTTPS GET 请求,并检查响应体中是否存在 FortiOS 特征(FortiOS、FortiGate、class="main-app" 等)。
- 漏洞检查: 查询
/service-worker.js?local_access_token=<token>,以验证目标端点是否暴露内部应用路由(api/v2/static),从而确认漏洞状态。
阶段 2:利用与命令执行
- WebSocket 升级: 使用自定义 HTTP 升级请求连接到目标 CLI 管理 WebSocket 端点(
/ws/cli/open),提供所需的本地访问令牌并处理 WebSocket 握手帧。
- 身份验证绕过: 通过已建立的 WebSocket 通道注入包含管理用户上下文和令牌的精心构造的身份验证帧。反复轮询该通道,直到有效响应确认会话成功建立。
- 命令执行: 通过已认证的 WebSocket 连接发送格式化后的 CLI 载荷,并将实时标准输出流式传输回终端。
功能特性
- 健壮的协议处理: 支持 HTTP 和 HTTPS,并提供自动回退选项。
- 灵活的 TLS 配置: 允许自定义 TLS 版本选择(
auto、1.0、1.1、1.2、1.3),并支持测试环境下的不安全证书验证。
- WebSocket 帧构造: 手动实现 WebSocket 帧生成(包括掩码密钥和载荷长度计算),不依赖外部第三方 Gorilla WebSocket 包。
- 可配置参数: 支持自定义超时、重试次数和详细输出标志。