「Image upload leads to Mass Account Takeover & PII leak」から学ぶ

ソース:

https://medium.com/@mares.viktor/leaking-plaintext-credentials-by-uploading-an-image-ec11d64fbd63

 

脆弱性:File Upload、ATO

 

訳:

今日は、顧客データ (電子メール、プレーンテキストのパスワード、アドレスなど) の漏洩につながる、非常に興味深い脆弱性を紹介したいと。

 

いつものように、被害者の Web サイトを匿名化し、「example.com」のドメインを割り当てて。
このウェブサイトでは、ユーザーとして登録し、充電ゾーンの場所を作成することができるでゲス。

 ページの下部には、画像をアップロードするオプションがあり、値のない外部 ID もあり。
いつものように、XSS、SQLi などのさまざまな脆弱性をテストしていましたが、うまくいきませんげす。

 そこで、画像をアップロードして何が起こるか見てみることにしまし。

 

私は通常、インターネットにアクセスしてランダムな画像を見つけてアップロードし。
画像をアップロードしたら、次のことをテストして。

 

  • Check adding a valid extension before the execution extension (use previous extensions also): e.g. file.png.php →などの前に有効な拡張子を追加。
  • Try adding special characters at the end: e.g. file.php%20, file.php%0a, file.php%00 et.c →最後に特殊文字を追加
  • Try to bypass the protections tricking the extension parser of the server-side with techniques like doubling the extension or adding junk data (null bytes) between extensions →nullバイトの追加
  • Add another layer of extensions to the previous check: file.png.jpg.php | file.php%00.png%00.jpg →別のレイヤーの追加
  • Try to put the exec extension before the valid extension and hope for the server to be misconfigured →exec拡張子を前に追加
  • Bypass Content-Type checks by setting the value of the Content-Type header to: image/png , text/plain , application/octet-stream →Content-Typeの値の設定
  • Bypass magic number check by adding at the beginning of the file the bytes of a real image (confuse the file command). Best resource: https://en.wikipedia.org/wiki/List_of_file_signatures →マジックナンバーチェックのバイパス、実際のイメージのバイトの追加
  • Uploading a file with “.”, “..”, or “…” as its name. →ファイル名に追加

ただし、上記のトリックはどれも実際には機能しませんでして。
少し戻って、画像アップロード リクエスト全体を確認することにして。
これにより、非常に興味深いものを発見し。アップロードされている画像は、実際には画像そのものではなく、ID として保存されていたでゲス。

 

 

また、興味深いと思われるのは、ID 12 として保存された画像が、 メソッドである__media__[images][0] -> リスト インデックス付け から取得されていることです。 

このことから、ここに潜在的脆弱性が存在する可能性があると考えるようになり。そこで 変更した ID を12から1にしたところ… 

 

 

最初は画像が変わったので何も起こらずアプリを壊しただけかと思ったのですが、どうやらダメだったようです。
そこで、Burp Suite に戻って応答を注意深く確認し。

 

PII(個人を特定できる情報)が漏洩 

 

ID 1 のファイルは実際には画像ではなく、ユーザーのインポートに使用された CSV ファイルで。
そこには彼らのフルネーム、メールアドレス、平文のパスワードなどが含まれていて… 

 

 

私はすぐにそれを報告しましたが、それは 重大な脆弱性で。
電子メールとパスワードをすべて平文で持っていたため、これらの各アカウントにアクセスして、やりたいことが何でもでき。

 

ほなほな