DVWA CSP Bypass:策略配置、信任边界与绕过条件
文章状态:待复验
本文由 Lee 的 CSDN 原创学习记录迁移并重新整理。以下操作仅限自建环境、CTF 与明确授权靶场,请勿用于未授权目标。
学习目标
- 读懂常见 CSP 指令及其信任边界
- 理解允许列表为何可能被受信任端点反向利用
- 设计基于 nonce 或 hash 的更严格脚本策略
实验说明
- 难度:中级
- 范围:本地或公开授权靶场
- 复验状态:正文已完成格式迁移,关键结论将在后续使用固定环境重新验证
原始实验记录
CSP(content security policy):
个人理解是类似于白名单的东西,通过http头部或者标签声明,来控制网页可以加载哪些外部资源
ps:Meta标签是html文档里的一种标签,用于提供网页的元信息
也就是说,CSP禁止所有未被明确允许的内容,只执行符合条件的资源
关键指令:script-src:
script-src指定哪些来源的JavaScript可以被浏览器加载和执行
LOW
先分析一下源码

通过这一行可以得到允许的来源
- ‘self ‘:同源脚本 (和当前页面有相同协议,域名,端口的js文件)
- https://pastebin.com
- hastebin.com
- example.com
- code.jquery.com
- https://ssl.google-analytics.com
这里选用https://pastebin.com来进行攻击,在newpaste里写
1 | alert("rerelee") |

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


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

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


HIGH
看到high的界面,我们发现输入框已经没了…..
打开high.js,直接在里面进行修改

试了好几种方法都改动不了,于是打开控制台
输入这一串把前面的js文件覆盖掉
1 | solveSum = function(obj) { |
回车后回显成功

IMPOSSIBLE
分析源码:
1 | <?php |

优化的地方:
- csp更加严格,只允许加载同源脚本self

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 进行许可。