
本项目是一个针对 CVE-2025-5777(代号 "Citrix Bleed 2")的概念验证型扫描工具。它旨在通过模拟攻击载荷,检测目标 Citrix ADC 设备是否存在内存信息泄漏漏洞,帮助安全研究者和渗透测试人员在获得授权的情况下评估系统风险。
randomized(随机混淆)、oversized-headers(超大请求头)和 oversized-body(超大请求体)三种测试方法,以触发潜在的不同类型的内存泄漏。pip 包管理工具requests 库,用于发送 HTTP 请求。pip install requests或者,你可以创建一个 requirements.txt 文件并执行:echo "requests" > requirements.txt
pip install -r requirements.txt通过命令行指定目标 URL 即可开始扫描。
python citrix_bleed_2_scanner.py --target https://[目标IP或域名]oversized-body 测试方法,并将结果保存为 JSON 文件。python citrix_bleed_2_scanner.py --target https://192.168.1.100 --test-method oversized-body --json-out results.json参数 | 说明 | 默认值 |
|---|---|---|
| 必需。 目标 URL,例如 | 无 |
| 发送请求的次数 |
|
| 每次请求之间的延迟时间(秒) |
|
| 测试方法: |
|
| 将发现的令牌信息导出到指定的 JSON 文件 |
|
| 将发现的令牌信息导出到指定的 CSV 文件 |
|
| 将原始响应内容导出到指定的文件 |
|
| 启用 TLS 证书验证(默认忽略证书错误) |
|
此函数通过计算香农熵来评估一段数据的随机性,是识别潜在密钥或令牌的关键。
# ——— Fingerprint Engine ———
def estimate_entropy(s: bytes or str) -> float:
"""
Estimates the Shannon entropy of a string to identify randomness, which can indicate a token or key.
A higher entropy value suggests more randomness.
"""
if not s or len(s) < 8:
return 0
# Ensure string is in a consistent format for analysis
s = s.decode('utf-8', errors='ignore') if isinstance(s, bytes) else s
# Calculate probability of each character
probs = [s.count(c) / len(s) for c in set(s)]
# Calculate Shannon entropy
entropy = -sum(p * log2(p) for p in probs)
return round(entropy, 2)该函数专门用于在响应内容中搜索 <InitialValue> 标签,这是 Citrix ADC 设备内存泄漏的特定标志。
# ——— Fingerprint Engine ———
TAG_OPEN = b"<InitialValue>"
TAG_CLOSE = b"</InitialValue>"
EXTRACT_RE = re.compile(
re.escape(TAG_OPEN) + b"(.*?)" + re.escape(TAG_CLOSE),
flags=re.DOTALL | re.IGNORECASE,
)
def extract_initial_value(blob: bytes) -> bytes | None:
"""
Searches for and extracts the content between <InitialValue> and </InitialValue> tags.
This is a strong indicator of a memory leak from the Citrix ADC device.
Returns the extracted content as bytes, or None if not found.
"""
# 函数体将使用编译好的正则表达式 EXTRACT_RE 在 blob 中进行搜索
# 如果找到匹配项,返回标签内的内容;否则返回 None
# 此函数的具体实现是漏洞利用逻辑的核心部分
pass 使用 argparse 模块构建灵活且用户友好的命令行接口。
# ——— Main CLI Interface ———
import argparse
def main():
parser = argparse.ArgumentParser(description='Citrix Bleed 2 (CVE-2025-5777) Proof-of-Concept Scanner')
parser.add_argument('--target', required=True, help='Target URL (e.g., https://192.168.1.100)')
parser.add_argument('--loop', type=int, default=1, help='Number of requests to send')
parser.add_argument('--delay', type=float, default=2.0, help='Delay between requests in seconds')
parser.add_argument('--test-method', choices=['randomized', 'oversized-headers', 'oversized-body'], default='randomized', help='The testing method to use')
parser.add_argument('--json-out', help='Export found tokens to a JSON file')
parser.add_argument('--csv-out', help='Export found tokens to a CSV file')
parser.add_argument('--raw-out', help='Export raw response content to a file')
parser.add_argument('--no-insecure', action='store_true', help='Enable TLS certificate verification')
args = parser.parse_args()
# ... 后续扫描逻辑本脚本仅供教育和授权的安全测试使用。使用本脚本即表示您同意仅在获得明确书面授权的系统上进行测试。作者和贡献者不对因使用本脚本而引起的任何误用或损害负责。未经授权扫描系统是非法行为,并受到严格禁止。FINISHED
6HFtX5dABrKlqXeO5PUv//xA6HSrhfaglCF3qRpHdvw=
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。