Crazy PII leak via API Misconfiguration から学ぶ

ソース:

medium.com

脆弱性API

 

訳:

今日は私が実施した外部侵入テストの 1 つを見ていきます。
この脆弱性はすでに修正されていますが、機密保持契約により、脆弱な Web サイトは匿名化されます (したがって、通常の example.com ドメインを使用します)。 

 

テストはブラック ボックスであり、顧客から提供される情報はゼロです。
私たちが知っている唯一のことは、example.com と任意のサブドメイン (*.example.com) をテストできるということです。

 

興味深いサブドメインを見つけたら、すぐ起動するツールが dirsearch です。
これは、ディレクトリ総当たり攻撃に使用するお気に入りのツールの 1 つで。
信じられないほど高速で、非常に優れた単語リストを使用しているため、労力をかけずに、またはほとんど努力せずにすぐに成功を収めることができ。

 

調査の開始

 

調査結果

 

ページを見つけるのに役立ちましたが この場合、 /info または /info.php 、phpinfo() は表示されず、アプリケーション内の実際のユーザー名とその UID が表示されました。 

 

ユーザーの機密情報が漏洩 

 

最初の情報を発見するとすぐに、アプリケーションがこれを使用する方法を探し始めます。
これは通常、 基本的なソースコードレビュー によって行われます(特にコードが縮小/難読化されていない場合)。

この場合、Web サイト全体を参照するだけで、 Burp Suite は ファイルを見つけることができました すべてのJavaScript

 

情報収集には以下の2つの拡張機能を使用して。

 

これらは、次のような情報を見つけるのに役立ちます。

 

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 スクリプトを作成し。
その結果、次のようになり。 

 

この脆弱性を報告したところ、「緊急」と評価されました。

 

ほなほな。