Broken表哥日常挖掘XSS与绕WAF
2019-09-18 11:22:20 Author: mp.weixin.qq.com(查看原文) 阅读量:91 收藏

oxo1 APP数据接口中的XSS

一般这种XSS多出现在APP微信小程序当中,其原理是,服务器未控制返回包中的Content-Type,导致本来是JSON格式的数据,会用默认的html来解析

首先我发布了一条评论,评论的内容为<svg .....>

接下来调用接口来查询发布的评论,可以发现返回的是JSON数据,而Content-Type却是text/html,导致浏览器会解析数据中的标签

而服务器后端使用的是Request来接收数据的,所以可以把POST换为GET,两个缺陷组合在一起也就导致了XSS

对于这种XSS一般是有一个就有一串,如果返回的数据可控,那么每一个接口都可以是一个XSS的触发点

oxo2 XSS绕WAF的两个实例

第一个例子,在查询框中由于没有对双引号进行转义所以存在反射型XSS

多次测试后发现onload、onclick、onfocus等一些常用的属性都被WAF禁了

只能祭出我的绕WAF万能payload <details open ontoggle=testdemo>

使用ontoggle属性能绕过WAF,但是属性的值被转换为大写了,之前说过使用HTML实体编码可以绕过

alert(1)转换为HTML实体编码 &#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;

转换编码后还是被检测了

这种很好绕,只要将其中一个字符的HTML编码改为&#x00000xx格式WAF就检测不出来了

第二个例子,跟第一个例子如出一辙,都是没有在输入框对双引号进行转义

WAF同样也是过滤了onload onclick onfocus等一些常用属性,这次连我的绕WAF万能payload都给过滤了

没办法,那只能拿出我的第二个payload <input type=submit formaction=javascript:alert`1`>

还是没有绕过去,因为WAF还过滤了javascript:跟第一个例子一样,使用HTML实体编码javascript:转换为javascrip&#x74;:

XSSWAF的关键就是绕过被禁用的属性,平时可以去收集一点冷门的属性,只要绕过被禁用的属性,一般的WAF就拦不住你了


文章来源: https://mp.weixin.qq.com/s/54a-g_qhlIxFpmRpodsDjA
如有侵权请联系:admin#unsafe.sh