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
下記が、プロフィール写真名と同じ名前でアップロードした写真で。
下記が、写真をアップロードする前のランダムユーザのプロファイルで。
そのランダムなユーザのプロファイルにアクセスすると。
プロファイル画像は変更されておらず。
その後、Webページがブラウザにキャッシュされていることに気付いたので。
シークレットモードでウェブサイトを開いて。
そのランダムなユーザーのプロファイルにアクセスすると。
プロフィール写真はアップロードした写真で変更されて。
下記が、ランダムなユーザの変更されたプロフィールの写真で。
その他、ユーザが買い物をすることができる機能もあって。
これもすべての商品の写真も同じクラウドフロントのルートフォルダに保存されて。
上記の手順を繰り返すことで。
ショップで入手可能な商品の写真を変更することもできて。
下記が、変更前で。
下記が、商品画像名と同名の画像をアップロードして。
下記が、変更後で。
再現する手順:
1.任意のユーザのプロファイルにアクセスして。
プロファイル画像の場所をコピーして。
2.テキストエディタに貼り付けて、画像名をコピーして。
3.ターゲットユーザのプロファイル画像で変更する画像の名前を。
コピーした画像名に変更して。
4.https://target.com/careersにアクセスして、画像をアップロードして。
5.ターゲットユーザのプロファイルを更新して。
ターゲットユーザのプロファイルを開いて。
プロファイル画像が選択した画像と変化することを確認して。
根本的な原因:
アプリケーションは有効なファイルタイプをチェックせずに。
同じ名前のファイルが。
すでにクラウドフロントストレージにあるかどうかをチェックせずに上書きして。
Best regards, (^^ゞ