当前位置: 首页 > news >正文

dvwa13——CSP Bypass

CSP(content security policy):

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

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里写

alert("rerelee")

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

 

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

MEDIUM

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

 回显成功!

HIGH

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

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

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

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

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

回车后回显成功 

IMPOSSIBLE

分析源码:

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

优化的地方:

  1. csp更加严格,只允许加载同源脚本self
  2. 通过document.createElement动态加载脚本确保来源是可信的

❀❀❀ 完结撒花!!❀❀❀

http://www.xdnf.cn/news/890353.html

相关文章:

  • ubuntu 端口复用
  • Ubantu-Docker配置最新镜像源250605
  • PHP 打印扩展开发:从易联云到小鹅通的多驱动集成实践
  • 打造高效多模态RAG系统:原理与评测方法详解
  • Cad 反应器 cad c#二次开发
  • 【复杂指令遵循 Benchmark】论文分享:CodeIF-Bench
  • 软件开发中的“需求镀金”现象如何避免?
  • 大屏缩放视频比例适配记录
  • Canvas的使用
  • 计算机网络安全问答数据集(1788条) ,AI智能体知识库收集! AI大模型训练数据!
  • AI04A AI模块,16通道,TC / mV
  • Python中的self参数介绍
  • [GESP202412 五级] 奇妙数字 题解
  • 核心机制:延时应答,捎带应答,面向字节流
  • Shopify 主题开发:移动端菜单响应式设计要点
  • jdbc查询mysql数据库时,出现id顺序错误的情况
  • Android基础回顾】六:安卓显示机制Surface 、 SurfaceFlinger、Choreographer
  • 机器学习——XGBoost
  • 【Emgu CV教程】11.2、Canny边缘检测
  • 【计组】真题 2015 大题
  • ModuleNotFoundError No module named ‘torch_geometric‘未找到
  • windows VeraCrypt – 磁盘加密工具
  • Python实例题:Python计算二元二次方程组
  • Life:Internship finding
  • RMSE可以融合均值与标准差
  • 核货宝订货平台源码:构建高效智能订货系统,驱动企业数字化转型
  • Nature Methods | OmiCLIP:整合组织病理学与空间转录组学的AI模型
  • win32相关(远程线程和远程线程注入)
  • React 第五十四节 Router中useRevalidator的使用详解及案例分析
  • Next打包导出静态文件(纯前端),不要服务器端(node), 隐藏左下角调试模式