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, (^^ゞ