Shikata Ga Nai

Private? There is no such things.

Exploiting File Upload Functionality in Unique Wayを訳してみた

Hello there, ('ω')ノ

 

独自の方法でファイルアップロード機能の活用を。

 

脆弱性:

 無制限のファイルアップロード

 

記事:

 https://rohit-soni.medium.com/exploiting-file-upload-functionality-in-unique-way-6081b8f658dd

 

ターゲットをtarget.comとすると。

アプリケーションを巡回しているときに。

ユーザがpdf、またはdoc形式で履歴書をアップロードできる機能が表示されたので。

下記のXSSペイロードを含む.html拡張子のファイルをアップロードして。

 <script>alert(1)</script>


アップロードされたURLを見つけて、そのURLにアクセスして。

アップロードしたhtmlファイルをダウンロードしたりと。

 

また、アップロードされたファイルは。

クラウドフロントに保存されていることに気づいて。

自分のペイロードは、下記にアップロードされていて。

 https://something.cloudfront.net/payload.html

 

次にログインして、ランダムなユーザのプロファイルにアクセスして。

ランダムなユーザのプロフィール写真を右クリックして。

画像の場所をコピーして。

その場所を新しいタブで開くと。

コピーされた画像の場所は、ユーザのプロフィール写真も同じく。

クラウドフロントストレージのルートフォルダに保存されていて。

 https://something.cloudfront.net/randomnumber_IMG_randomnumber.jpeg

 

下記が観察の概要:

 •アップロード機能は、pdfファイルとdocファイルのみを受け入れる必要があるが。

 あらゆるタイプのファイルを受け入れて。

 •アップロードされたユーザとCVのプロフィール写真は。

 同じクラウドフロントストレージのルートフォルダに保存されて。

 •アップロードされたファイルのファイル名は。

 アップロード前に名前が変更されず。

 ファイルの名前は同じままで。

 

そこで、googleからランダムな画像をダウンロードして下記の名前に変更して。

下記は、上記のランダムなユーザのプロフィール画像の画像名で。

これをアップロードして。

 randomnumber_IMG_randomnumber.jpeg

 

下記が、プロフィール写真名と同じ名前でアップロードした写真で。

f:id:ThisIsOne:20210728195247p:plain

 

下記が、写真をアップロードする前のランダムユーザのプロファイルで。

f:id:ThisIsOne:20210728195334p:plain

 

そのランダムなユーザのプロファイルにアクセスすると。

プロファイル画像は変更されておらず。

その後、Webページがブラウザにキャッシュされていることに気付いたので。

シークレットモードでウェブサイトを開いて。

そのランダムなユーザーのプロファイルにアクセスすると。

プロフィール写真はアップロードした写真で変更されて。

 

下記が、ランダムなユーザの変更されたプロフィールの写真で。

f:id:ThisIsOne:20210728195525p:plain

 

その他、ユーザが買い物をすることができる機能もあって。

これもすべての商品の写真も同じクラウドフロントのルートフォルダに保存されて。

上記の手順を繰り返すことで。

ショップで入手可能な商品の写真を変更することもできて。

 

下記が、変更前で。

f:id:ThisIsOne:20210728195808p:plain

 

下記が、商品画像名と同名の画像をアップロードして。

f:id:ThisIsOne:20210728195851p:plain

 

下記が、変更後で。

f:id:ThisIsOne:20210728195909p:plain

 

再現する手順:

 1.任意のユーザのプロファイルにアクセスして。

   プロファイル画像の場所をコピーして。

 2.テキストエディタに貼り付けて、画像名をコピーして。

 3.ターゲットユーザのプロファイル画像で変更する画像の名前を。

   コピーした画像名に変更して。

 4.https://target.com/careersにアクセスして、画像をアップロードして。

 5.ターゲットユーザのプロファイルを更新して。

   ターゲットユーザのプロファイルを開いて。

   プロファイル画像が選択した画像と変化することを確認して。

 

根本的な原因:

 アプリケーションは有効なファイルタイプをチェックせずに。

 同じ名前のファイルが。

 すでにクラウドフロントストレージにあるかどうかをチェックせずに上書きして。

 

Best regards, (^^ゞ