以下の内容はhttps://cysec148.hatenablog.com/entry/2023/05/07/153941より取得しました。


JWT authentication bypass via algorithm confusionをやってみた

Hello there, ('ω')ノ

 

アルゴリズムの混乱による JWT 認証バイパスを。

 

JWT ベースのメカニズムを使用してセッションを処理して。
堅牢な RSA キー ペアを使用して、トークンの署名と検証を行い。
ただし、実装上の欠陥により、このメカニズムはアルゴリズム混乱攻撃に
対して脆弱で。
ラボを解決するには、まずサーバの公開鍵を取得し。
これは、標準のエンドポイントを介して公開されて。
このキーを使用して、/admin で管理パネルにアクセスできるように
変更されたセッション トークンに署名してから、carlos を削除して。
次の認証情報を使用して、自分のアカウントにログインできて。
 wiener/peter
 

まずは、ログインから。

 

 

ブラウザで標準エンドポイント /jwks.json にアクセスしてみると

サーバが単一の公開鍵を含む JWK セットを公開していることが確認でき。

 

 

キー配列内から下記のJWK オブジェクトをコピーして。

 

{"kty":"RSA","e":"AQAB","use":"sig","kid":"3e6db848-1e0b-4fb0-9cde-1780748c3482","alg":"RS256","n":"p3qx9_1QWihN8wrATSqM6KHO4F378tA-dofGPdkZrBsqvwtnKEwVn_rd_SGYSRcvrbe98HG8ihPkHi20mtaz3pY_5kzYhdOblwNO9IzFGH1x7O48zdZPtIKhqbYCBAW0hrSPpBu-0EAvq5rIVSqRX-rpF6_3xnIWgJD03sHRGvWjRQDv_LJXUUOmOzmLJbePLhNSIZ48rn5OV7i2s19vIHjYJJEmihQQwv57WHscBS-CDO8xPGRnTm6hMCk0zC-Wvfv5QQuRnLQ10phbDL0A5sA9N3nPQ3s8rCNXfJiTfZd1MzhoV5PZ6PBHM_zsudoMDuRTCuXynzVXfV0ZMyeq3Q"}

 

リクエストをリピータへ。

 

 

[New RSA Key] をクリックして。

ダイアログで、JWK オプションが選択されていることを確認してから、

コピーした JWK を貼り付けて。

 [OK] をクリックしてキーを保存して。

 

 

作成したキーのエントリを右クリックし、[Copy Public Key as PEM] を選択して。

 

 

コピーした公開キーをBase64でエンコードして。

 

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp3qx9/1QWihN8wrATSqM
6KHO4F378tA+dofGPdkZrBsqvwtnKEwVn/rd/SGYSRcvrbe98HG8ihPkHi20mtaz
3pY/5kzYhdOblwNO9IzFGH1x7O48zdZPtIKhqbYCBAW0hrSPpBu+0EAvq5rIVSqR
X+rpF6/3xnIWgJD03sHRGvWjRQDv/LJXUUOmOzmLJbePLhNSIZ48rn5OV7i2s19v
IHjYJJEmihQQwv57WHscBS+CDO8xPGRnTm6hMCk0zC+Wvfv5QQuRnLQ10phbDL0A
5sA9N3nPQ3s8rCNXfJiTfZd1MzhoV5PZ6PBHM/zsudoMDuRTCuXynzVXfV0ZMyeq
3QIDAQAB
-----END PUBLIC KEY-----

 

 

次に[New Symmetric Key] をクリックし。  

ダイアログで [Generate] で、JWK 形式で新しいキーを生成して。  

キー サイズは後で自動的に更新されるため、選択する必要はなく。

生成された k プロパティの値を、Base64 でエンコードされた PEM に置き換えて。

 

 

JWT のヘッダで、alg パラメータの値を HS256 に変更して。

ペイロードで、sub クレームの値をadministratorに変更して。

 

 

[Sign] をクリックし、生成した対称キーを選択して。

[Don't modify header] オプションが選択されていることを確認し、

[OK] をクリックすると変更されたトークンは、サーバの公開鍵を秘密鍵として

署名されて。

 

 

そして、/adminのエンドポイントへリクエストすると

管理パネルにアクセスできて。

 

 

carlosを削除するエンドポイントとパラメータをリクエストすると。

 

 

クリアできて。

 

 

Best regards, (^^ゞ




以上の内容はhttps://cysec148.hatenablog.com/entry/2023/05/07/153941より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14