首页 > 其他分享 >DVWA 靶场 CSP Bypass 通关解析

DVWA 靶场 CSP Bypass 通关解析

时间:2024-06-22 14:28:39浏览次数:21  
标签:Web 安全 攻击 DVWA 漏洞 应用程序 Bypass CSP

前言

DVWA代表Damn Vulnerable Web Application,是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。

DVWA提供了一系列的漏洞场景和练习环境,用户可以通过攻击这些漏洞场景来学习和实践漏洞利用技术。这些漏洞包括常见的安全问题,如SQL注入、跨站脚本攻击(XSS)、文件包含漏洞等。通过攻击这些漏洞,用户可以了解漏洞的原理、影响和防御方法。

DVWA提供了不同的安全级别,从低到高,以满足不同技能水平的用户需求。用户可以根据自己的能力选择适当的安全级别,并进行相应的练习和挑战。

DVWA还提供了一些额外的功能和工具,如Web代理、密码破解、弱密码检测等,以帮助用户更好地理解和处理漏洞问题。

总之,DVWA是一个用于学习和练习Web应用程序漏洞的开源应用程序。它提供了一系列的漏洞场景和练习环境,帮助安全专业人员和爱好者提高对Web应用程序安全的理解和实践能力。通过使用DVWA,用户可以加深对Web应用程序漏洞的认识,并学习如何有效地保护Web应用程序免受攻击

介绍

内容安全策略(Content Security Policy,CSP)是一种用于防止跨站脚本(XSS)和其他代码注入攻击的安全机制。通过设定 CSP 头,网站可以指定哪些资源可以加载和执行。然而,即使有 CSP,攻击者有时仍然能找到方法绕过这些策略进行攻击。以下是对 CSP 绕过(CSP Bypass)的详细介绍,包括其原理、常见技术、攻击手法、防御措施以及实例分析。

一、CSP 绕过原理

CSP 绕过的核心在于找到策略配置中的漏洞或利用其他技术手段,使恶意代码能够在受保护的网站上执行。常见的 CSP 绕过原因包括:

  • 策略配置错误:策略过于宽松或存在配置错误。
  • 浏览器实现漏洞:浏览器对 CSP 实现中的漏洞。
  • 资源注入:利用不受 CSP 控制的资源进行攻击。

二、常见技术和攻击手法

  1. 策略配置错误

    • 宽松的 default-src:允许来自不安全来源的资源加载。
    • 过多的 unsafe-inlineunsafe-eval:允许内联脚本和字符串解析为代码。
    • 不适当的资源域名白名单:包含潜在不安全的域名。
  2. 数据注入

    • JSONP:利用 JSONP 响应执行代码。
    • 跨域资源:在宽松的 CSP 策略中,利用跨域资源进行代码执行。
  3. 混合内容

    • HTTP 和 HTTPS 混合:利用 HTTP 加载不受信任的脚本。
  4. DOM XSS

    • DOM 操作漏洞:利用不安全的 DOM 操作,如 innerHTMLeval,等。
  5. 服务端漏洞

    • 服务器端渲染注入:在服务器端生成内容时存在注入漏洞。

三、防御措施

  1. 严格的 CSP 配置

    • 最小特权原则:只允许加载和执行必需的资源。
    • 避免 unsafe-inlineunsafe-eval:尽可能避免使用这些指令。
    • 详细指定资源来源:明确指定允许加载资源的来源,不使用通配符(*)。
  2. 输入验证和输出编码

    • 验证和清理用户输入:防止恶意数据进入页面。
    • 正确编码输出:确保输出数据不会被浏览器解析为代码。
  3. 监控和报告

    • CSP 报告机制:启用 CSP 报告,将策略违规行为发送到指定服务器以进行监控和修复。
  4. 安全开发实践

    • 使用安全库和框架:选择安全的开发库和框架,避免直接操作 DOM。
    • 安全审计:定期进行代码审计和安全测试,发现和修复潜在漏洞。

一、Low

源码对 HTTP 头定义了 CSP 标签,从而定义了可以接受外部 JavaScript 资源的白名单,通过抓包也可以知道是哪些网站

可以先用它给出了网址实验一波 

效果如下,通过加载外界的 JS 实现 XSS 攻击

二、Medium

这一关禁用了外部加载,所以要采用内联

源码如下,HTTP 头信息中的 script-src 的合法来源发生了变化。script-src 还可以设置一些特殊值,unsafe-inline 允许执行页面内嵌的 <script> 标签和事件监听函数,nonce 值会在每次 HTTP 回应给出一个授权 token。 

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

通过内联 JavaScript 代码,注入时直接令 nonce 为设定好的值即可 

三、High

这一关没有输入框,点击按钮计算数值

在网络中查看源码

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

源码分析推测 callback 存在注入点,抓包后更改参数实现 XSS 攻击

攻击成功!!! 

 

四、结论

CSP 是一种强大的防御机制,可以有效防止 XSS 和其他代码注入攻击。然而,配置不当或依赖不安全的资源可能导致 CSP 被绕过。通过严格的 CSP 配置、输入验证和输出编码、安全开发实践以及定期安全测试,可以增强网站的安全性,防止 CSP 绕过攻击。开发者应深入理解 CSP 的工作原理和潜在的攻击手法,以构建更安全的网络应用。

标签:Web,安全,攻击,DVWA,漏洞,应用程序,Bypass,CSP
From: https://blog.csdn.net/2302_82189125/article/details/139881307

相关文章

  • DVWA 靶场 Open HTTP Redirect 通关解析
    前言DVWA代表DamnVulnerableWebApplication,是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。DVWA提供了一系列的漏洞场景和练习环境,用户可以通过......
  • DVWA 靶场 Authorisation Bypass 通关解析
    前言DVWA代表DamnVulnerableWebApplication,是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。DVWA提供了一系列的漏洞场景和练习环境,用户可以通过......
  • CSP历年复赛题-P9749 [CSP-J 2023] 公路
    原题链接:https://www.luogu.com.cn/problem/P9749题意解读:有n个加油点,每个加油点距离、油价不同,每升油走d公里,加油必须整升加,问走完所有点最少加油的金额。解题思路:本题有两种思考方式:1、先走,再看油从哪里加依次走到第2,3,4......n个加油点,看每两个点之间距离需要加多少油由......
  • CSP历年复赛题-P9748 [CSP-J 2023] 小苹果
    原题链接:https://www.luogu.com.cn/problem/P9748题意解读:n个苹果,每天从第1个开始,每三个苹果拿走第一个,问几天拿完,最后一个苹果第几天拿走。解题思路:由于每三个苹果拿一个,每天拿走的苹果数量是⌈n/3⌉,即(n+2)/3n每天都要减去(n+2)/3,直到n为0,记录天数即可得到总天数最......
  • 2024年BCSP-X初赛真题解析(小高组)
    学习C++从娃娃抓起!学习下帝都的对标CSP的BCSP考试,记录下CSP-J备考学习的每一个瞬间。单选题第1题计算机在工作过程中突然停电,()中的信息不会丢失。A.显存B.寄存器C.RAMD.ROM【答案】:D第2题中缀表达式a*(b+c)-d的后缀形式是()。A.abcd*±B.abc+*d-C.abc*+d-D.-+......
  • CSP历年复赛题-P8815 [CSP-J 2022] 逻辑表达式
    原题链接:https://www.luogu.com.cn/problem/P8815题意解读:计算逻辑表达式的值以及&,|短路操作的次数。解题思路:又是一道经典的中缀表达式的变形问题,如果对中缀表示式如何求值不理解,移步https://www.acwing.com/problem/content/3305/进行复习如果对表示式如何构建树形结构以及......
  • 如何使用csproj构建C#源代码组件NuGet包?
    一般我们构建传统的NuGet包,都是打包和分发dll程序集文件。至于打包和分发C#源代码文件的做法,比较少见。那么这种打包源代码文件的做法,有什么优点和缺点呢?优点:方便阅读源代码。方便断点调试。减少Assembly程序集模块加载个数。更利于发布期间的剪裁(PublishTrimmed选项)。......
  • 如何使用csproj构建C#源代码组件NuGet包?
    一般我们构建传统的NuGet包,都是打包和分发dll程序集文件。至于打包和分发C#源代码文件的做法,比较少见。那么这种打包源代码文件的做法,有什么优点和缺点呢?优点:方便阅读源代码。方便断点调试。减少Assembly程序集模块加载个数。更利于发布期间的剪裁(PublishTrimmed选项)。......
  • 如何使用csproj构建C#源代码组件NuGet包?
    一般我们构建传统的NuGet包,都是打包和分发dll程序集文件。至于打包和分发C#源代码文件的做法,比较少见。那么这种打包源代码文件的做法,有什么优点和缺点呢?优点:方便阅读源代码。方便断点调试。减少Assembly程序集模块加载个数。更利于发布期间的剪裁(PublishTrimmed选项)。......
  • 如何使用csproj构建C#源代码组件NuGet包?
    一般我们构建传统的NuGet包,都是打包和分发dll程序集文件。至于打包和分发C#源代码文件的做法,比较少见。那么这种打包源代码文件的做法,有什么优点和缺点呢?优点:方便阅读源代码。方便断点调试。减少Assembly程序集模块加载个数。更利于发布期间的剪裁(PublishTrimmed选项)。......