IDOR and CSRF at the same end point(my first bug🐛) から学ぶ

ソース:

medium.com

脆弱性:IDOR, CSRF

 

訳:

今日は最初のバグを共有するので、ターゲットを example.com に呼び出しましょう。

まず、ドメインをよく理解するために小さなマッピングを作成し、それから関数を探し始めます。

ユーザーの名前を変更する機能に来て、メールアドレスと携帯電話番号も変更されるのでそれを使用し、リクエストを探したところ、そのようでした。

 

POST /api/update-customer?api_token=9801c30c00000049dfa936fd1c3f2f HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 125
Origin: example.com
Referer: example.com
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
Te: trailers
Connection: close

first_name=[name]&last_name=[Lname]&email=[email]&mobile=[mobile]&customer_id=[id]

 

api_token を探し、それを削除してリクエストを送信しようとしましたが、うまくいきました。
POC を書く前に、Cookie がない場合にどうやって私を知っているかを知ろうとしたので、 customer_id パラメーターを探しました。
私が持っている別のメールアドレスの別の ID に変更し、それも仕事なので IDOR として報告することにしましたが、別のユーザーの ID を取得するにはどうすればよいですか? 🙂

テスト用に作成したメールの ID から、ID ごとに異なるのは 10007 、 10014 、 10021 など 7 つであることが判明したので、作成したメールの数でこれをテストしたところ、私の理論は真実でした。

 

アカウントを乗っ取られる可能性があるため、重要です。 😎