CSP简介:
CSP全称是: Content-Security-Policy, 内容安全策略。
是指HTTP返回报文头中的标签,浏览器会根据标签中的内容,判断哪些资源可以加载或执行。
主要是为了缓解潜在的跨站脚本问题(XSS),浏览器的扩展程序系统引入了内容安全策略这个概念。原来应对XSS攻时,主要采用函数过滤转义输入中的特殊字符、标签、文本来规避攻击。CSP的实质就是白名单制度,开发人员明确告诉客户端,哪些外部资源可以加载和执行。开发者只需要提供配置,实现和执行全部由浏览器完成。
简单版:
1.查看源代码:
通过对http头中定义了CSP定义了CSP 标签,‘self’指可以访问的网址,网址白名单及 https://pastebin.com ,访问后发现为文本编辑网址,我们可以在该网址编辑xss脚本,然后包含该网址实现XSS
2.进入网站https://pastebin.com:输入alert(1)以raw形式显示,并记录网址
在输入框中输入刚刚的url,成功执行
在pastebin上保存的js代码被执行了。那就是因为pastebin网站是被信任的。攻击者可以把恶意代码保存在收信任的网站上,然后把链接发送给用户点击,实现注入。
中等版:
1.分析源代码:
2.构造一个标签,输入
<script nonce="TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=">alert('qisheng')</script>
高等版:
1.分析源代码:
2.题目提示:
3.利用callback参数,Post
<script src="source/jsonp.php?callback=alert('1');"></script>
4.查看jsonp.php的代码
<?php
header("Content-Type: application/json; charset=UTF-8");
if (array_key_exists ("callback", $_GET)) {
$callback = $_GET['callback'];
} else {
return "";
}
$outp = array ("answer" => "15");
echo $callback . "(".json_encode($outp).")";
?>
5.参数以get方式获取,没有做过滤
include=<script src="source/jsonp.php?callback=alert('hacked');"></script>