关于WAF的绕过思路

admin 2022年5月27日21:08:18评论150 views字数 2776阅读9分15秒阅读模式

前言


安全是一个不断对抗的过程,有防护手段,就有相应的绕过手段。

渗透测试过程中,WAF 是必定会遇到的,如何绕过 WAF 是值得思考的。


1.WAF 概述

关于WAF的绕过思路


WAF全称为WebApplication Firewall,Web应用防火墙。对于其工作原理,内部收集了大量的检测恶意请求的规则,在http协议层面,根据生成的规则对发送的数据包内容进行检测,如果发现不符合安全规则的请求,例如可能是带有攻击性的语句,作出对应的拦截措施并及时告警,保护用户和企业数据安全,从而保证Web应用的正常运行。WAF可分类为云WAF、硬WAF、软WAF。


关于WAF的绕过思路


2.绕过思路

关于WAF的绕过思路


关于WAF的绕过思路


关于WAF的绕过思路

3.WAF检测工具

关于WAF的绕过思路

3.1Wafw00f

下载地址:https://github.com/EnableSecurity/wafw00f

WAFW00F是一个Web应用防火墙(WAF)指纹识别的工具。工作原理:首先发送一个正常http请求,分析其返回有没有一些特征字符。如果不成功,它将发送大量(潜在的恶意) HTTP 请求,并使用简单的逻辑推断出WAF的类型。如果此时仍然不能推断出来,则分析以前返回的响应,并使用另外的算法来猜测WAF 或安全解决方案,判断是否能够抵御我们的攻击。

使用指令:Python main.py http://www.baidu.com


关于WAF的绕过思路


3.2 SQLmap

下载地址:http://sqlmap.org/

工作原理:在sqlmap中检测waf的方式是传入一个网址,获取网址内容与头部信息,然后检测是否存在该waf的特征值,如果存在,就分析该特征值对应的waf,判断waf的信息。


关于WAF的绕过思路

执行命令:python sqlmap.py -u “URL”--identify-waf

(目前sqlmap已经进行了修改,存放waf文件夹的路径已更改)


关于WAF的绕过思路



3.3 WhatWaf

下载地址:https://github.com/Ekultek/WhatWaf

工作原理:检测Web应用程序上的防火墙,然后尝试在指定目标上检测到该防火墙的旁路。

执行指令:./whatwaf -[u|l|b|g]VALUE|PATH|PATH|PATH [-p|--pl] PAYLOAD,..|PATH [--args]


3.4 namp

下载地址:https://nmap.org/

运行指令:

nmap -p 80,443 --script=http-waf-detect 目标主机

nmap -p 80,443--script=http-waf-fingerprint 目标主机  判断精度更高




关于WAF的绕过思路

4.伪装恶意语句的绕过

关于WAF的绕过思路

原理:WAF检测不到恶意语句,就不会拦截请求。

1.大小写转换:使用简单,但是效果不好。例如: and 1=3  可以使其变为 AnD 1=3

2.过滤空格:%20、%09、%0a %0b %0c %0d %a0 %00 /**/ /*!*/

3.如果空格被过滤,括号没被过滤,可以用括号select(user())from dual where(1=1)and(2=2)

4.双写:一些后端可能会直接给关键词过滤为空,那么就可以利用双写来绕过

ununionion ==> 去掉union ==> union

5.用十六进制过滤,users的十六进制字符串是7573657273 select column_name from information_schema.tables wheretable_name=0x7573657273绕过union,select,where

6.使用空字节:一些过滤器在处理输入时,如果碰到空字节就会停止处理,我们通常也会利用空字节进行绕过过滤器。如:id=1 %00 and 1=2

7.过滤逗号:在使用盲注的时候,需要使用到substr(),mid(),limit。这些子句方法都需要使用到逗号。对于substr()和mid()这两个方法可以使用from to的方式来解决:select substr(database() from 1 for 1);select mid(database() from 1 for 1)

关于WAF的绕过思路

5.突破Waf检测能力绕过

关于WAF的绕过思路

原理:通过增加传递得参数数量,达到waf检测的参数上限,超出的参数就可绕过waf。对于一些轻量级waf,该方法十分有效果,如phpstudy自带waf。复现过程:在waf内,设置拦截关键字。

关于WAF的绕过思路


通过添加参数数量,实现绕过。

关于WAF的绕过思路



关于WAF的绕过思路

6.不理解恶意语句绕过

关于WAF的绕过思路

6.1 Content-Type绕过

当浏览器在上传文件到服务器的时候,服务器对所上传文件的Content-Type类型进行检测,如果是白名单允许的,则可以正常上传,否则上传失败。绕过Content-Type文件类型检测 ,用BurpSuite截取并修改数据包中文件的Content-Type类型,使其符合白名单的规则,达到上传的目的。


关于WAF的绕过思路


关于WAF的绕过思路

下一步,连接木马。打开中国蚁剑,获取网站权限。



6.2 HTTP请求方式绕过

waf在对危险字符进行检测的时候,分别为post请求和get请求设定了不同的匹配规则,请求被拦截,变换请求方式有几率能绕过检测。云锁/安全狗安装后默认状态对post请求检测力度较小,可通过变换请求方式绕过。

 

畸形包绕过:先关闭burpsuite长度更新,为get请求。先使用bp的method转换为POST请求,get请求中空格使用%20代替,Connection改为keep-alive。点击burp中Repeater,在下拉选项中取消update Content-Length选中。如果成功绕过,会收到两个返回包。

关于WAF的绕过思路



6.3 参数污染绕过

HPP 是 HTTP Parameter Pollution 的缩写,意思即“ HTTP 参数污染 ”。这个漏洞由 S.di Paola 与 L. Caret Toni 在 2009 年的 OWASP 上首次公布。这也是一种注入型的漏洞,攻击者通过在HTTP请求中插入特定的参数来发起攻击。实现思路是给一个参数赋上两个或两个以上的值,由于现行的HTTP标准没有提及在遇到多个输入值给相同的参数赋值时应该怎样处理,而且不同的网站后端做出的处理方式是不同的,从而造成解析错误。


关于WAF的绕过思路



6.4 协议覆盖绕过

原理:HTTP头里的Content-Type一般有三种application/x-www-form-urlencoded,multipart/form-data,text/plain。其中multipart/form-data表示数据被编码为一条消息,每个控件对应消息中的一个部分。所以当waf没有规则匹配该协议传输的数据时可被绕过。


实现步骤:将头部Content-Type改为multipart/form-data; boundary=69 然后设置分割符内的Content-Disposition的name为要传参数的名称。数据部分则放在分割结束符上一行。

关于WAF的绕过思路







END

长按识别二维码,了解更多


关于WAF的绕过思路


原文始发于微信公众号(易东安全研究院):关于WAF的绕过思路

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月27日21:08:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   关于WAF的绕过思路http://cn-sec.com/archives/1059707.html

发表评论

匿名网友 填写信息