Hello there, ('ω')ノ
パスワードリセット機能のレート制限を回避するためのトリックを。
脆弱性:
レート制限バイパス
記事:
https://4bdoz.medium.com/trick-to-bypass-rate-limit-of-password-reset-functionality-a9923d3d7c4b
今回は、ターゲットをexample.comと呼つことに。
サーバの動作:
多数のリクエストを送信すると、パスワードのリセットによって。
レスポンスコード 429、およびレスポンスメッセージ「Too many requests」で。
ブロックされて。
テストの試行:
1.リクエストごとにユーザエージェントヘッダの値を。
ランダムに変更してみると失敗して。
2.以下のようないくつかのヘッダを追加してみても失敗して。
X-Forwarded-For : 127.0.0.1
X-Forwarded-Host : 127.0.0.1
X-Client-IP : 127.0.0.1
X-Remote-IP : 127.0.0.1
X-Remote-Addr : 127.0.0.1
X-Host : 127.0.0.1
3.メールのリクエスト本文に下記のようなヌルバイトを追加しても失敗して。
%00, %09, %0d, %0a
4.スペース、数字、role:adminなどを追加するなどしても失敗して。
5.パスにパラメータを追加するとバイパスされて成功して。
https://dashboard.example.io/password-reset ⇦ ブロック
https://dashboard.example.io/password-reset?anyCharacter=1 ⇦ バイパス成功
下記のようにブロックせずに100件以上のリクエストを送信できて。
問題を段階的に再現:
下記のエンドポイントにアクセスして。
https://dashboard.example.io/password-reset
パスワードをリセットして、Burpプロキシでリクエストをキャプチャして。
リクエストのエンドポイントにパラメータを追加して。
Intruderに送信するか、手動で多くの下記のリクエストを送信して。
https://dashboard.example.io/password-reset?anyCharacter=1
Best regards, (^^ゞ