XSS跨站——WAF绕过及修复

XSS跨站——WAF绕过及修复

0.前言

  XSS跨站漏洞的常规WAF绕过思路和其他漏洞基本上是差不多的,比如标签语法替换、特殊符号干扰、提交方式更改、垃圾数据溢出、加密解密算法以及结合其他漏洞类型绕过等等,我们依旧是以安全狗为例子

1.绕过方法——标签语法替换

  我们可以用到不同函数进行语法的替换,比如使用herf函数来请求地址

,只是herf需要构造出一个合理的闭合语句,如下图

  将多余的-号去掉,会显示被拦截,按我们就加入一些#等干扰符的代入

  从防护的角度出发,由于攻击网站是无法预知的,所以一般检测是在于<>符号、herf函数等,我们可以尝试通过在前面加入/进行绕过,因为JavaScript的语句闭合特性。一般通过Fuzz进行查找能够通过的标签。

2.绕过方法——特殊符号干扰

  首先输入跨站脚本的简单语句,通过修改判断检测的关键字符

  可以看到,我们的输入被WAF安全狗拦截,当我们输入<script时却能够通过,这时候可以判断他的字符审核机制是检测<>的闭合,有的还拦截部分语句的关键词如onlink等,接下来就要做拆分工作,通过一点点的减少语句的内容,判断检测情况

  可以看到,在减少的过程中,最后访问了相关的地址,但是地址后面出现了<h2,这是因为页面代码有这些修饰语句,如果我们没有>的闭合,就会导致表达语句的变化,但加上又会存在<>闭合的检测问题,所以这样子做没有太大的意义,

  那就需要思考我们能不能以<>为起点做文章呢,显然是可以的,我们可以尝试加入单引号后再去掉>,最后进行数据上传

  可以看到传送成功,最终访问了指定的地址,这是因为单引号将地址囊括起来,不会受到后面语句的影响。除了使用单括号以外我们也可以加入#或者是/后输入垃圾数据后再加#号进行规避

  首先明确特殊符号根据语言和场景的脚本类型不同并不是固定的,#是只一种常见特殊符号,很多语言都通用,这些符号能够起到一些截断或者注释的作用。

3.绕过方法——提交方式修改

  首先假设提交方式是以request作为提交方式

  我们尝试提交简单脚本

  可以看到一开始的提交是被拦截了的,但是当我们把提交方式变为post之后就能够成功执行简单脚本了。这是因为我们更换了提交方式,安全狗的WAF的检测有时候只是勾选了部分的提交方式。当我们使用不在名单之内的提交方式时,我们便能绕过拦截达到攻击目的

4.绕过方法——使用工具

  有需求自然是有供应,为了实现自动化,有部分大佬写出了绕过工具,比如

  • XWAF

  XWAF是一个python3写的WAF自动绕过,上一个版本是bypass_waf,XWAF相比bypass_waf更智能,可无人干预,可自动暴破绕过WAF

    https://www.uedbox.com/post/55926/

    https://www.x-waf.com/

  有条件的话可以尝试使用一下吧,至于能不能绕过新版本的WAF,我们保持一定的还与

  • XSStrike

  XSStrike是一种用于测试Web应用程序的漏洞扫描器。它专门针对跨站脚本(XSS)漏洞进行测试,旨在发现可能允许攻击者执行恶意代码或在Web应用程序中执行其他攻击的漏洞。

  XSStrike使用各种技术来识别可能的XSS漏洞,包括注入恶意JavaScript代码、在输入字段中注入HTML标记和尝试通过构造特定的URL或表单参数来触发漏洞。

    https://github.com/s0md3v/XSStrike

  WAF显示offline是因为安全狗基本只在国内使用,所以检测困难,二下面的测试语句中,passed代表语句通过也就是能够注入,filtered表示有触发到过滤器,会被拦截。

5.绕过方法——使用Fuzz

  之前有介绍过一个许多方面有关fuzz的github网址,这里就不加以描述更多,fuzz的使用基本是注入点的变化,其他的没有太大的差别,当我们需要使用到自己构造的fuzz字典时,按部就班即可

  需要注意,有时候攻击失败并不是语句的问题,也有可能是Waf开启了CC流量攻击防护检测,所以如果开了CC流量攻击防护 的话,我们可以搭建一个基本相似的环境进行检测或者使用代理

  

6.XSS跨站的安全修复方案

  • 开启httponly

  • 输入过滤

  • 输出过滤

  由于语言的多样性,不管是之前的php还是现在的java语言编写,我们可以参考一些师傅提供的过滤思路:

    https://blog.51cto.com/yunbk/3396436

    https://www.cnblogs.com/baixiansheng/p/9001522.html


XSS跨站——WAF绕过及修复
https://one-null-pointer.github.io/2022/10/11/XSS跨站——WAF绕过及修复/
Author
liaoyue
Posted on
October 11, 2022
传送口