实战 | 记某个有趣的xss挖掘之旅

最近某次挖洞的过程中遇到一个非常有意思的xss,记录一下与大家分享,全文已脱敏

存在xss的可疑点

测试时某被动扫描器打到了一个疑似xss的点

在这里插入图片描述

随手掏万能验证payloadconsole.log(111),但是.被转换成了_,空格也被转换成了_

在这里插入图片描述

空格通过注释/**/解决问题,但最大的问题还是在于.被拦截了

各种编码尝试一波,无果,开始尝试诸如alert,prompt,confirm,eval都以被拦截告终

在这里插入图片描述

又尝试了一波,fuzz各种字符,关键词,看看有没有被置换为空的,依旧失败告终

走出去

看着自己珍藏的payload,既然script标签里面拦截的这么死,换个思路,可不可以闭合标签,出去试试

曾梦想仗剑走天涯,但是出门就被现实打了回来

</script>可以用于闭合上一个script,但是<script>被拦截,无法去闭合尾巴的</script>

在这里插入图片描述

在这里插入图片描述

但是,使用<sript>去闭合的时候,chrome浏览器会做一个修正,自动闭合(原理不知,等一个评论区大师傅)

在这里插入图片描述

good,成功出来

再之后,尝试<object data=data:text/html;base64,这种bs64结构的payload

然后被拦截html后面接;,

在这里插入图片描述

再尝试data:image/svg+xml;base64,,依旧被xml;格式所拦截

不行了,弃了弃了,太难了

走回来

找了个大师傅问问看有没有啥思路,大师傅上来就一句,“你闭合script出去干嘛”

我解释道:“里面被拦截了”

“我不信”

“嘿,我试给你看”

“!!!”

······

神奇的事情出现了,闭合了script之后,前半截的script内不再被waf拦截,所有的函数都被释放了,除了.

在这里插入图片描述

但是有了eval害怕啥,成功拿到cookies

最终payload

%22%3a%22%22}%3beval(%22\u0063\u006f\u006e\u0073\u006f\u006c\u0065\u002e\u006c\u006f\u0067\u0028\u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0063\u006f\u006f\u006b\u0069\u0065\u0029%22)%3b%3C/script%3E%3Cobject/**/data%3E%3C/object%3E%3Csript%3Evar/**/b%3d{
    
    %229533

此文又名《一顿操作猛如虎,一看赏金十块五

猜你喜欢

转载自blog.csdn.net/wy_97/article/details/105047829