每天重复的工作,总算在几个月之后又找到了一丝乐趣。这两天测试遇到了几个还算有意思的XSS,所以记录并分享一下。


【一】 简单介绍一下第一个XSS的情况:

  • 输入的位置在url中
  • 直接输入<,",等特殊字符会返回400,如图
  • 尝试输入url编码,发现输入%3c是返回错误页面,如图
  • 偶然发现输入%20返回正常,如图
  • 继续测试,在%20后面输入%3c结果还是返回错误页面,如图
  • 但是在%20和%3c中间随意输入一个字符,就能够绕过检测了,如图
  • 这样输入%27;%20a%3cscript%3ealert(1)%3c%2fscript%3e就 可以了 总结: 其实一开始是因为试了很多方法都不行,粘贴了之前同事测试的语句发现可以写入,但是并没有执行,觉得很奇怪,然后在此基础上输入了%3c居然没有报错,后面测试发现只要输入%20,只要%20不和%3c连在一起,无论%20在哪个位置都可以。输入%0a,%0d不行,并且在输入了%20的情况下如果输入< 也是会报错的。所以可以说有时候%20有奇效。当然也不知道开发怎么过滤的==

【二】 下面来介第二个绍一下XSS:

  • 看了网站一圈能输入的位置都进行了前端字符类型限制,也就是不让输入特殊字符,抓包更改,后端也有校验,无法绕过。然后在某个功能发现有个编辑器,正常输入抓包发现传输过程中对编辑器自带的<>进行URL二次编码,如图
  • 尝试直接在编辑器输入onclick=alert(2),会返回错误,如图
  • 抓包,修改编辑器的值为<input>,发现返回页面的时候自动去掉了。
  • 然后尝试对<input>进行二次URL编码,能够执行。进而输入<input onclick=alert(1)>的二次URL编码,发现会提示非法字符,但是单个输入onclick,alert,alert(1),onclick=alert(1)的二次URL编码都没问题,想着会不会过滤整个语句,进而输入<input type=aa onclick=confirm(1) s=1>的二次URL编码,成功执行,如图 总结: 第一次遇到这种在正常语句中穿插其他无用的字段可以绕过检测的,后来问了开发,他们说之所以能够绕过是因为我提交的二次url编码在过滤器是以URL编码的形式展示的,所以拦截器并没有拦截,然后在数据库解码执行。但是还是有很多疑点,不过也没有深入了。修改方法就是在拦截器递归解码,这样就防止了多次编码。

【三】 第三个XSS是同事发现的,觉得难得一遇,所以分享一下

  • 输入点是HTTTP头部的XFF字段,因为可以利用XFF头伪造IP,便尝试在XFF头输入XSS代码,但是有长度限制,他这里利用构造注释/**/进行绕过。
  • 经过测试发现长度限制为20字符,页面显示IP是最后输入的IP地址在最前面,所以这里构造注释需要从后往前输入。
  • 绕过语句,如图
  • 不过输入的顺序应该是倒过来的,最后的效果图,emmmm......根本看不清 总结: 以前也有听过这种方法,一直没有遇到过,这次测试中发现这个问题,还是练了练手,觉得思路方法都挺不错的。

以上就是这次分享的XSS,感觉表述的并不好,其实就是想分享三个思路。大佬勿喷~~~