Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-35616-check — 非破坏性扫描器,用于检测 CVE-2026-35616,即 FortiClient EMS 中的预认证 API 绕过漏洞。通过比较带与不带伪造 SSL 头的 HTTP 响应来检测漏洞,仅使用 Python 标准库。 | Kitploit
工具/GitHubGitHub/bishopfox/cve-2026-35616-check
漏洞分析漏洞利用Web应用程序漏洞利用API安全测试渗透测试身份验证
GitHubbishopfox/cve-2026-35616-check

CVE-2026-35616-check

非破坏性扫描器,用于检测 CVE-2026-35616,即 FortiClient EMS 中的预认证 API 绕过漏洞。通过比较带与不带伪造 SSL 头的 HTTP 响应来检测漏洞,仅使用 Python 标准库。

查看仓库
275个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-35616 漏洞评估工具

安全地检测 FortiClient EMS 服务器是否存在 CVE-2026-35616 漏洞,且不会造成任何中断。请参阅 Bishop Fox 博客上的完整技术分析。

描述

CVE-2026-35616 是 FortiClient EMS 7.4.5 和 7.4.6 中的一个预认证 API 绕过漏洞,允许远程未认证攻击者通过 HTTP 头欺骗绕过基于证书的认证。Django 应用将用户可控的 HTTP 头(X-SSL-CLIENT-VERIFY、X-SSL-CLIENT-CERT)视为与 Apache mod_ssl WSGI 环境变量等效,而 Apache 配置从未剥离这些头。结合仅执行可分辨名称(Distinguished Name)字符串匹配(不进行加密签名验证)的证书链验证,攻击者可以伪造证书并获得已认证的 API 访问权限。Fortinet 已确认该漏洞已在野外遭到利用。

该工具通过以下方式进行非破坏性漏洞测试:

  1. 向 /api/v1/fabric_device_auth/fortigate/init 发送不带伪造头的基础 POST 请求
  2. 发送相同的 POST 请求,但带有 X-SSL-CLIENT-VERIFY: SUCCESS 且不包含证书数据
  3. 比较两个响应,以确定该头是否到达了 Django

发送带有 verify 头但不含证书 PEM 数据的请求会触发检测路径,但由于未提供证书链而无法完成认证。服务器保持稳定,可以继续处理连接。

  • 存在漏洞的服务器 将返回不同的响应:基础请求返回 HTTP 401("Certificate not found in request header"),而伪造请求返回 HTTP 500(服务器错误),因为 contains_certificate() 通过了检查,但 validate_cert_chain() 因缺少 PEM 数据而崩溃。
  • 已修补的服务器 将对两个请求返回相同的 HTTP 401 响应,因为热修复添加了 Apache RequestHeader unset 指令,会在伪造头到达 Django 之前将其剥离。
  • 非 EMS 服务器 将无法访问该端点,此时工具会报告 INCONCLUSIVE 结果。
  • 安装

    root@kitploit:~
    git clone https://github.com/BishopFox/CVE-2026-35616-check
    cd CVE-2026-35616-check
    

    无需外部依赖。扫描器仅使用 Python 标准库模块。

    用法

    测试位于 <TARGET>:<PORT> 的 FortiClient EMS 服务器。默认端口为 443/TCP。

    root@kitploit:~
    python3 CVE-2026-35616-check.py <TARGET> [PORT]
    

    示例:存在漏洞的服务器

    root@kitploit:~
    $ python3 CVE-2026-35616-check.py 192.168.1.1
    ======================================================================
    FortiClient EMS CVE-2026-35616 Vulnerability Scanner
    Non-Destructive Detection
    ======================================================================
    
    [*] Target: 192.168.1.1:443
    [*] Testing for CVE-2026-35616 (non-destructive)
    
    [1] Sending baseline POST (no spoof headers)... HTTP 401
    [2] Sending POST with X-SSL-CLIENT-VERIFY: SUCCESS... HTTP 500
    
    [*] Analyzing responses...
    [+] Baseline: 401 — Certificate not found in request header.
    [+] Spoofed:  500 — Server encountered an error, please try again later.
    [!] Spoofed header changed server behavior
    [!] X-SSL-CLIENT-VERIFY is reaching Django (hotfix not applied)
    
    ======================================================================
    RESULT: VULNERABLE to CVE-2026-35616
    Affected versions: FortiClient EMS 7.4.5 - 7.4.6
    Recommendation: Apply Fortinet hotfix or upgrade to 7.4.7+
    ======================================================================
    

    示例:已修补的服务器

    root@kitploit:~
    $ python3 CVE-2026-35616-check.py 192.168.1.1
    ======================================================================
    FortiClient EMS CVE-2026-35616 Vulnerability Scanner
    Non-Destructive Detection
    ======================================================================
    
    [*] Target: 192.168.1.1:443
    [*] Testing for CVE-2026-35616 (non-destructive)
    
    [1] Sending baseline POST (no spoof headers)... HTTP 401
    [2] Sending POST with X-SSL-CLIENT-VERIFY: SUCCESS... HTTP 401
    
    [*] Analyzing responses...
    [+] Baseline: 401 — Certificate not found in request header.
    [+] Spoofed:  401 — Certificate not found in request header.
    [-] Responses identical (header stripped by Apache)
    
    ======================================================================
    RESULT: NOT VULNERABLE (hotfix applied)
    Apache is stripping X-SSL-CLIENT-VERIFY before it reaches Django
    ======================================================================
    

    前提条件

    只有满足以下条件时,该工具才能检测到该漏洞:

    • 目标正在运行 FortiClient EMS 7.4.5 或 7.4.6
    • EMS Web 界面可访问
    • /api/v1/fabric_device_auth/fortigate/init 端点存在并使用 cert_chain_approved 认证

    如果任何条件不满足,工具将报告 INCONCLUSIVE 结果。

    许可证

    本代码根据 MIT 许可证 分发。

    法律免责声明

    在未事先获得双方同意的情况下,使用本工具攻击目标属于违法行为。遵守所有适用的地方、州和联邦法律是最终用户的责任。开发者不承担任何责任,也不对本程序造成的任何滥用或损害负责。

    另请参阅

    • Fortinet 安全公告 FG-IR-26-099
    • Bishop Fox 博客:完整技术分析
    • NVD — CVE-2026-35616
    下载工具