Crazy PII leak via API Misconfiguration から学ぶ

ソース:

medium.com

脆弱性API

 

訳:

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

 

パート 1: 初期の列挙

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

 

調査の開始

調査結果

 

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

 

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

パート 2: さらなる列挙

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

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

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

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

 

  • API endpoints
  • Dependencies
  • Secrets/Credentials
  • Subdomains
  • Cloud URLs
  • And so many more

JS Miner を有効にし、Web サイト全体をナビゲートすると、次の API エンドポイント を見つけることができました。 

 

ユーザーUIDを介してユーザーを確認するAPIエンドポイント

スクリーンショットには表示されていませんが、API エンドポイントは 引数 各ユーザーを検索するためにUID を受け取り、次の URL が得られます。

 

https://get.example.com/admin/api/v1/check?uid=:uid

 

パート 3: API の設定ミスによる情報漏洩の連鎖

ここで、ユーザーの情報を取得できるかどうかを確認することにしたので、前に見つけた UID の 1 つを使用してテストしてみました。

 

APIを介したユーザーPII漏洩

API には認証は必要ありません。 非常に少数の API、特に管理 API ではこれを必要としないため、これは幸運でした。

各ユーザーの氏名、生年月日、現住所、身分証明書、メールアドレス、電話番号などを漏洩することができました。 怖いですよね?

影響を完全に示すために、すべてのユーザー ID を取得し、それらを 1 つにするよう要求し、それらを CSV 形式で保存する基本的な概念実証の Python スクリプトを作成しました。

その結果、次のようになります。

 

全ユーザーのPIIが漏洩

 

ほなほな。