Sploitus

Exploit for CVE-2024-21762-Safe-Check

kitploit · 2026-09-04

Exploit Code

MARKDOWN98 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SXMPL3-CVE-2024-21762-SAFE-CHECK
# CVE-2024-21762 - FortiOS SSL VPN 越界写入

## 概述

字段| 值  
---|---  
**CVE**|  CVE-2024-21762  
**安全公告**|  FG-IR-24-015  
**CVSS**|  9.8 (严重)  
**CWE**|  CWE-787 (越界写入)  
**CISA KEV**|  是 - 已在野外被积极利用  
**攻击向量**|  网络 (无需认证)  
**受影响组件**|  sslvpnd (SSL VPN 守护进程)  
  
## 描述

FortiOS SSL VPN 中的越界写入漏洞允许远程未认证的攻击者通过特制的 HTTP 请求执行任意代码或命令。该漏洞存在于 `sslvpnd` 中的 HTTP 分块传输编码解析器内。当守护进程接收到带有 `Transfer-Encoding: chunked` 的 POST 请求时,未能正确验证分块大小,导致堆中的越界写入。

## 受影响版本

## 安全检查方法

该脚本比较服务器对正常 POST 请求与对同一有效端点 (`/remote/logincheck`) 的带有 `Transfer-Encoding: chunked` 的 POST 请求的响应。

  * **正常 POST** 使用 `Content-Length`:服务器处理请求并返回 HTTP 响应 (200 OK)。
  * **分块 POST** 使用 `Transfer-Encoding: chunked`:在存在漏洞的版本上,`sslvpnd` 无法处理分块编码,并关闭连接而不响应 (0 字节)。



这种差异行为确认了该漏洞,而不会触发实际的越界写入。

root@kitploit:~
    
    
    Normal POST  --> HTTP/1.1 200 OK (N bytes)
    Chunked POST --> Connection closed (0 bytes)   <-- VULNERABLE
    
    Normal POST  --> HTTP/1.1 200 OK (N bytes)
    Chunked POST --> HTTP/1.1 200 OK (N bytes)     <-- PATCHED
    

## 使用方法

root@kitploit:~
    
    
    python cve_2024_21762_safecheck.py <host> <port>
    

### 示例

root@kitploit:~
    
    
    $ python cve_2024_21762_safecheck.py 10.0.0.1 8443
    
    [*] Target: 10.0.0.1:8443
    [*] CVE-2024-21762 - Out-of-Bounds Write in sslvpnd (CVSS 9.8)
    [*] Method: Compare normal POST vs chunked POST response
    
    [*] Test 1: Normal POST to /remote/logincheck
        Response: HTTP/1.1 200 OK
        Size: 722 bytes
    
    [*] Test 2: Chunked POST to /remote/logincheck
        Response: empty (connection closed by server)
    
    ============================================================
    [!] VULNERABLE to CVE-2024-21762
        Normal POST works but chunked TE causes connection
        drop -> sslvpnd cannot handle chunked TE
        Severity: CRITICAL (CVSS 9.8)
        CISA KEV: Yes (actively exploited in the wild)
    ============================================================
    

## 可能的结果

结果| 含义  
---|---  
`VULNERABLE`| 正常 POST 有响应,分块 POST 连接断开  
`PATCHED`| 两个请求都收到 HTTP 响应  
`INCONCLUSIVE`| 两个请求均未收到响应(可能存在速率限制,稍后重试)  
  
## 注意事项

  * 此检查**不** 利用漏洞。仅检测 HTTP 解析器中的差异行为。
  * 目标可能在对 `/remote/logincheck` 多次 POST 请求后激活速率限制。如果得到 `INCONCLUSIVE`,请等待几分钟后重试。
  * 某些第三方脚本(例如 BishopFox 检查)使用 `/remote/VULNCHECK` 作为端点。该路径可能不会在所有 FortiGate 版本上返回预期的 403,导致结果不可靠。本脚本使用 `/remote/logincheck`,这是一个已知有效的 SSL VPN 端点。



## 参考

  * Fortinet 安全公告 FG-IR-24-015
  * CISA KEV 条目
  * NVD - CVE-2024-21762