DVWA-内容安全策略绕过

内容安全策略绕过

​ 内容安全策略(Content Security Policy,简称CSP)是一种以可信白名单作机制,来限制网站是否可以包含某些来源内容,缓解广泛的内容注入漏洞,是一种用于增强网页的安全性的安全策略机制。它可以帮助网站管理员减轻跨站脚本攻击(XSS)和数据注入等攻击的风险。CSP 工作原理是通过定义和实施一组安全策略规则,限制网页中可以加载和执行的内容源和类型。

​ 然而,CSP 可能会存在绕过(bypass)的风险,这通常被称为 CSP Bypass。CSP Bypass 是指攻击者利用缺陷或安全漏洞绕过 CSP 的限制,成功加载或执行不受 CSP 控制的恶意内容。

常见的 CSP Bypass 技术:

  • 数据注入:攻击者可能通过注入恶意代码或链接来绕过 CSP。他们可能会利用存在的漏洞或不安全的用户输入验证,向网页中插入 JavaScript 代码或违反 CSP 规则的内容。
  • 内联脚本:CSP 默认禁止内联脚本执行,但攻击者可以使用各种方法来绕过此限制。例如,他们可以将代码嵌入事件处理程序、动态创建 script 标签或利用非标准属性。
  • 模糊匹配:攻击者可能通过滥用 CSP 中的模糊匹配机制来绕过限制。他们可能使用特殊字符、大小写变换或编码等技术来混淆恶意内容,使其不符合 CSP 规则但仍然可以执行。
  • 动态加载:攻击者可以利用动态加载技术(如 AJAX 或 iframe),在网页的安全性策略生效之前加载或执行恶意内容。这样他们就可以绕过 CSP 的限制。

Low 等级

查看源代码


<?php$headerCSP = "Content-Security-Policy: script-src 'self' https://pastebin.com hastebin.com example.com code.jquery.com https://ssl.google-analytics.com ;"; // allows js from self, pastebin.com, hastebin.com, jquery and google analytics.header($headerCSP);# These might work if you can't create your own for some reason
# https://pastebin.com/raw/R570EE00
# https://hastebin.com/raw/ohulaquzex?>
<?php
if (isset ($_POST['include'])) {
$page[ 'body' ] .= "<script src='" . $_POST['include'] . "'></script>
";
}
$page[ 'body' ] .= '
<form name="csp" method="POST"><p>You can include scripts from external sources, examine the Content Security Policy and enter a URL to include here:</p><input size="50" type="text" name="include" value="" id="include" /><input type="submit" value="Include" />
</form>
';
$headerCSP = "Content-Security-Policy: script-src 'self' https://pastebin.com hastebin.com example.com code.jquery.com https://ssl.google-analytics.com ;";

这句代码可以看出一下外部资源可被执行:

https://pastebin.com
hastebin.com
example.com
code.jquery.com
https://ssl.google-analytics.com

访问https://pastebin.com/,可以在New Paste中写下代码,然后点击create去创建链接:

image-20230909110839810

image-20230909111010969

点击raw:

image-20230909111112206

复制出现的链接

https://pastebin.com/raw/kvEtKqfx

image-20230909111252897

在CSP页面的输入框中输入刚才复制的链接:

image-20230909111354181

出现弹框

Medium 等级

查看源代码

<?php$headerCSP = "Content-Security-Policy: script-src 'self' 'unsafe-inline' 'nonce-TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=';";header($headerCSP);// Disable XSS protections so that inline alert boxes will work
header ("X-XSS-Protection: 0");# <script nonce="TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=">alert(1)</script>?>
<?php
if (isset ($_POST['include'])) {
$page[ 'body' ] .= "" . $_POST['include'] . "
";
}
$page[ 'body' ] .= '
<form name="csp" method="POST"><p>Whatever you enter here gets dropped directly into the page, see if you can get an alert box to pop up.</p><input size="50" type="text" name="include" value="" id="include" /><input type="submit" value="Include" />
</form>
';

输入源码中的注释内容# <script nonce="TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=">alert(1)</script> ,发现可以直接弹窗:

image-20230909112133605

接下来查看CSP信息:

$headerCSP = "Content-Security-Policy: script-src 'self' 'unsafe-inline' 'nonce-TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=';";

unsafe-inline:当csp有Unsafe-inline时,并且受限于csp无法直接引入外部js,不过当frame-src为self,或者能引入当前域的资源的时候,即有一定可能能够引入外部js。nonce-source,仅允许特定的内联脚本块。如源码中:nonce-TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=',所以直接输入源码中注释的内容就可以了。

<script nonce="TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=">alert(1)</script>

补充:

  • 特定的内联脚本块是指HTML文档中直接嵌入在页面中的JavaScript代码段。它们通常位于<script>标签内,紧跟在其他HTML内容后面。相比于外部引用的脚本文件,内联脚本块可以在页面加载时立即执行,无需额外的网络请求。
  • 在HTML的<script>标签中,nonce(Number Used Once)是一个用于增强安全性的属性。它用于指定仅特定来源(如服务器)能够执行的脚本。通过在服务器端生成一个随机的nonce值,并将其包含在页面中的<script>标签中,可以使浏览器只执行具有匹配的nonce值的脚本。这样可以有效地防止恶意脚本注入攻击,因为攻击者无法生成匹配的随机nonce值

High 等级

查看源码

<?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>The page makes a call to ' . DVWA_WEB_PAGE_TO_ROOT . '/vulnerabilities/csp/source/jsonp.php to load some code. Modify that page to run your own 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/high.js"></script>
';

这里可以看到除了自身,其余的外部资源全部过滤了。

$headerCSP = "Content-Security-Policy: script-src 'self';"

说明$headerCSP 是指 Content Security Policy (内容安全策略) 的缩写,它是一种通过定义网页中所允许加载的资源源和执行的脚本类型来增加网站安全性的策略。通过使用 CSP,**网站管理员可以限制与网页交互的元素,从而减少潜在的安全漏洞,如跨站脚本攻击 (XSS) 和数据注入攻击。**CSP 可以在网页的响应头部设置,通过定义策略即可实现对特定资源的限制。

查看source/high.js源码:

image-20230909113917742

在点击网页的按钮使 js 生成一个 script 标签,src 指向 source/jsonp.php?callback=solveNum

流程如下:

  1. 点击按钮,js 生成一个 script 标签(src 指向 source/jsonp.php?callback=solveNum),并把它加入到 DOM 中。
  2. 源码中定义了 solveNum 的函数,函数传入参数 obj,如果字符串 “answer” 在 obj 中就会执行。getElementById() 方法可返回对拥有指定 ID 的第一个对象的引用,innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML。因此 script 标签会把远程加载的 solveSum({“answer”:“15”}) 当作js代码执行,而这个形式正好就是调用了 solveSum 函数。

image-20230909114304874

  1. 然后这个函数就会在界面适当的位置写入答案。

可以对 s.src = "source/jsonp.php?callback=solveSum";进行修改。

solveNum({"answer":"15"})

方法一:

使用bp抓包修改

image-20230909114849472

s.src = "source/jsonp.php?callback=alert('hello');";

image-20230909114944301

方法二:

使用HackBar发送post提交

include=<script src="source/jsonp.php?callback=alert('xss');"></script>

image-20230909115222664

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/150908.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React18学习

17、React_JSX的注意事项 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>JSX的注意</title><script src"./script/react.development.js"></script><script src"…

数据结构-优先级队列(堆)

文章目录 目录 文章目录 前言 一 . 堆 二 . 堆的创建(以大根堆为例) 堆的向下调整(重难点) 堆的创建 堆的删除 向上调整 堆的插入 三 . 优先级队列 总结 前言 大家好,今天给大家讲解一下堆这个数据结构和它的实现 - 优先级队列 一 . 堆 堆&#xff08;Heap&#xff0…

林沛满-Wireshark的提示

本文整理自&#xff1a;《Wireshark网络分析的艺术 第1版》 作者&#xff1a;林沛满 著 出版时间&#xff1a;2016-02 最近有不少同事开始学习 Wireshark&#xff0c;他们遇到的第一个困难就是理解不了主界面上的提示信息&#xff0c;于是跑来问我。问的人多了&#xff0c;我也…

VMProtect使用教程(VC++MFC中使用)

VMProtect使用教程(VCMFC中使用) VMProtect是一种商业级别的代码保护工具&#xff0c;可以用于保护VC MFC程序。以下是使用VMProtect保护VC MFC程序的步骤&#xff1a; 1. 下载并安装VMProtect,C包含库及目录。 2. 在VC MFC项目中添加VMProtectSDK.h头文件&#xff0c;并在需…

小谈设计模式(18)—适配器模式

小谈设计模式&#xff08;18&#xff09;—适配器模式 专栏介绍专栏地址专栏介绍 适配器模式角色分析目标接口&#xff08;Target&#xff09;源接口&#xff08;Adaptee&#xff09;适配器&#xff08;Adapter&#xff09; 核心思想应用场景Java程序实现输出结果程序分析123 优…

R语言通过接口获取网上数据平台的免费数据

大家好&#xff0c;我是带我去滑雪&#xff01; 作为一名统计学专业的学生&#xff0c;时常和数据打交道&#xff0c;我深知数据的重要性。数据是实证研究的重要基础&#xff0c;每当在完成一篇科研论文中的实证研究部分时&#xff0c;我都能深刻体会实证研究最复杂、最耗时的工…

零基础,想做一名网络安全工程师,我可以去哪里学,或者有什么建议?

这应该是全网最全的网络安全扫盲帖了&#xff01;发CSDN也有一段时间了&#xff0c;经常会有朋友在后台问我各种问题&#xff0c;比如“应该如何选方向”、“网络安全前景如何”、“怎么选适合的安全岗位”等等。于是今天借这个问题来给大家好好说说&#xff0c;如果你是零基础…

软件定制开发的细节|网站搭建|APP小程序定制

软件定制开发的细节|网站搭建|APP小程序定制 在定制开发的过程中&#xff0c;一些小的细节往往能够影响到最终的产品质量和用户体验。下面我将为大家介绍一些软件定制开发的细节。 第一&#xff0c;明确需求。在定制开发之前&#xff0c;我们需要明确客户的需求和目标。只有明确…

微信、支付宝、百度、抖音开放平台第三方代小程序开发总结

大家好&#xff0c;我是小悟 小伙伴们都开启小长假了吧&#xff0c;值此中秋国庆双节之际&#xff0c;小悟祝所有的小伙伴们节日快乐。 支付宝社区很用心&#xff0c;还特意给寄了袋月饼&#xff0c;愿中秋节的圆月带给你身体健康&#xff0c;幸福团圆&#xff0c;国庆节的旗帜…

【生成模型】解决生成模型面对长尾类型物体时的问题 RE-IMAGEN: RETRIEVAL-AUGMENTED TEXT-TO-IMAGE GENERATOR

介绍 尽管最先进的模型可以生成常见实体的高质量图像&#xff0c;但它们通常难以生成不常见实体的图像&#xff0c;例如“Chortai&#xff08;狗&#xff09;”或“Picarones&#xff08;食物&#xff09;”。为了解决这个问题&#xff0c;我们提出了检索增强文本到图像生成器…

漏刻有时数据可视化大屏引导页设计2(偏移卡片、动态数字翻牌、countUp.min.js)

引入外部文件 <title>漏刻有时引导页</title><script src="js/jquery-3.3.1.min.js"></script><script src="js/countUp.min.js"></script><link rel="stylesheet" href="css/common.css">…

乌班图20.04简易部署k8s+kuboard第三方面板

1. 问题&#xff1a; 使用官方只能说步骤挺全。 &#x1f604;出错&#xff1f;出错不管&#xff0c;无论是系统问题&#xff0c;版本兼容问题&#xff0c;网络插件问题&#xff0c;还是防火墙问题&#xff0c;我只能说特异性问题分析检索起来很难很难。 新人很难搞懂&#x…

玩转ChatGPT:DALL·E 3生成图像

一、写在前面 好久不更新咯&#xff0c;因为没有什么有意思的东西分享的。 今天更新&#xff0c;是因为GPT整合了自家的图像生成工具&#xff0c;名字叫作DALLE 3。 DALLE 3是OpenAI推出的一种生成图像的模型&#xff0c;它基于GPT-3架构进行训练&#xff0c;但是它的主要目…

ubuntu系统开机黑屏(只显示logo、左上角光标闪烁)问题

问题背景 在使用pycharm的时候&#xff0c;我使用了pycharm的快捷键ctrlaltF7&#xff0c;结果进入了ubuntu的ttf界面&#xff0c;由于之前不知道这个东西&#xff0c;百度一顿乱搜&#xff0c;以为显卡驱动出问题了&#xff0c;就把驱动删了&#xff0c;其实我完全可以ctrlal…

黑马JVM总结(二十七)

&#xff08;1&#xff09;synchronized代码块 synchronized代码块的底层原理&#xff0c;它是给一个对象进行一个加锁操作&#xff0c;它是如何保证如果你出现了synchronized代码块中出现了问题&#xff0c;它需要给这个对象有一个正确的解锁操作呢&#xff0c;加锁解锁是成对…

Kafka在企业级应用中的实践

前言 前面说了很多Kafka的性能优点&#xff0c;有些童鞋要说了&#xff0c;这Kafka在企业开发或者企业级应用中要怎么用呢&#xff1f;今天咱们就来简单探究一下。 1、 使用 Kafka 进行消息的异步处理 Kafka 提供了一个可靠的消息传递机制&#xff0c;使得企业能够将不同组件…

2023年9月:比特币逆势崛起!全球市场暴跌中的优异表现引人瞩目!

比特币在 9 月份上涨&#xff0c;而许多传统资产遭受了重大损失&#xff0c;凸显了加密货币的多元化特性。全球市场的压力似乎源于政府债券收益率上升和油价上涨。 随着比特币链上指标在本月的改善&#xff0c;强劲的基本面发挥了关键作用。稳定币市值在去年下降后趋于稳定&am…

数据中心负载测试中常见的挑战和解决方案有哪些?

数据中心负载测试中常见的挑战一个是搭建真实的测试环境&#xff0c;需要考虑到数据中心的规模、硬件设备、网络拓扑等因素&#xff0c;以确保测试的准确性和可靠性。在进行负载测试时&#xff0c;需要合理管理资源&#xff0c;包括服务器、存储设备、网络带宽等&#xff0c;以…

ssm+vue的公司人力资源管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的公司人力资源管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结…

【微信小程序开发】一文学会使用CSS样式布局与美化

引言 在微信小程序开发中&#xff0c;CSS样式布局和美化是非常重要的一部分&#xff0c;它能够为小程序增添美感&#xff0c;提升用户体验。本文将介绍如何学习使用CSS进行样式布局和美化&#xff0c;同时给出代码示例&#xff0c;帮助开发者更好地掌握这一技巧。 一、CSS样式布…