Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-29000-pac4j-jwt — CVE-2026-29000 PoC: pac4j-jwt の PlainJWT-in-JWE 認証バイパス。 | Kitploit
ツール/GitHubGitHub/strikoder-premium/cve-2026-29000-pac4j-jwt
認証と認可脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト
GitHubstrikoder-premium/cve-2026-29000-pac4j-jwt

CVE-2026-29000-pac4j-jwt

CVE-2026-29000 PoC: pac4j-jwt の PlainJWT-in-JWE 認証バイパス。

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
33ヶ月前未レビュー

pac4j-jwe-forge (CVE-2026-29000)

CVE-2026-29000 の概念実証コードです。pac4j-jwt の 4.5.9 未満、5.7.9 未満、および 6.3.3 未満のバージョンを対象としています。

この脆弱性は単純です。ライブラリは、有効な JWE にラップされている限り、PlainJWT(署名なし、alg=none)を受け入れます。サーバーは JWKS エンドポイントを通じて RSA 公開鍵を公開しているため、誰でも任意の署名なし JWT を暗号化して、サーバーが信頼する JWE を作成できます。ROLE_ADMIN を含むものも同様です。


仕組み

  1. ターゲットの JWKS エンドポイントから RSA 公開鍵を取得する
  2. 任意のクレームを含む署名なし JWT(alg=none)を構築する
  3. サーバーの公開鍵で暗号化する
  4. 生成された JWE を Bearer トークンとして送信する

サーバーはそれを復号し、内部のクレームを信頼し、内部の JWT が署名なしであることを決してチェックしません。


要件

Python 3.13+ と uv、または依存関係を手動でインストール:

root@kitploit:~
pip install jwcrypto requests

使用方法

root@kitploit:~
[uv run / python3] CVE-2026-29000.py --url <base_url> --jwks <jwks_path> [options]

必須:

フラグ説明
--urlターゲットのベース URL(例: http://10.10.11.x:8080)
--jwksJWKS エンドポイントへのパスまたは完全な URL

オプション:

例:

root@kitploit:~
python3 exploit.py --url http://10.10.11.x:8080 --jwks /api/auth/jwks

python3 exploit.py --url http://10.10.11.x:8080 --jwks /api/auth/jwks --user john --role ROLE_ADMIN

python3 exploit.py --url http://10.10.11.x:8080 --jwks /.well-known/jwks.json --enc A128GCM

JWKS エンドポイントの特定

必ずしも明白ではありません。確認すべき場所:

  • /robots.txt — 制限されたパスや内部パスが記載されていることが多い
  • /api/auth/jwks
  • /.well-known/jwks.json
  • /.well-known/openid-configuration

適切な alg/enc の特定

トークンが拒否された場合、アプリが特定の暗号化アルゴリズムを期待している可能性があります。/static/js/app.js で次のようなものを確認してください:

root@kitploit:~
const JWE_ALG = "RSA-OAEP-256";
const JWE_ENC = "A128GCM";

その後、--enc A128GCM を指定して再実行します。

トークンの保存方法も通常そこにあります:

root@kitploit:~
class TokenManager {
    static getToken() {
        return sessionStorage.getItem('auth_token');
    }
}

sessionStorage の場合、DevTools の Application > Session Storage でトークンを直接置き換えます。


影響を受けるバージョン

  • pac4j-jwt < 4.5.9
  • pac4j-jwt < 5.7.9
  • pac4j-jwt < 6.3.3

4.5.9、5.7.9、および 6.3.3 で修正されています。

ツールをダウンロード
フラグデフォルト説明
--useradminsub クレームの値
--roleROLE_ADMIN偽造するロール(ROLE_ADMIN、ROLE_MANAGER、ROLE_USER)
--issuerprincipal-platformiss クレームの値
--encA256GCMJWE コンテンツ暗号化(A256GCM または A128GCM)