• 哈密门户网
  • 您的位置:首页 >> 国际新闻 >> 正文

    web安全/渗透测试--64--常见的WAF绕过方法

    发表时间:2020-03-10 信息来源:www.beijingportal.com.cn 浏览次数:1207

     

    本文阐述了绕过WAF的常用方法:首先,网络架构层

    一般使用域名指向云WAF地址,然后逆向实现代理,找到这些公司服务器的真实IP就可以实现绕过。

    具体方法如下:

    1。查找同一域名注册人的相关二级域名和其他域名解析记录。

    2。通过查看邮件的MX解析记录来查找真实服务器的IP记录或网段,例如:

    窗口可以执行命令:

    Linux可以执行以下命令来查看Baidu.com域名的MX解析IP地址

    3和查看域名的历史解析记录。实现操作的网站:

    4。使用快速扫描工具(如zmap)扫描整个网络的IP,找到网站的真实IP。

    5。使用SSRF漏洞的反向连接IP获取网站的真实IP。

    2。HTTP协议层

    可以绕过标准HTTP解析在WAF、网络服务器和网络语言解析引擎之间的差异。

    具体的旁路方法如下:

    1。使用一些硬件晶片绕过SSL加密算法是不够的。

    参考文章:通过滥用SSL/TLS绕过相应的Web应用防火墙测试脚本:滥用-SSL-绕过-waf

    2和使用HTTP协议版本绕过

    HTTP。到目前为止,它已经从1991年的0.9版发展到2015年的2.0版。因为不支持相关协议的WAF在解析数据包时会有问题,所以可以通过发送不同版本协议的粘性数据包来绕过一些WAF。

    3。使用编码、字符集编码、默剧编码等。绕过。

    IIS ASP支持类似的编码,并将从非法的URL编码中删除字符。IIS ASP对编码的处理结果为,而Nginx函数的解码结果为。当Nginx的函数处理%编码时,如果下面的第一个字符不在十六进制范围内,它将被丢弃;否则,确定第二个字符是否在十六进制范围内,如果不在十六进制范围内,总和将被丢弃。

    HTTP请求头的编码可以指定内容编码。该值通常是UTF-8编码,但恶意攻击者可以指定使用、等不常见的编码来绕过它。例如,您可以将标题的值设置为或等。Burpsuite的HTTP请求走私者插件可用于简化数据包的修改。

    在Spring中,如果上传的文件名以开头和结尾,则调用以解码文件名。MIME是邮件协议中使用的编码方法。在这里,我们可以将上传文件名更改为UTF-8字符编码和base64编码。通过Spring解码获得的文件名是,但是如果以前没有处理过一般的WAF,那么上传文件名过滤器到WAF的问题将被忽略。

    4。通过上传协议的不规则分析绕过。

    以PHP网络服务器对解析为例。

    因为协议在解析PHP对时有缺陷,如果一行有多个文件名字段值,PHP Web服务器将取最后一个文件名值,如下所示:

    PHP Web服务器将最终得到文件名,一些WAF将只判断第一个文件名的值。因此,WAF对上传文件的过滤和检测功能将被黑客绕过,如果它在这里是可选的,删除它不会影响PHP Web服务器的获取。

    此外,的编码也受HTTP请求头的影响,PHP Web服务器可以根据这个值进行解码。所有这些都可能被一些人稍微操纵,他们可以绕过许多WAF文件上传过滤和检测功能。

    5。其他协议的旁路

    URI解析旁路:

    一些WAF可以处理与URI不兼容的旁路,例如:

    将HTTP原始数据包的背面设置为一个空格,一些硬件WAF将通过忽略背面参数来绕过WAF。

    还可以使用一些不太常用的HTTP处理来绕过,例如对HTTP请求进行编码时的注释和变形。

    一些基于域名保护的WAF也可以通过使用HTTP主机头来绕过。主机标头的常规字符串不包含端口信息。例如,或者,域名可以用本地主机代替,可以写成这样:

    此外,还有许多基于协议的旁路,如HPP旁路、参数名的特殊字符转换旁路等。

    3。第三方应用层

    第三方应用层主要由数据库、系统命令、第三方组件等组成。这三个部分的旁路将在下面详细描述。

    1。有许多方法可以绕过

    数据库,包括注释绕过、编码绕过和不同的定义

    使用MySQL的版本号注释功能最常绕过WAF,也有一些方法可以绕过WAF,例如,使用替换空格也可以绕过一些WAF,使用特殊用法如和浮点来绕过WAF(绕过一些关键字如并集),以及使用关键字如替换和括号注释(如)来绕过WAF等。

    在MySQL中,从到的字符可以表示空格。通过添加注释和换行符,也可以绕过某些WAF过滤,例如,(在MySQL中,解码后是字符,字符是注释,解码后是换行符);还有一些使用和特殊符号可以绕过,比如:

    另外,使用exec编码也可以绕过关键字,比如:

    关于数据库绕过的更多信息,请参考sqlmap的回火插件。插件的地址是:

    2,系统命令的旁路

    以命令为例,在Linux bash环境中,删除空格的方法如下:

    以示例为例。在窗口中替换空格的方法如下:

    要在Linux bash环境中绕过关键字,您可以插入成对的单引号、双引号或反引号,其中反引号必须连续书写,例如,您可以这样写:

    此外,您可以在shell命令的任何位置或单词的末尾插入,其中可以使用任何字母。例如,它可以写成如下:

    如果关键字被编码绕过,cat /etc/passwd可以被base64编码为如下:

    如果关键字被通配符绕过,linux bash的通配符类似于windows的通配符,它支持表示单个字符和多个字符的书写。例如,该命令可以编写如下:

    此外,WAF关键字也可以被一些脚本执行引擎绕过,如perl、python、nodejs、php、java等。相关的编写方法如下:

    3,绕过第三方组件

    一般来说,WAF使用的第三方组件包括PCRE、ISAPI、Libinjection等。

    PCRE提供了和选项来限制匹配的数量,以便在处理正则表达式时防止ReDoS正则表达式拒绝服务攻击。默认值为100万,这可以限制匹配的总数。然而,匹配递归的数量主要是有限的,并且不是所有的匹配都有递归,所以这个值只有当它小于这个值时才有意义。

    为了防止ReDoS将WAF设置为小于默认值的值,一些WAF添加了一个正则表达式来编写WAF过滤的SQL语句:

    此时的值是100万,那么可以编写绕过WAF过滤保护的SQL语句:

    这里注释了100万个字符,很容易满足100万的限制。此外,这些字符的数据量小于1MB,不会占用太多空间。根据这种方法,可以绕过许多类似的WAF规则。

    ISAPI是一组由I is提供的用于编写API的插件,它可以过滤请求头中的数据并获得请求的正文数据。相应的原型是。在这里,您可以获得post请求的主体部分的数据,但是最多只能存储48kb的数据。可以得到总大小,可以得到48kb以上数据的同步函数调用方法,也可以得到异步函数调用方法。

    但是,在ISAPI插件WAF中读取超过48kb的数据将导致下面的ASP不能获得超过48kb的数据,因此许多基于ISAPI的IIS WAF可以通过将攻击数据放在48kb之外来绕过WAF保护。如果一个post参数id存在一个SQL注入,我们可以在写注入语句之前填充48kb的无用数据,如下所示:

    其中,上面的A字符占用的空间超过48kb

    Libinjection在许多WAF中使用,称为modsecurity。因为逻辑连接只对SQL语句进行标记,并且标记匹配标记的字符串,所以相同的旁路方法通常可以绕过许多SQL注入语句的过滤规则。

    通过使用一个不常用的SQL函数,可以绕过删除过滤。例如,使用mod(3,2)而不是1的SQL语句可以写成:

    通过使用模糊测试技术,也可以绕过过滤。例如,通过插入到SQL语句中,可以绕过逻辑注射保护。这种方法还可以绕过一些晶圆片SQL注入语义检测引擎。相关的Python脚本地址是:

    可以通过大括号绕过libinject过滤。MySQL支持这种与ODBC兼容的转义方法。可以绕过删除过滤的相应的SQL语句如下

  • 热门标签

  • 日期归档

  • 友情链接:

    哈密门户网 版权所有© www.beijingportal.com.cn 技术支持:哈密门户网 | 网站地图