ソース:
訳:
今日は私が実施した外部侵入テストの 1 つを見ていきます。
この脆弱性はすでに修正されていますが、機密保持契約により、脆弱な Web サイトは匿名化されます (したがって、通常の example.com ドメインを使用します)。
テストはブラック ボックスであり、顧客から提供される情報はゼロです。
私たちが知っている唯一のことは、example.com と任意のサブドメイン (*.example.com) をテストできるということです。
興味深いサブドメインを見つけたら、すぐ起動するツールが dirsearch です。
これは、ディレクトリ総当たり攻撃に使用するお気に入りのツールの 1 つで。
信じられないほど高速で、非常に優れた単語リストを使用しているため、労力をかけずに、またはほとんど努力せずにすぐに成功を収めることができ。
調査の開始
調査結果
ページを見つけるのに役立ちましたが この場合、 /info または /info.php 、phpinfo() は表示されず、アプリケーション内の実際のユーザー名とその UID が表示されました。
ユーザーの機密情報が漏洩
最初の情報を発見するとすぐに、アプリケーションがこれを使用する方法を探し始めます。
これは通常、 基本的なソースコードレビュー によって行われます(特にコードが縮小/難読化されていない場合)。
この場合、Web サイト全体を参照するだけで、 Burp Suite は ファイルを見つけることができました すべてのJavaScriptを 。
情報収集には以下の2つの拡張機能を使用して。
- JS マイナー : https://portswigger.net/bappstore/0ab7a94d8e11449daaf0fb387431225b
- JS リンク ファインダー : https://portswigger.net/bappstore/0e61c786db0c4ac787a08c4516d52ccf
これらは、次のような情報を見つけるのに役立ちます。
JS Miner を有効にし、Web サイト全体をナビゲートすると、次の API エンドポイント を見つけることができて。
ユーザーUIDを介してユーザーを確認するAPIエンドポイント
スクリーンショットには表示されていませんが、API エンドポイントは 引数 の 各ユーザーを検索するためにUID を受け取り、次の URL が得られて。
https://get.example.com/admin/api/v1/check?uid=:uid
ここで、ユーザーの情報を取得できるかどうかを確認することにしたので、前に見つけた UID の 1 つを使用してテストしてみて。
APIを介したユーザーPII漏洩
API には認証は必要ありません。 非常に少数の API、特に管理 API ではこれを必要としないため、これは幸運で。
各ユーザーの氏名、生年月日、現住所、身分証明書、メールアドレス、電話番号などを漏洩することができました。 怖いですよね?
影響を完全に示すために、すべてのユーザー ID を取得し、それらを 1 つにするよう要求し、それらを CSV 形式で保存する基本的な概念実証の Python スクリプトを作成し。
その結果、次のようになり。
この脆弱性を報告したところ、「緊急」と評価されました。
ほなほな。