Xss Bypass dog
2019-09-29 10:20:20 Author: xz.aliyun.com(查看原文) 阅读量:185 收藏

前言


之前写过类型的水文,感觉写的一般。重新再苟了一遍。

Fuzz


简单粗暴的Fuzz,是我的首选,可以从Github,推特以及一些xss_payload分享网站,收集到足够的xss_payload进行Fuzz测试。

首先我们先查看下,waf拦截包的差异,正常提交。

提交恶意xss_payload

比较两次提交,waf拦截时,数据包出现2548这个关键数字。

接下来使用BurpIntruder模块来Fuzz,导入payload。

fuzz结束后,点击HTTP历史标签下发的Filter弹出筛选过滤器界面,选择第三个,与关键字2548匹配上的将不再显示。

剩下的都是waf不拦截的。

fuzz的优点是速度,当然xss_payload的质量也影响最终的结果,所以平时多收集些字典满好的。

拼接与编码


这方面的技巧蛮多的,使用一些对象或函数,让payload变形。

拼接方面,使用诸如top this self parent frames content window这些对象。

直接使用这些对象连接函数,也可以绕过WAF。

拼接字符串。

可以看到alert函数被分成2个字符串,再拼接在一起。

编码,常见的你可能想到利用evalsetTimeout()setInterval等。

常见的base64编码

前几天看来一篇国外翻译的文章,看到一个有趣的例子。

alertJS16编码成\x61\x6c\x65\x72\x74,成功弹框。

我自己尝试了下,也用了不同的编码,发现都可以绕过waf,并成功弹框。

然后我又将编码拆分,发现也可以弹框。

<body onpageshow=self['\x61\x6c\x65'%2B'\x72\x74'](1)>

接下来就是,一些特殊函数的利用。

concat()在实际应用中,不仅仅可以用于连接两个或多个数组,还可以合并两个或者多个字符串。

join函数将数组转换成字符串。

后记


没有太多的亮点,只是在一些基础上变化了下,学的比较浅,如有错处,请师傅斧正。

参考


https://www.anquanke.com/post/id/180187


文章来源: http://xz.aliyun.com/t/6415
如有侵权请联系:admin#unsafe.sh