web-dev-qa-db-ja.com

単一引用符のないJavaScript文字列リテラル内のXSS?

ペンテスターとして、私はこのシナリオに出くわしました:

<script type="text/javascript">

 URL = 'http://example.com?x=input';

%A0、スペース、および'以外のほとんどすべての行を挿入できます。問題は、JSが壊れないように、新しい行を作成する前に'が必要なことです。

私はそれをこのように残すことができます:

<script type="text/javascript">

 URL = 'http://example.com?x=input;
 Prompt`9`
 anything';

入力後、;の前に'を挿入する必要があります。そうしないと機能しません...これに回避策/バイパスはありますか? /を挿入することもできます。

2
Mr. ToxicMan

それはXSSableではありません。

(私はあなたのシナリオで山かっこもブラックリストに入れられていると想定しています。それ以外の場合は、</script>でスクリプトタグを閉じ、単一引用符を使用しない別のスクリプトを挿入することができます。)

JS/ES構文では、単一引用符で始まる文字列リテラルは単一引用符で終了する必要があります。自分で挿入することはできないので、エスケープされていない改行を導入するか、\で閉じる単一引用符をエスケープすることにより、多くの場合構文エラーを引き起こす可能性があります。攻撃者はこれを使用して、最終的に他のバグと連鎖してより深刻なものになる可能性のある現在のスクリプトの実行を防ぐことができます。しかし、それ自体ではXSSを利用できません。

3
Arminius