DVWA CSP Bypass:策略配置、信任边界与绕过条件

Lee

文章状态:待复验
本文由 Lee 的 CSDN 原创学习记录迁移并重新整理。以下操作仅限自建环境、CTF 与明确授权靶场,请勿用于未授权目标。

学习目标

  • 读懂常见 CSP 指令及其信任边界
  • 理解允许列表为何可能被受信任端点反向利用
  • 设计基于 nonce 或 hash 的更严格脚本策略

实验说明

  • 难度:中级
  • 范围:本地或公开授权靶场
  • 复验状态:正文已完成格式迁移,关键结论将在后续使用固定环境重新验证

原始实验记录

CSP(content security policy):

个人理解是类似于白名单的东西,通过http头部或者标签声明,来控制网页可以加载哪些外部资源

ps:Meta标签是html文档里的一种标签,用于提供网页的元信息

也就是说,CSP禁止所有未被明确允许的内容,只执行符合条件的资源

关键指令:script-src:

script-src指定哪些来源的JavaScript可以被浏览器加载和执行

LOW

先分析一下源码

实验截图 1
实验截图 1

通过这一行可以得到允许的来源

这里选用https://pastebin.com来进行攻击,在newpaste里写

1
alert("rerelee")

实验截图 2
实验截图 2

Creat New Paste ,在出现的页面里面点击download,然后右键复制下载连接

实验截图 3
实验截图 3

实验截图 4
实验截图 4

返回dvwa,在输入框里输入我们刚才复制的代码,然后Include提交!回显成功!

实验截图 5
实验截图 5

MEDIUM

观察源码,发现直接泄露了,那就稍作改动输入

实验截图 6
实验截图 6

实验截图 7
实验截图 7
回显成功!

HIGH

看到high的界面,我们发现输入框已经没了…..

打开high.js,直接在里面进行修改

实验截图 8
实验截图 8

试了好几种方法都改动不了,于是打开控制台

输入这一串把前面的js文件覆盖掉

1
2
3
4
5
6
solveSum = function(obj) {
alert("rerelee"); // 强制弹窗
if ("answer" in obj) {
document.getElementById("answer").innerHTML = obj['answer'];
}
};

回车后回显成功

实验截图 9
实验截图 9

IMPOSSIBLE

分析源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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>
';

实验截图 10
实验截图 10

优化的地方:

  1. csp更加严格,只允许加载同源脚本self

实验截图 11
实验截图 11

3. 通过document.createElement动态加载脚本确保来源是可信的

防御与复盘

  • 优先使用 nonce 或 hash,减少 unsafe-inline 和宽泛域名允许列表。
  • 检查允许来源中的 JSONP、开放重定向和用户可控内容端点。
  • 先以 Report-Only 观察违规报告,再逐步收紧正式策略。

原文出处

  • 标题: DVWA CSP Bypass:策略配置、信任边界与绕过条件
  • 作者: Lee
  • 创建于 : 2025-06-05 19:10:59
  • 更新于 : 2026-09-04 00:00:00
  • 链接: https://leeei.site/2025/06/05/DVWA-CSP-Bypass/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。