Hello there, ('ω')ノ
弱い署名キーによる JWT 認証バイパスを。
まずは、ログインして。


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

/adminエンドポイントへのアクセスは権限がなく。

Cookieで識別しているようなので。
JWT をコピーし、シークレットをブルート フォースして。
ワードリストは、下記からコピーして作成して。
https://github.com/wallarm/jwt-secrets/blob/master/jwt.secrets.list

Hashcatを実行して、署名鍵を解読することに。
hashcat -a 0 -m 16500 eyJraWQiOiIyYzgxMGZlOS1hN2FiLTQ5ZTQtYjNjZC00NzlhNjJkNGYxMjMiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJwb3J0c3dpZ2dlciIsInN1YiI6IndpZW5lciIsImV4cCI6MTY4MzQyMzg1MH0.9GvS7CscJVGmIiq4FvwTppPqnAr3vsptgv-Y11jw-lg jwt.secrets.list

Burp Decoder を使用して、Base64 でエンコードして。

JWT Editor Keysタブで、New Symmetric Keyをクリックして。
ダイアログで [Generate] をクリックして、JWK 形式で新しいキーを生成して。
キー サイズは後で自動的に更新されるため、選択する必要はなく。
k プロパティの生成された値を Base64 でエンコードされたシークレットに
置き換えて。

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

タブの下部にある [Sign] をクリックし、生成したキーを選択して。
[Don't modify header] オプションが選択されていることを確認し、[OK] を。
これで、変更されたトークンは、正しい署名で署名されるようになって。

Sendすると管理パネルにアクセスできて。

carlosを削除するエンドポイントとパラメータを送信すると。


クリアできて。

Best regards, (^^ゞ