╔═══════════════════════════════════════════════════════════════╗
║ ║
║ CVE-2026-1731 ║
║ BeyondTrust RS/PRA Passive Vulnerability Scanner ║
║ ║
╠═══════════════════════════════════════════════════════════════╣
║ PASSIVE SCANNER — EDUCATIONAL & AUTHORIZED USE ONLY ║
║ ║
║ Performs passive fingerprinting via standard HTTP GET. ║
║ No exploit payloads sent. No WebSocket connections. ║
║ Only use against systems you own or are authorized to test. ║
║ ║
║ Methods: BRDF version extraction, /check_health, ║
║ static asset sizing, /get_mech_list API, ║
║ HTML analysis, copyright year, /nw probe ║
║ ║
║ Author: NetGuard 24/7 LLC ║
║ Web: https://netguard24-7.com ║
╚═══════════════════════════════════════════════════════════════╝
针对 CVE-2026-1731 的被动漏洞扫描器——这是 BeyondTrust Remote Support (RS) 和 Privileged Remote Access (PRA) 中一个严重(CVSS 9.9)的预认证远程代码执行漏洞。
该工具仅使用标准 HTTP GET 请求来识别存在漏洞的 BeyondTrust 实例。不发送任何漏洞利用载荷。不建立 WebSocket 连接。不尝试任何认证。
更新日期:2026年2月16日
应用热修复补丁 BT26-02-RS 或 BT26-02-PRA 后,由于热修复不会导致版本号递增,因此检测到的低于 RS (v21.3 - 25.3.1) 或 PRA (v22.1 - 24.X) 的 BeyondTrust 实例仍会显示为存在漏洞。也就是说,已应用热修复补丁(BT26-02-RS 或 BT26-02-PRA)的实例仍会显示为存在漏洞。一旦基础版本升级,实例才会显示为不存在漏洞。 根据厂商说明,官方修复已在 Remote Support 25.3.2 及更高版本 | Privileged Remote Access 25.1 及更高版本 中解决。**
本工具仅供教育和授权的防御性用途使用。
您只能将本工具用于您拥有或已获得明确书面授权进行测试的系统。未经授权扫描您不拥有的系统可能违反适用法律,包括《计算机欺诈和滥用法》(CFAA)以及其他司法辖区的类似法规。
作者对滥用本工具不承担任何责任。使用本软件即表示您同意负责任地使用它,并遵守所有适用的法律法规。
CVE-2026-1731 是 CVE-2024-12356(中国 APT 组织用于入侵美国财政部的漏洞)的一个变体。两者都针对相同的 /nw WebSocket 端点和底层的 thin-scc-wrapper Bash 脚本。针对 CVE-2024-12356 的 BT24-10 补丁添加了数字健全性检查,但未能阻止对 remoteVersion 参数的 Bash 算术求值——这正是 CVE-2026-1731 所利用的。
该扫描器使用 8 种被动指纹识别方法——已针对真实 BeyondTrust 实例进行验证——在不发送任何漏洞利用流量的情况下确定产品版本和漏洞状态。
方法 1(BRDF) 与 Metasploit 和 Nessus 插件 213456 使用的技术相同。当 BRDF 返回精确版本时,置信度为精确。某些 25.x 实例会从 BRDF 中剥离版本信息——在这种情况下,方法 2-6 会被评分并相互印证以推断版本范围。
/nw 传输构造的载荷git clone https://github.com/YOUR_USERNAME/cve-2026-1731-scanner.git
cd cve-2026-1731-scanner
chmod +x cve_2026_1731_scanner.py
python3 cve_2026_1731_scanner.py -t support.example.com -v
# 创建目标列表(每行一个主机)
cat > targets.txt << 'EOF'
support.example.com
pra.example.com
192.168.1.50
10.0.0.100:8443
remote-support.beyondtrustcloud.com
EOF
# 运行扫描
python3 cve_2026_1731_scanner.py -f targets.txt --threads 20 -o results.csv --json results.json -v
usage: cve_2026_1731_scanner.py [-h] (-t TARGET | -f FILE) [-o OUTPUT]
[--json JSON_OUTPUT] [--threads THREADS] [-v]
options:
-t, --target TARGET 单个目标主机名或 IP
-f, --file FILE 包含目标的文件(每行一个)
-o, --output OUTPUT 将结果导出到 CSV 文件
--json JSON_OUTPUT 将结果导出到 JSON 文件
--threads THREADS 并发线程数(默认:10)
-v, --verbose 每个目标的详细输出
目标文件接受灵活输入——每行一个条目:
# 支持注释(以 # 开头的行)
192.168.1.1
10.0.0.5
support.example.com
support.example.com:8443
https://support.example.com
http://support.example.com # 自动升级为 HTTPS
support.example.com/login # 路径会被自动剥离
| 等级 | 含义 |
|---|---|
| 严重 | 通过 BRDF 确认精确版本存在漏洞,或多个高置信度信号表明为 25.x 之前版本 |
| 高 | 可能存在漏洞但佐证信号较少;建议手动验证 |
| 中 |
| 代码 | 含义 |
|---|---|
0 | 未发现严重或高风险发现 |
1 | 检测到高风险发现 |
2 | 检测到严重发现 |
# 示例:CI/CD 流水线集成
python3 cve_2026_1731_scanner.py -f targets.txt -o results.csv
if [ $? -eq 2 ]; then
echo "严重:发现存在漏洞的 BeyondTrust 实例!"
# 触发警报 / 呼叫值班人员 / 创建工单
fi
[*] 正在扫描 https://support.example.com...
状态:存在漏洞 [严重]
版本:24.1.4(通过 BRDF /get_rdf,置信度:精确)
公司:examplecorp
产品:Remote Support
信号:health=old, login.js=36458B, html=modern, ©2024
/nw:可达
如果扫描器识别出存在漏洞的实例:
/nw WebSocket 端点的访问$() 或反引号的异常 remoteVersion 值的 WebSocket 连接到 /nw欢迎提交 Pull Request。如果您发现了额外的被动指纹识别方法或版本关联信号,请提交 issue 或 PR。
MIT 许可证——详情请参阅 LICENSE。
NetGuard 24/7 LLC https://netguard24-7.com
| 字段 | 详情 |
|---|
| CVE | CVE-2026-1731 |
| CVSS | 9.9(严重) |
| 安全公告 | BT26-02 |
| 类型 | 预认证远程代码执行 |
| 攻击向量 | WebSocket 端点 /nw — Bash 算术求值注入 |
| 受影响版本 | RS ≤ 25.3.1,PRA ≤ 24.3.4 |
| 修复版本 | RS 25.3.2+,PRA 25.1.1+ |
| 利用情况 | 截至 2026年2月12日 已在野外活跃利用 |
| # | 方法 | 端点 | 提取内容 | 置信度 |
|---|
| 1 | BRDF 版本提取 | GET /get_rdf?comp=sdcust&locale_code=en-us | 从二进制头部提取精确产品版本(例如 24.1.4) | 精确 |
| 2 | /check_health 响应 | GET /check_health | "Health Check: Succeeded" = 25.x 之前 / "Status: Primary" = 25.x+ | 高 |
| 3 | 静态资源大小 | HEAD /js/login.js | 文件大小:约 36K-39K = 25.x 之前 / 约 12K = 25.x+ | 高 |
| 4 | /get_mech_list API | GET /get_mech_list?version=3 | 公司名称 + thin_rep_enabled 字段(仅 25.x+) | 高 |
| 5 | HTML 结构 | GET /login | XHTML 1.1 + BOMGAR = 25.x 之前 / HTML5 = 25.x+ | 中 |
| 6 | 版权年份 | GET /login 页脚 | 2002-2024 = 25.x 之前 / 2002-2025 = 25.x | 中 |
| 7 | 门户信息 | GET /get_portal_info | X-Ns-Company 值(攻击者侦察指标) | — |
| 8 | WebSocket 探测 | GET /nw(仅 HTTP) | 确认攻击面可达性 | — |
| 推断为 25.x+(RS 在 25.3.1 之前仍可能存在漏洞);请验证 BT26-02 补丁 |
| 低/信息 | SaaS 实例(已自动修补)、确认已修补版本或确认安全 |
| 置信度 | 来源 | 含义 |
|---|
| 精确 | BRDF /get_rdf | 从二进制中提取的精确版本字符串(例如 24.1.4) |
| 高 | 多信号(3+) | 3 个或更多独立信号一致且无矛盾 |
| 中 | 多信号(2+) | 大多数信号一致但存在一定模糊性 |
| 低 | 不确定 | 信号冲突或不足 |
| 字段 | 描述 |
|---|
target | 扫描的 URL |
is_beyondtrust | 是否检测到 BeyondTrust |
product_type | Remote Support 或 Privileged Remote Access |
product_version | 精确版本(如果从 BRDF 提取) |
version_source | 版本确定方式 |
version_confidence | 精确、高、中或低 |
company_name | X-Ns-Company 值(用于漏洞利用) |
copyright_year | 来自登录页面页脚 |
health_check_type | old(25.x 之前)或 new(25.x+) |
login_js_size | /js/login.js 的文件大小 |
thin_rep_enabled | 仅存在于 25.x+ |
html_generation | legacy(XHTML)或 modern(HTML5) |
is_saas | SaaS(.beyondtrustcloud.com)实例 |
ws_endpoint_reachable | /nw 是否响应 |
vulnerability_status | 评估结果 |
risk_level | 严重、高、中、低或信息 |
details | 人类可读的评估详情 |