bolubey/CVE-2026-50751
GitHub: bolubey/CVE-2026-50751
针对 Check Point IKEv1 VPN 证书身份验证绕过漏洞(CVE-2026-50751)的多目标批量检测扫描器,用于判断目标网关是否接受伪造的自签名证书。
Stars: 0 | Forks: 0
# CVE-2026-50751 扫描器
用于 [CVE-2026-50751](https://www.cvedetails.com/cve/CVE-2026-50751) 的多目标检测扫描器 —— Check Point IKEv1 Remote Access VPN 证书身份验证绕过。
## 漏洞概述
**CVE-2026-50751** 是已弃用的 IKEv1 密钥交换中 VPN Remote Access 和 Mobile Access 的身份验证绕过漏洞。
| 字段 | 值 |
|---|---|
| **CVSS Score** | 9.3 (严重) |
| **CVSS Vector** | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| **是否已被野外利用** | 是 |
| **Check Point SK** | [sk185033](https://support.checkpoint.com/results/sk/sk185033) |
### 受影响的产品
- Mobile Access / SSL VPN
- Remote Access VPN
- Spark Firewall
### 受影响的版本
| 版本 | 状态 |
|---|---|
| R80.20.X | 停止支持 |
| R80.40 | 停止支持 |
| R81 | 停止支持 |
| R81.10 | 停止支持 |
| R81.10.X | |
| R81.20 | |
| R82 | |
| R82.00.X | |
| R82.10 | |
### 技术细节
CVE-2026-50751 利用了 IKEv1 证书验证中的逻辑流缺陷。存在漏洞的 `iked` 进程会从 `VPNExtFeatures` Vendor ID(位 0x4)读取受攻击者控制的标志,导致 `verify_peer_auth` 跳过 `verifyMessagePhase1` 检查。这意味着:
- 证书签名(所有权证明)**未被验证**。
- 证书的信任链**未被验证**。
- 仅根据已配置的 Remote Access 用户检查 subject DN(用户名)。
攻击者可以使用目标用户名伪造自签名证书,并在没有私钥、密码或有效证书的情况下建立 VPN 会话。
## 扫描器
此工具是一个**安全的多目标扫描器**,可并发对多个主机执行原始检测逻辑。除了原始检测行为外,它不添加任何利用操作。
### 功能
- 发送带有伪造自签名证书的 IKEv1 Main Mode 消息。
- 报告目标是否接受伪造的证书流。
- 支持 UDP (500/4500) 和 TCP/TCPT (443 Visitor Mode)。
- 从网关 443 端口上的公共 TLS 证书自动提取 ICA 组织。
- 输出文本、JSON 和日志文件格式的结果。
### 不执行的操作
- 无 Phase 2 VPN 协商。
- 无 XAUTH 密码尝试。
- 无凭据猜测或暴力破解。
- 无隐蔽、规避或速率限制绕过。
- 无数据包泛洪。
- 无身份验证后操作或隧道传输。
### 安全控制
| 控制 | 默认值 | 说明 |
|---|---|---|
| 并发数 | 1 | 未使用 `--force-high-concurrency` 时最大为 5 |
| 重试次数 | 0 | 最大为 2 |
| 延迟 | 2.0s | 目标提交之间的间隔 |
| 超时 | 8.0s | 每个目标 |
## FOFA Dork
用于在互联网上发现 Check Point SSL Network Extender 网关:
```
app="Check_Point-SSL-Network-Extender"
```
## 前置条件
- Python 3.10+
- `cryptography` 库
```
pip install cryptography
```
## 用法
### 基本用法
```
# 单个目标(向后兼容)
python exploit_poc.py -rh vpn.company.com -u oracle --json-out results.json --log-file scan.log
# 多个目标
python exploit_poc.py --target vpn1.company.com --target 10.1.2.3 -u oracle
# 从文件读取(每行一个目标)
python exploit_poc.py --targets-file targets.txt -u oracle
```
### 空运行 (Dry Run) (不发送数据包)
```
python exploit_poc.py --targets-file targets.txt -u oracle --dry-run
```
### 输出选项
```
# JSON 结果 + 文本日志
python exploit_poc.py --targets-file targets.txt -u oracle \
--json-out results.json --log-file scan.log
```
### Visitor Mode (TCP/443 TCPT)
```
python exploit_poc.py --target vpn.company.com -u oracle --tcpt
# 或
python exploit_poc.py --target vpn.company.com -u oracle -rp 443
```
### 高并发 (需要显式标志)
```
python exploit_poc.py --targets-file targets.txt -u oracle \
--concurrency 10 --force-high-concurrency --delay 1
```
### 自定义组织 (跳过 TLS 自动提取)
```
python exploit_poc.py --target vpn.company.com -u oracle --org "MyCompany"
```
## 目标输入
目标可以通过以下方式指定:
| 选项 | 说明 |
|---|---|
| `--target HOST` | 单个目标 (可重复) |
| `-rh HOST` | 单个目标 (向后兼容的别名) |
| `--targets-file FILE` | 每行一个目标的文件 |
**目标文件格式:**
- 每行一个目标。
- 以 `#` 开头的行是注释。
- 空行将被忽略。
## 结果状态
| 扫描器状态 | 含义 |
|---|---|
| `possibly_vulnerable` | 网关接受了伪造的证书 (可能存在 CVE-2026-50751) |
| `not_vulnerable_or_patched` | 网关拒绝了伪造的证书 (已修补或用户名未配置) |
| `not_ike_or_no_cert_realm` | 无 IKE 服务或网关未处于证书身份验证模式 |
| `not_reachable` | DNS 解析失败或连接被拒绝 |
| `inconclusive` | 无决定性响应 (受限速或丢弃影响) |
| `error` | 发生意外的异常 |
### 退出代码
| 代码 | 含义 |
|---|---|
| 0 | 扫描完成,未发现漏洞 |
| 1 | 扫描完成,存在一个或多个 `possibly_vulnerable` 结果 |
| 2 | 参数/安全错误 |
| 3 | 致命错误 |
## 命令行选项
### 目标选项
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `-rh`, `--rhost` | string | None | 单个远程主机 (向后兼容) |
| `--target` | string | None | 目标主机 (可重复) |
| `--targets-file` | string | None | 每行一个目标的文件 |
### 连接选项
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `-rp`, `--rport` | int | 500 | 远程端口 (用于 Visitor Mode 的 UDP 500/4500,TCP 443) |
| `-t`, `--timeout` | float | 8.0 | 超时时间 (秒) |
| `--tcpt` | flag | False | 使用 Check Point Visitor-Mode TCPT 隧道 |
### 身份验证选项
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `-u`, `--username` | string | **必填** | 要模拟的 Remote Access 用户名 |
| `--org` | string | 自动提取 | ICA 组织 (O=) DN 后缀 |
| `--ou` | string | users | 用户 DN 的 OU= 组件 |
| `-r`, `--retries` | int | 0 | msg1 重试次数 (最大: 2) |
### 扫描器安全选项
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `--dry-run` | flag | False | 打印目标并退出而不进行扫描 |
| `--concurrency` | int | 1 | 最大并发目标数 (未使用 `--force-high-concurrency` 时最大为 5) |
| `--force-high-concurrency` | flag | False | 允许 6-20 的并发数 |
| `--delay` | float | 2.0 | 目标提交之间的间隔秒数 |
### 输出选项
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `--json-out` | string | None | 将 JSON 结果写入文件 |
| `--log-file` | string | None | 将文本日志行追加到文件 |
| `-v`, `--verbose` | flag | False | 详细输出 |
## 输出示例
```
[*] CVE-2026-50751 Check Point IKEv1 RA VPN Multi-Target Scanner
[*] Detection only -- no exploitation beyond original detection logic.
[!] Only scan assets you own or are authorized to test.
[*] Targets: 3 | Port: 500 | Transport: udp
[*] Concurrency: 1 | Delay: 2.0s | Timeout: 8.0s | Retries: 0
[possibly_vulnerable] vpn1.company.com udp/500 3.42s
[not_vulnerable_or_patched] vpn2.company.com udp/500 2.18s
[not_reachable] 10.1.2.3 udp/500 1.05s Connection failed: [Errno 111] Connection refused
[*]
[*] Summary:
[*] possibly_vulnerable: 1
[*] not_vulnerable_or_patched: 1
[*] not_ike_or_no_cert_realm: 0
[*] not_reachable: 1
[*] inconclusive: 0
[*] error: 0
```
## JSON 输出格式
```
[
{
"target": "vpn.company.com",
"resolved_ip": "203.0.113.10",
"port": 500,
"transport": "udp",
"tcpt": false,
"username": "oracle",
"status": "possibly_vulnerable",
"runner_status": "BYPASSED",
"started_at": "2026-06-16T12:34:56Z",
"finished_at": "2026-06-16T12:35:01Z",
"duration_seconds": 5.1,
"error": null
}
]
```
## 日志文件格式
```
2026-06-16T12:34:56Z target=vpn.company.com ip=203.0.113.10 transport=udp port=500 status=possibly_vulnerable duration=5.1 error=
```
## 安全注意事项
### 授权
- 仅扫描您拥有或获得明确书面授权进行测试的资产。
- Check Point 观察到 CVE-2026-50751 在野外被积极利用。
- 存在漏洞的系统可能正在被威胁行为者主动攻击。
## 缓解措施
应用 [sk185033](https://support.checkpoint.com/results/sk/sk185033) 中描述的 Check Point 热修复。
此外:
- 如果不需要,请禁用 IKEv1;改用 IKEv2。
- 通过防火墙规则将 IKE 访问限制在受信任的管理网络内。
- 监控主动利用的指标。
## 许可证
此工具仅用于防御性安全测试和授权漏洞检测。
## 致谢
基于 [watchTowrlabs](https://github.com/watchtowrlabs/watchTowr-vs-Check-Point-CVE-2026-50751) 的原始检测脚本。
标签:Check Point, CISA项目, IKEv1, StruQ, VPN安全, 加密, 漏洞扫描器, 身份验证绕过, 逆向工具