ソース:
訳:
さて、以下が私が行ったことです。本当のエンドポイント、パラメータ、通信は異なります(会社のアイデンティティを守るため)。
- 認証なしでユーザーデータを取得するエンドポイントを見つけ。エンドポイントはGETリクエストを/id/XXXX123456789?birthday=dd-mm-yyyy に受け付け、次の情報を返し: id、名前、姓、生年月日、およびいくつかの他の個人情報。
したがって、有効な応答を受け取るためには、2つの情報(13桁のIDと生年月日)が必要で。
- 次に、無効なIDと無効な誕生日にサーバーがどのように応答するかを確認し。
無効なIDの場合、次のメッセージが表示され。「このIDはわかりません」。
有効なIDですが、無効な誕生日の場合、次のようなメッセージが表示され。
「このIDの誕生日は、あなたが提供したものと一致しません」。
さあ、ゲームの開始です!
- まず、有効なIDをブルートフォースで見つけましょう。Intruderを使用して、最後の5桁のペイロードを追加し、「攻撃開始」をクリックし。
5回試みることなく、レート制限がかかり、私は停止しました。APIに再度アクセスできるまでに30~60分かかったと思います。
私はそれを予期していなく。
しかし、この最初の障害に対して、リクエストに「X-Forwarded-Host」ヘッダーを追加するだけで、「Battering Ram」攻撃を使用すると解決し。
-
数分後、いくつかの有効なIDを手に入れ。
次は楽しい部分です。生年月日をどのようにブルートフォースすればよいのでしょうか?
覚えておいてください、これは認証されていないリクエストであり、ユーザー情報を取得するためには有効なIDと有効な誕生日が必要です。 -
誕生日はdd-mm-yyyyの形式です。どのように進めるべきでしょうか?以下が私の考えです:
これは、このタイプ/プロファイルのユーザーを持つ会社で。
最も可能性のある年齢層は20歳から40歳(実際にはこのような場合ではなかったが、会社のアイデンティティを保護するため)。
1983年1月1日から始まるすべての誕生日のリストが必要です。
どこでこのタイプのリストを見つけることができますか?
答えは、この正確な形式ではおそらくどこにもないので、自分でやるべきで。Pythonを使用します。 どのようにしてそれをより速くすることができますか?
自分でコーディングする代わりに、GPT4を使用して数秒で完了させ。
AIにやらせ、より良く、より速く。
AIが提案したスクリプトの最初の数行:
数秒後、リストはChatGPT4のコードインタープリター(現在は高度なデータ分析)からtxtファイルとしてダウンロードする準備ができ。
次に、誕生日とX-Forwarded-Hostヘッダーのペイロードを用いて、Intruderを別のBattering Ram攻撃で使用し。
要約すると、Intruderの最初の使用で有効なIDを手に入れました。そのIDの1つとIntruderを使用して、有効なパスワードをブルートフォースし。
その美しい点は、それが見事に機能し、Intruderがすべての誕生日を通過して正しいものを見つけるのに数分しかかからなかったことで。
このような情報を提示されたとき、(無謀/不注意な)企業は何をしますか?
ブルートフォース/レート制限バイパス => OOS(範囲外)。
これは公平ではないと思っていましたが、私は全く怒っていませんでした。
むしろ、この攻撃シナリオに耐えるためにこれほど遠くまで行き、実際に成功したことに私自身を非常に誇りに思っていました(それを達成するためにかなりの時間を費やしました)。
そして、私は彼らに以下のようなことを返答しました:
これは、私がこれまでに送った中で最も長く、最も網羅的なレポートです。データ侵害で通常見られる個人データの特性(フルネーム、誕生日、ID、そして少し手を加えればメールも抽出できる)を共有しているため、私はこれを行いました。レート制限が範囲外であるにもかかわらず、私はそれを簡単にバイパスして個人情報を収集することができたため、これを行いました。
この問題を範囲外とすることを決定するならば、このセキュリティの問題を通じて露呈されている数十万人(またはそれ以上)のユーザーの個人データを尊重して、少なくともそれを修正してください。
そして、私は前に進みました。この会社はすでに、私が報告した他の重大な脆弱性に対して報酬を支払ってくれており、今後彼らと積極的に関与することはないと決意し。
ほなほな