DVWA之CSP Bypass

来自图中这几个网站就属于白名单,也就是说只有这几个网站的资源可以被加载 。
-src 'self’代表着只能加载符合同源策略的文件,直接插入至 html 页面中的静态标签将无法执行 。
其实在源码里DVWA有给我们提供一个用于测试的文件
就是这个,我们可以访问一下
现在假设这个文件就是我们自己写的,因为他的原地址是白名单里面包含的,所以按道理说我们引入这个文件页面应该会有弹窗输出,只要能弹出,我们就可像XSS一样拿到,我们尝试一下复制这个网址,加载一下
发现并没有弹窗,而且网站会有报错,说我们上传的文件类型不符
这个其实靶场后期做的一个设置,text文件类型并不匹配,那我们就按照自己的方法做,重要的是一定要设置文件类型
打开
文件类型一定要设置成JS文件,这样才不会出现上面的报错
一下,下载好的文件其实就可以引用
出现弹窗,搞定
中级
查看源码
Whatever you enter here gets dropped directly into the page, see if you can get an alert box to pop up.
';

在允许-的情况下,内嵌都可以执行,当然可以直接执行本页面的JS,如输入即可
首先,代码通过设置$变量定义了一个内容安全策略的头部 。通过"-src ‘self’ ‘-’ ‘nonce-=’"指令设置 nonce ,其目的是为了提供额外的安全性,确保只有具有相应 nonce 的脚本能够被执行 。这样可以防止未经授权的脚本注入攻击 。
然后使用($);将该内容安全策略头部应用于响应头 。
接下来,通过(“X-XSS-: 0”);这行代码,禁用了浏览器的跨站脚本攻击(XSS)防护机制,以便内联的弹窗警告框能够正常工作 。
接下来的代码段是一个表单,允许用户输入内容,并将该内容直接输出到页面中 。用户可以在文本框中输入任意内容,这些内容将被添加到页面的主体部分 。
-:允许使用内联资源,如内联
nonce-:仅允许特定的内联脚本块
nonce=“=”
总而言之就是我们加载的东西不仅要是固定网址里的还要携带特定标签 。
这个时候我们可以直接引入特定的源码:

既是内联资源,又带有标签

DVWA之CSP Bypass

文章插图
高级
这里的源码包括两部分
The page makes a call to ' . DVWA_WEB_PAGE_TO_ROOT . '/vulnerabilities/csp/source/jsonp.php to load some code. Modify that page to run your own code.
1+2+3+4+5=
';

function clickButton() {var s = document.createElement("script");s.src = "http://www.kingceram.com/post/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();});}