Shikata Ga Nai

Private? There is no such things.

JWT authentication bypass via kid header path traversalをやってみた

Hello there, ('ω')ノ

 

Kid ヘッダ パス トラバーサルによる JWT 認証バイパスを。

 

JWTベースのセッション処理が使用されていて。

サーバは、kidパラメータを使用して、ファイルシステムから

関連するキーを取得して。

このラボを解決するには、/adminの管理パネルにアクセスできるJWTを偽造し、

ユーザcarlosを削除して。

次の資格情報を使用して、自分のアカウントにログインできて。

 wiener/peter

 

注:
この解決方法では、kidパラメータを標準ファイル/dev/nullに指定して。

実際には、kidパラメータを予測可能な内容の任意のファイルに

指定することができて。

 

まずは、ログインから。

 

 



Burp Suiteのリクエストから、Cookieのセッションをつかって
管理者パネルにアクセスすることに。

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

 

 

まず、kidパラメータを変更する必要があるので

エスケープディレクトリを試すことに。

Webサーバの構造がわからないので、/dev/nullに入ることを確認するために

7つのエスケープを使用することに。

また、subをadministratorに変更し、リクエストをadminに変更する必要があって

 

 

次にjwkエディタで、新しい対称鍵を作成して。

サイズはリクエストと鍵を保存し、JSON Web Tokenで使用すると

更新されるので何でもよくて。

重要なのは、k値をヌル文字のBase64エンコードで更新することで。

ヌル値をBase64でエンコードした文字列「AA ==」を使用できて。

 

 


作成したキーを割り当てるためには、JSON Web TokenのSignボタンを使用して、

管理者パネルにアクセスすることに。

 

管理者パネルにアクセスできたようで。

 

 


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

 

 

クリアできて。

 

 

Best regards, (^^ゞ