首页 > 编程语言 >DVWA靶场CSP Bypass (漏洞绕过) 漏洞通关及源码审计

DVWA靶场CSP Bypass (漏洞绕过) 漏洞通关及源码审计

时间:2025-01-13 21:11:06浏览次数:1  
标签:脚本 DVWA 漏洞 源码 solve document com CSP

CSP Bypass

CSP Bypass(Content Security Policy Bypass)漏洞涉及的是绕过网站部署的内容安全策略(Content Security Policy,CSP)限制,从而执行潜在的恶意操作。CSP 是一种安全机制,用于防止跨站脚本(XSS)、数据注入攻击等。其通过限制网页能够加载和执行的内容来源来增强浏览器的安全性。

low

查看源码可以发现被信任的网站有https://pastebin.com、hastebin.com、www.toptal.com、example.com、code.jquery.com、https://ssl.google-analytics.com

打开https://pastebin.com,输入“alert(xss);”

然后点击“Create New Paste”就可以得到下一步

点击“raw”,复制得到的网址。

然后输入到输入框即可

源码审计

只允许来自https://pastebin.com example.com code.jquery.com https://ssl.google-analytics.com 这几个网站的js脚本

<?php
$headerCSP = "Content-Security-Policy: script-src 'self' https://pastebin.com  example.com code.jquery.com https://ssl.google-analytics.com ;"; // 允许从自身(self)、pastebin.com、example.com、code.jquery.com 和 google analytics 发送的 js 脚本。
header($headerCSP); // 设置响应头的内容安全策略。
# https://pastebin.com/raw/R570EE00 // 这是一个外部链接,可能是指向某个资源的地址。
?>
<?php
if (isset ($_POST['include'])) { // 检查表单是否提交
    $page['body'] .= "
        <script src='" . $_POST['include'] . "'></script> // 如果提交,获取输入的 URL,并将其作为脚本引入
    ";
}
$page['body'] .= '
<form name="csp" method="POST"> // 创建一个表单,方法为 POST
    <p>You can include scripts from external sources, examine the Content Security Policy and enter a URL to include here:</p> // 提示用户可以输入外部脚本的 URL
    <input size="50" type="text" name="include" value="" id="include" /> // 输入框,用户输入的 URL
    <input type="submit" value="Include" /> // 提交按钮
</form>
';

medium

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

输入注释内容

源码审计

nonce参数定义了如果 CSP 上下文中定义了 nonce,则只有与该值匹配的内联脚本能够运行,其他不带或不匹配的脚本会被阻止,所以我们可以使用示例脚本来绕过

<?php
$headerCSP = "Content-Security-Policy: script-src 'self' 'unsafe-inline' 'nonce-TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=';"; // 设置内容安全策略,允许从自身、自定义内联脚本及具有特定随机数值的脚本。
header($headerCSP); // 设置响应头的内容安全政策。
// 禁用 XSS 保护,以便内联的警报框能够工作
header ("X-XSS-Protection: 0"); // 关闭跨站点脚本(XSS)保护。
# <script nonce="TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=">alert(1)</script> // 这是一个示例脚本,用于展示使用随机数值的内联脚本。
?>
<?php
if (isset ($_POST['include'])) { // 检查表单是否提交
    $page['body'] .= "
        " . $_POST['include'] . " // 如果提交,直接将用户输入的内容添加到页面中。
    ";
}

$page['body'] .= '
<form name="csp" method="POST"> // 创建一个表单,方法为 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>
';

high

注意这段代码source/jsonp.php?callback=solveSum

抓包修改

也是可以的

源码审计

服务器:

设置了只允许来自同源的脚本


复制代码

<?php
$headerCSP = "Content-Security-Policy: script-src 'self';"; // 设定内容安全策略,只允许加载来自同源的脚本

header($headerCSP); // 发送内容安全策略的 HTTP 头部

?>
<?php
if (isset ($_POST['include'])) { // 检查是否有通过 POST 请求包含的内容
$page['body'] .= "
    " . $_POST['include'] . " // 将包含的内容添加到页面主体中
";
}
$page['body'] .= '
<form name="csp" method="POST"> // 创建一个表单,使用 POST 方法提交
    <p>该页面调用 ' . DVWA_WEB_PAGE_TO_ROOT . '/vulnerabilities/csp/source/jsonp.php 来加载一些代码。修改该页面以运行您自己的代码。</p> // 提示用户该页面会调用的 URL
    <p>1+2+3+4+5=<span id="answer"></span></p> // 显示一个简单的数学表达式
    <input type="button" id="solve" value="解答这个和" /> // 一个按钮,用于触发计算
</form>

<script src="source/high.js"></script> // 加载一个外部 JavaScript 文件
';

客户端:

s.src = "source/jsonp.php?callback=solveSum";设置了callback参数,并且密钥过滤,所以我们可以利用此参数绕过

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();
    });
}

impossible

源码审计

服务端:

csp只允许来自外部脚本

<?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>
';

客户端:

 function clickButton() {
    var s = document.createElement("script");
    s.src = "source/jsonp_impossible.php";
    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();
    });
}

标签:脚本,DVWA,漏洞,源码,solve,document,com,CSP
From: https://www.cnblogs.com/GuijiH6/p/18669362

相关文章

  • 2025毕设springboot 服装搭配推荐系统论文+源码
    系统程序文件列表开题报告内容研究背景随着时尚产业的蓬勃发展,个性化与多样化的服装需求日益增长,消费者在面对琳琅满目的商品时,往往难以快速找到符合自身风格与需求的搭配方案。传统的购物模式受限于时间、空间以及个人审美经验的局限,难以满足现代消费者对于高效、精准搭配......
  • 2025毕设springboot 扶贫助农与产品合作系统论文+源码
    系统程序文件列表开题报告内容研究背景在当今社会,扶贫助农已成为国家发展的重要战略之一。随着信息技术的飞速发展和互联网的普及,如何利用现代科技手段促进农村地区经济发展,提高农民收入,成为亟待解决的问题。传统的扶贫方式往往局限于物质援助,缺乏持续性和内生动力。因此,构......
  • 2025毕设springboot 峰数公司医疗设备管理系统论文+源码
    系统程序文件列表开题报告内容研究背景随着医疗技术的不断进步和医疗需求的日益增长,医疗设备在现代医疗体系中扮演着至关重要的角色。峰数公司作为一家专注于医疗设备供应与服务的公司,面临着设备种类繁多、管理复杂、信息碎片化等挑战。传统的设备管理手段已难以满足当前高......
  • JSP老年保健品销售系统97578--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、课题背景及意义随着人口老龄化的加剧,老年保健品市场需求不断增长。然而,传统的销售方式已经无法满足现代老年人的购物需求。因此,开发一个高效、......
  • JSP篮球学员信息管理系统i5o70(程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、项目背景与意义随着篮球运动的普......
  • JSP兰州市邮政公司新邮预订户管理信息系统pk277(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、课题名称兰州市邮政公司新邮预订户管理信息系统二、研究背景与意义随着电子商务的快速发展和人们对快递服务需求的增加,邮政公司成为现代社会......
  • JSP课堂考勤管理系统(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、项目背景随着教育信息化的快速发......
  • 2025毕设springboot 飞扬城市交通系管理系统设计与实现论文+源码
    系统程序文件列表开题报告内容研究背景随着城市化进程的加速,飞扬城市交通拥堵、交通事故频发等问题日益凸显,给市民的日常出行和城市的经济发展带来了严峻挑战。传统的交通管理方式已难以满足当前复杂多变的交通需求,因此,构建一个高效、智能的城市交通管理系统显得尤为重要。......
  • 2025毕设springboot 飞机票管理系统论文+源码
    系统程序文件列表开题报告内容研究背景随着全球航空业的迅猛发展,飞机已经成为现代社会中不可或缺的交通工具之一。伴随着航班数量的激增,机票管理成为航空公司运营中的关键环节。传统的机票管理方式往往依赖于人工操作,不仅效率低下,还容易出现信息错漏等问题。特别是在高峰期......
  • 2025毕设springboot 非全日制研究生管理系统设计与实现论文+源码
    系统程序文件列表开题报告内容研究背景随着教育改革的深入和终身学习理念的普及,非全日制研究生教育逐渐成为我国高等教育体系中的重要组成部分。非全日制研究生群体因其学习方式的特殊性,如学习时间分散、学习地点灵活等,给高校的教学管理带来了诸多挑战。传统的管理方式已难......