citrixInspector.py(原名 cve_2023_3519_inspector.py)是一个基于 Python 的被动漏洞扫描器,适用于 Citrix ADC / Citrix Gateway / NetScaler ADC / NetScaler Gateway 设备。它可以在无需认证的情况下对目标设备的固件版本进行精确指纹识别,并报告该版本所存在的所有已知 CVE 漏洞。
⚠️ Beta 版: 针对较新的 2025/2026 年 CVE(CitrixBleed 2/3、CVE-2026-8452、CVE-2026-88771/88772)的检测功能处于 beta 阶段。该功能依赖于通过 GZIP 时间戳或 vhash 技术对固件版本进行精确指纹识别;当两种方法在目标上均无法生效时,扫描器会退回到一种更粗略、仅针对 CVE-2023-3519 的启发式方法,并且完全不会标记较新的 CVE(参见下文“执行的检查”部分)。请将较新 CVE 的检测结果仅视为参考信息。

输出是在模拟测试环境中运行的。主机名仅为占位符。
cve_2023_3519_inspector.py 重命名为 citrixInspector.py,以反映其更广泛的多 CVE 覆盖范围。/vpn/js/rdx/core/lang/rdx_en.json.gz)作为主要且最可靠的未认证版本识别技术,因为旧版 v=<hash> 静态资源哈希在现代版本上“已不再总是存在”。Last-Modified 头进行猜测)替换为在已知精确版本时进行精确的版本阈值比较,仅在无法识别版本时回退到原始启发式方法。此脚本需要 Python 3.6+ 以及以下 Python 包:
要安装所需的包,请运行:
git clone https://github.com/securekomodo/citrixInspector.git
cd citrixInspector
pip install -r requirements.txt
python citrixInspector.py -u <target_url>
Author: Bryan Smith (@securekomodo)
------------------------
_________ .__ __ .__
\_ ___ \|__|/ |________|__|__ ___
/ \ \/| \ __\_ __ \ \ \/ /
\ \___| || | | | \/ |> <
\______ /__||__| |__| |__/__/\_ \
\/ \/
.___ __
| | ____ ____________ ____ _____/ |_ ___________
| |/ \ / ___/\____ \_/ __ \_/ ___\ __\/ _ \_ __ \
| | | \___ \ | |_> > ___/\ \___| | ( <_> ) | \/
|___|___| /____ >| __/ \___ >\___ >__| \____/|__|
\/ \/ |__| \/ \/
citrixInspector
------------------------
usage: citrixInspector.py [-h] (-u URL | -f FILE) [--ioc-check] [-l LOG]
Fingerprint and check Citrix ADC / NetScaler ADC & Gateway for known CVEs.
optional arguments:
-h, --help show this help message and exit
-u URL, --url URL The URL of the Citrix/NetScaler Gateway to check.
-f FILE, --file FILE A file containing a list of URLs to check.
--ioc-check Slower. Performs IOC (Indicator of Compromise) check.
-l LOG, --log LOG Log file to write the output.
citrixInspector.py 脚本可以接受单个 URL 或包含 URL 列表的文件作为输入。然后它会执行一系列检查,以确定给定 Citrix/NetScaler Gateway 的潜在漏洞:
# Check a single URL
python citrixInspector.py --url https://example.com
# Check multiple URLs from a file
python citrixInspector.py --file urls.txt
# Check multiple URLs from a file and check for IOCs
python citrixInspector.py --file urls.txt --ioc-check
要指定输出日志文件,请使用 --log 选项:
python citrixInspector.py --url https://example.com --log my_log.log
获取帮助:
python citrixInspector.py --help
citrixInspector.py 脚本对目标网站执行以下检查:
/vpn/js/rdx/core/lang/rdx_en.json.gz 的 GZIP MTIME 头字段(RFC 1952),该字段在固件编译时设置,可唯一标识精确版本。这是 Fox-IT 安全研究团队当前推荐的技术,因为下文所述的 vhash 技术在现代版本上“已不再总是存在”。v=<md5> 哈希。这基于 Fox-IT(NCC Group)在 2022 年的出色工作:
https://blog.fox-it.com/2022/12/28/cve-2022-27510-cve-2022-27518-measuring-citrix-adc-gateway-version-adoption-on-the-internet/每当能够识别出精确版本(通过 GZIP 时间戳检查、vhash 检查或 pluginlist.xml),脚本会将该版本与下表中的每个 CVE 进行比对,并报告所有适用的漏洞([CERTAIN])。当无法识别精确版本时,它会回退到原始的标题/图标/注释/头部启发式方法([FIRM] / [TENTATIVE] / [CITRIX DETECTED]),且仅针对 CVE-2023-3519,与之前相同。
| CVE | 描述 | 修复版本 |
|---|---|---|
| CVE-2023-3519 | 未认证 RCE(栈溢出) | 13.0-91.13 / 13.1-49.13 |
| CVE-2025-5349 / CVE-2025-5777 | "CitrixBleed 2" - 内存泄露 | 14.1-43.56 / 13.1-58.32 |
| CVE-2025-6543 | 内存溢出(Gateway),已被野外利用 | 14.1-47.46 / 13.1-59.19 |
| CVE-2025-7775 / CVE-2025-7776 / CVE-2025-8424 | "CitrixBleed 3" | 14.1-47.48 / 13.1-59.22 |
| CVE-2026-8452 | 预认证 SAML PrefixList 堆溢出(需要 SAML SP/IdP 配置) | 14.1-72.61 / 13.1-63.18 |
| CVE-2026-88771 / CVE-2026-88772 | 预认证命令注入 / DTLS 内存溢出 — 已被积极利用,列入 CISA KEV | 14.1-73.37 / 13.1-64.23 |
所有在修复版本发布前已到达生命周期终止(End-Of-Life)的分支(11.1、12.1 非 FIPS/NDcPP、13.0)均被报告为存在上述所有 CVE 漏洞。FIPS/NDcPP 版本(12.1-55.x、13.1-37.x)则根据其单独发布的修复版本进行检查。
仅包含具有可靠且公开记录的版本阈值的 CVE。CTX697096 和 CTX696604 公告中的其他几个 CVE(例如 CVE-2026-88773–88778)需要经过认证的配置检查才能确定适用性,因此有意不在本被动扫描器的范围内。
Last-Modified 头补丁启发式方法:
https://github.com/telekom-security/cve-2023-3519-citrix-scanner欢迎提交 Pull Request。对于重大更改,请先开一个 issue 讨论您想要更改的内容。
本项目仅用于教育和道德测试目的。未经事先双方同意,使用 citrixInspector 攻击目标是非法的。最终用户有责任遵守所有适用的地方、州和联邦法律。开发者不承担任何责任,也不对由本程序造成的任何误用或损害负责。
本项目采用 MIT 许可证。
Bryan Smith