Hello there, ('ω')ノ
RCE へのファイル アップロード バイパスを。
脆弱性:
無制限のファイルアップロード
RCE
記事:
https://sagarsajeev.medium.com/file-upload-bypass-to-rce-76991b47ad8f
今回は、ターゲットのファイル アップロード機能をバイパスして。
RCE にチェーンする方法を。
今回は、3つのバイパス シナリオすべてについて。
シナリオ #1:
拡張子が .php のペイロードは許可されておらず。
ペイロードの名前を「payload.php」から「payload.pHp5」に変更して。
拡張子をランダムな大文字と小文字に変更すると、バイパスされて。
ただし、このようなペイロードは、ターゲットにクライアント側の。
検証のみがある場合にのみ機能することに注意して。
そのため、ペイロードがフロントエンドを通過することがありますが。
IDS またはバックエンド ファイアウォールによってブロックされているため。
コールバックを取得できない場合があって。
シナリオ #2:
拡張子が .php のペイロードは許可されず。
ペイロードの名前を「payload.php」から「payload.php\x00.png」に変更して。
\x00.png を末尾に追加すると、制限 (Null Byte) が回避され。
右クリック→新しいタブで画像を表示すると、スクリプトがトリガされて。
ノート:
場合によっては .inc 、 .phps 、 .phtml も使用できて。
これを使用する場合は、それに応じて content-Type を変更してするように。
追伸:
保存された XSS もここで可能で。
シナリオ #3:
今回は、有効なバイパスを見つけるのに時間がかかって。
彼らは、画像のみを許可するという厳格なルールを設定していて。
データが実際に画像であるかどうかを対象の Web アプリが。
どのように検証しているかを理解できず。
しかし、多くの調査の結果、ペイロードのマジック バイトをチェックして。
検証していることがわかって。
アプリケーションは、最初の署名バイトに基づいてファイルの種類を。
識別することがあり。
ファイルにそれらを追加/置換するとアプリケーションがだまされる可能性があり。
マジックバイトは、ファイルを認識するために使用されるファイルの。
最初の数バイトに他ならず。
ファイルを開いた場合は表示されないので、ファイルのマジック バイトを。
表示するには、特別な 16 進エディタが必要で。
Linux を使用しているので、組み込みの 16 進エディタと xxd を使用して。
マジック バイトを表示および編集でき。
ただし、任意の 16 進エディタを使用して同じ結果を得ることができて。
また、バックエンドが特定のキーワードをフィルタリングして。
削除することもわかって。
たとえば、「.php」という用語を削除するとしたら。
ファイルの名前を「payload.p.phphp」に変更すると。
フィルタが「.php」を削除して、ファイル名は「payload.php」になって。
この段階でファイアウォールはバイパスされているため、スクリプトが実行されて。
下記のビデオの1つがこれに役立って。
https://www.youtube.com/c/JohnHammond010
1.89 50 4e 47 0d 0a 1a 0a → png ファイルのマジックバイト
2.echo “89 50 4e 47 0d 0a 1a 0a” | xxd -p -r >> payload.p.phphp
3.スクリプトをアップロードして、本格的な RCE を入手して。
マジック バイトを含む png ファイルを作成するには。
0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A で始まるファイルを作成することだけで。
「xxd」は、ファイルや標準入力から受け取った内容を16進数、または。
2進数でダンプするコマンドで。
さらに16進ダンプから元のデータに復元できて。
Best regards, (^^ゞ