
Palo Alto - CVE-2026-0300 漏洞利用
严重(CVSS 9.3) — 在 Palo Alto Networks PAN-OS Captive Portal 中未认证即可远程执行代码
CVE-2026-0300 是 Palo Alto Networks PAN-OS 软件中 User-ID 认证门户(也称为 Captive Portal)服务的一个严重缓冲区溢出漏洞。未认证攻击者可通过发送特制数据包利用此漏洞,在 PA 系列和 VM 系列防火墙上以 root 权限执行任意代码。
本仓库包含一个概念验证漏洞利用工具包,包括:
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-0300 |
| 严重性 | 严重 |
| CVSS 4.0 | 9.3 (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H) |
| CWE | CWE-787: 越界写入 |
| CAPEC | CAPEC-100: 缓冲区溢出 |
| 影响 | 未认证远程代码执行(root) |
| 利用状态 | 已观察到有限的野外利用 |
于 PAN-OS 软件的 User-ID 认证门户服务中存在一个缓冲区溢出漏洞,攻击者无需认证,通过发送特制数据包即可在防火墙上以 root 权限执行任意代码。Captive Portal HTTP 服务使用固定大小的栈缓冲区解析 HTTP 头,可通过超大头值(Cookie、User-Agent、URI 或 POST 正文)导致溢出。
目标易受攻击必须同时满足以下两个条件:
| PAN-OS 分支 | 易受攻击版本 | 已修复版本 |
|---|---|---|
| 10.2 | 10.2.7, 10.2.10, 10.2.13, 10.2.16, 10.2.18 | 10.2.7-h34+ |
| 11.1 | 11.1.0–11.1.14 | 11.1.15+ |
| 11.2 | 11.2.0–11.2.11 | 11.2.12+ |
| 12.1 | 12.1.0–12.1.6 | 12.1.7+ |
不受影响:Prisma Access、Cloud NGFW、Panorama 设备。
┌─────────────────────────────────────────────────────────────────────┐ │ CVE-2026-0300 Exploit Toolkit │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ ┌────────────┐ ┌─────────────────┐ ┌────────────────────┐ │ │ │ scan.py │────▶│ HTTP Fingerprint│ │ payload_gen.py │ │ │ │ Scanner │ │ + Version Check │ │ │ │ │ └────────────┘ └─────────────────┘ │ ┌──────────────┐ │ │ │ │ │ │ Version │ │ │ │ │ Reports: │ │ Offsets │ │ │ │ │ • Portal detected? │ │ (10.2/11.1/ │ │ │ │ │ • PAN-OS version │ │ 11.2/12.1) │ │ │ │ │ • Vulnerable? │ └──────────────┘ │ │ │ ▼ │ ┌──────────────┐ │ │ │ ┌────────────┐ ┌─────────────────┐ │ │ Shellcode │ │ │ │ │ exploit.py │────▶│ Raw Socket │ │ │ Generator │ │ │ │ │ Exploit │ │ HTTP Delivery │ │ │ (x86_64 rev │ │ │ │ └────────────┘ └─────────────────┘ │ │ shell) │ │ │ │ │ │ └──────────────┘ │ │ │ │ ┌──────────────────────┐ │ ┌──────────────┐ │ │ │ ├─▶│ MODE: detect │ │ │ ROP Chain │ │ │ │ │ │ Safe, non-intrusive │ │ │ (jmp rsp) │ │ │ │ │ └──────────────────────┘ │ └──────────────┘ │ │ │ │ ┌──────────────────────┐ │ ┌──────────────┐ │ │ │ ├─▶│ MODE: crash │ │ │ HTTP Request │ │ │ │ │ │ DoS validation │ │ │ Builder │ │ │ │ │ └──────────────────────┘ │ └──────────────┘ │ │ │ │ ┌──────────────────────┐ └────────────────────┘ │ │ └─▶│ MODE: rce │ │ │ │ Reverse shell │ ┌──────────────────────┐ │ │ └──────────────────────┘ │ ReverseShellListener │ │ │ │ │ (callback receiver) │ │ │ ▼ └──────────────────────┘ │ │ ┌──────────────────┐ │ │ │ Target Firewall │ │ │ │ PAN-OS Captive │ │ │ │ Portal Service │ │ │ └──────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘
### 扫描器流程```
┌─────────────┐
│ Start Scan │
└──────┬──────┘
│
▼
┌──────────────────┐ No ┌─────────────┐
│ Target reachable?│──────────▶│ Skip port │
└──────┬───────────┘ └─────────────┘
│ Yes
▼
┌──────────────────┐
│ Send HTTP GET │
│ to common ports │
│ (443,80,8080, │
│ 8443,8843) │
└──────┬───────────┘
│
▼
┌──────────────────┐ No ┌─────────────┐
│ Captive Portal │──────────▶│ Not exposed │
│ fingerprint? │ └─────────────┘
│ (login.esp, │
│ User-ID, PA-, │
│ PAN-OS, etc.) │
└──────┬───────────┘
│ Yes
▼
┌──────────────────┐
│ Extract PAN-OS │
│ version from │
│ Server header / │
│ response body │
└──────┬───────────┘
│
▼
┌──────────────────┐ No ┌─────────────┐
│ Version in │──────────▶│ Not │
│ vulnerable │ │ vulnerable │
│ range? │ └─────────────┘
└──────┬───────────┘
│ Yes
▼
┌──────────────────┐
│ Report: │
│ • VULNERABLE │
│ • Version │
│ • Matched ranges │
│ • SSL cert info │
└──────────────────┘
┌──────────────────────────────────────────────────────────────────┐ │ EXPLOIT EXECUTION FLOW │ │ │ │ 1. Generate Payload │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ [Padding to offset] [Saved FP] [ROP: jmp rsp] │ │ │ │ [NOP sled (128B)] [Shellcode (184B rev shell)] │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ │ │ 2. Embed in HTTP Header ▼ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ GET / HTTP/1.1 │ │ │ │ Host: target:443 │ │ │ │ Cookie: │ │ │ │ Connection: close │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ │ │ 3. Start Listener ▼ │ │ ┌──────────────────┐ │ │ │ Listener binds │ ← Must start BEFORE sending payload │ │ │ on callback │ │ │ │ IP:port │ │ │ └──────────────────┘ │ │ │ │ │ 4. Send via SSL/TLS ▼ │ │ ┌──────────────────┐ │ │ │ Raw socket │ → Target Captive Portal service │ │ │ sends request │ │ │ └──────────────────┘ │ │ │ │