Shikata Ga Nai

Private? There is no such things.

Trick to bypass rate limit of password reset functionalityを訳してみた

Hello there, ('ω')ノ

 

パスワードリセット機能のレート制限を回避するためのトリックを。

 

脆弱性:

 レート制限バイパス

 

記事:

 https://4bdoz.medium.com/trick-to-bypass-rate-limit-of-password-reset-functionality-a9923d3d7c4b

 

今回は、ターゲットをexample.comと呼つことに。

 

サーバの動作:

多数のリクエストを送信すると、パスワードのリセットによって。

レスポンスコード 429、およびレスポンスメッセージ「Too many requests」で。

ブロックされて。

 

f:id:ThisIsOne:20210921110833p:plain

 

テストの試行:

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件以上のリクエストを送信できて。

 

f:id:ThisIsOne:20210921110558p:plain

 

f:id:ThisIsOne:20210921110622p:plain

 

問題を段階的に再現:

下記のエンドポイントにアクセスして。

 https://dashboard.example.io/password-reset

 

パスワードをリセットして、Burpプロキシでリクエストをキャプチャして。

リクエストのエンドポイントにパラメータを追加して。

Intruderに送信するか、手動で多くの下記のリクエストを送信して。

 https://dashboard.example.io/password-reset?anyCharacter=1

 

Best regards, (^^ゞ