Content Security Policy (CSP) Bypass

Content Security Policy (CSP) Bypass

前言

Content Security Policy(网页安全政策),缩写 CSP

首先我们要理解什么是CSP,下面的博文讲的还是很清楚

Content Security Policy 入门教程

Content Security Policy (CSP) is a computer security standard introduced to prevent cross-site scripting (XSS), clickjacking and other code injection attacks resulting from execution of malicious content in the trusted web page context. ——维基百科

可以从维基百科的的介绍看到,CSP是一种计算机安全标准,主要用来防御xss等注入。2012年出了版本1,2014年出了Level2,2015开始研发Level3.可以看到这个技术还是很新的,(感觉安全这方面也是越来越重视,现在感觉很多的web安全策略都直接在框架中已经完善了,前面看Django框架看到它的orm,程序员只要正常使用接口,我们就很难用前面学的SQL注入了)

这里的dvwa练习有Content Security Policy,正好学习一下。

练习

Low

Content Security Policy (CSP) Bypass_第1张图片
这里是要我们输入资源,然后我们的资源能被执行就OK
2
这里我们查看元素可以看到它的CSP里面的内容

这里面有一个pastebin网站,这个网站是一个快速分享文本的网站…(网站就是下图那样)
Content Security Policy (CSP) Bypass_第2张图片
然后我们来测试一下,弹个cookie
Content Security Policy (CSP) Bypass_第3张图片
生成成功后,我们点击raw获得连接
Content Security Policy (CSP) Bypass_第4张图片
把获得的url输入dvwa,就可以看到成功的弹出cookie
Content Security Policy (CSP) Bypass_第5张图片
简单的说,这里用CSP的时候就不要给这种不安全的网站,不然防护限制用处就不大了

Medium

还是先抓包看
Content Security Policy (CSP) Bypass_第6张图片
这里可以看到有"nonce",“unsafe-inline”

这里我觉得考察点就是我们队script-src中的参数(特殊值)的理解

‘unsafe-inline’:允许执行页面内嵌的 这样的标签
因为 script 不同于 ajax,所以可以跨域发送的
服务器就根据 callback 请求,返回 solveSum({“answer”:“15”}) , 就可以调用 high.js 中的solveSum 有点绕。

这里的jsonp方式可以自行查阅,因为jsonp所以可以实现跨域了(不知道这里说的对不对)

这里可以参考DVWA 黑客攻防实战(十五) 绕过内容安全策略 Content Security Policy (CSP) Bypass

利用方法也有讲解

Impossible

url中没有callback,也只允许访问本站资源。

总结

虽然说CSP标准提出来有些年了,但我访问网页也看了下其实用的并不是那么多啊,包括我访问淘宝和京东那些网站也没有看到CSP的影子。

所以整体应该还算是一个较新的技术吧,但确实我感觉CSP在安全方面设置的好的话,对xss等注入是有一个较好的防范的,但一些网站想要设置合适的CSP也不是容易的事,所以就目前的环境而言CSP还是存在绕过的

参考

  1. Content Security Policy 入门教程
  2. CSP(Content-Security-Policy)内容安全策略
  3. DVWA 黑客攻防实战(十五) 绕过内容安全策略 Content Security Policy (CSP) Bypass
  4. Content Security Policy (CSP) 是什么?为什么它能抵御 XSS 攻击?

你可能感兴趣的:(web安全)