如何利用 WAF 缺陷进行绕过

浅析waf绕过
在挖洞过程中,往往会遇到各种攻击利用被waf拦截的情况,本文浅析总结了常见的一些绕过思路以及具体实现

利用waf的缺陷绕过
1.1利用waf性能缺陷-垃圾字符填充
对于通用性较强的软WAF来说,不得不考虑到各种机器和系统的性能,故对于一些超大数据包、超长数据可能会跳过不检测

因此可以填充大量垃圾字符来逃避waf对数据包的检测如下

在这里插入图片描述
在这里插入图片描述
1.2利用waf性能缺陷-发送大量请求包
可以采取高并发的攻击手段,waf同样出于性能考虑可能会直接放行部分数据包。

2.利用waf适配组件的缺陷
由于后端web容器、中间件、数据库、脚本语言的多样性,waf很难覆盖全,容易导致waf解析不了而后端可以正常解析读取导致的绕过

IIS+asp
在IIS+ASP的环境中,如果url中出现了百分号,但后面邻接的字符拼起来后又不在url编码表之内的话,ASP脚本处理时会将其忽略

例如假设有如下请求xxx.asp?id=1 union se%lect 1,2,3,4 fro%m adm%in

waf规则不严放行后,后端由于该特性成功处理执行了xxx.asp?id=1 union select 1,2,3,4 from admin导致绕过

TOMCAT
tomcat的特性也可以构造出许多绕过的方式,可以参考https://y4tacker.github.io/2022/06/19/year/2022/6/%E6%8E%A2%E5%AF%BBTomcat%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E6%B5%81%E9%87%8F%E5%B1%82%E9%9D%A2%E7%BB%95waf%E6%96%B0%E5%A7%BF%E5%8A%BF/这篇文章

1.参数前后添加空白字符绕过

filename="1.jsp"的filename字符左右可以加上一些空白字符%20 %09 %0a %0b %0c %0d %1c %1d %1e %1f,比如%20filename%0a="1.jsp"这样导致waf匹配不到我们上传⽂件

2.utf-16、cp037等各种编码绕过

utf-16
在这里插入图片描述
在这里插入图片描述
json下的unicode编码在这里插入图片描述
3.利用waf适配协议的缺陷
3.1畸形请求(与Web应用所处的中间件有关,在部分中间件下不适用)
将HTTP请求头变为随机字符串例如xxxxT在这里插入图片描述
请求方法后加一个table等空字符在这里插入图片描述
使用get请求方法但带上post体(需要服务端能正常接受)在这里插入图片描述
3.2分块传输
仅仅适用于post传输方法

在这里插入图片描述
分块传输不少waf现在也都可以识别了,可以结合waf性能缺陷的思路综合利用-延时分块传输

具体使用可以参考该项目 http://github.com/c0ny1/chunked-coding-converter在这里插入图片描述
3.3非预期请求方式
get改为post、Content-Type: application/x-www-form-urlencoded改为multipart/form-data等

跳过waf直接访问服务器
寻找真实ip绕过云waf
云waf通过配置NS或者CNAME记录,使得对网站的请求报文优先经过WAF主机,经过WAF主机过滤之后,将被认为无害的请求报文再送给实际的网站服务器进行请求,此时只要找到服务器的真实ip,修改host为服务器真是ip即可绕过云waf

常见寻找真实ip的方式有如下几种

1.证书信息查询 https://myssl.com/

2.dns历史解析记录

3.搜集子域名ip c段(考虑到费用问题,一些子域名并不会部署)

4.超级ping

寻找没有部署waf的nginx反代机器
当waf在nginx服务器上部署,且存在nginx集群时,可以试试尝试寻找能反代服务却又没用部署waf的机器访问进行绕过

以下面这个为例,测试某接口发现被拦截

在这里插入图片描述
搜集ip信息为xxx.xxx.200.1xx在这里插入图片描述
查找c段服务,一个个访问尝试在这里插入图片描述
利用成功在这里插入图片描述
利用waf白名单
WAF存在某些机制,不处理和拦截白名单中的请求数据

例如特定的ip,来自于搜索引擎爬虫的访问数据等

特定ip

可以使用https://github.com/TheKingOfDuck/burpFakeIP插件将xff等头部设置为127.0.0.1等进行绕过尝试在这里插入图片描述
搜索引擎爬虫的访问数据

User-Agent修改为谷歌搜索引擎等

### RCE绕过WAF的技术总结 远程代码执行(RCE)攻击是一种常见的网络安全威胁,其目标是通过漏洞在目标系统上执行任意代码。Web应用防火墙(WAF)通常被用来检测和阻止恶意流量,但攻击者可能通过多种技术绕过这些防御机制[^1]。 以下是一些常见的RCE绕过WAF的技术: #### 1. 使用编码和混淆 攻击者可以使用不同的编码方式或混淆技术来隐藏恶意载荷的真实意图。例如,URL编码、Base64编码或十六进制编码等方法可以改变输入的外观,从而使WAF难以识别潜在的攻击模式[^2]。 ```python # 示例:对命令进行Base64编码 import base64 command = "id" encoded_command = base64.b64encode(command.encode()).decode() print(encoded_command) ``` #### 2. 利用逻辑缺陷 某些WAF规则可能存在逻辑上的漏洞,攻击者可以通过构造特殊的输入来触发这些漏洞。例如,某些WAF可能会忽略大小写敏感性或特定字符的转义处理,从而导致绕过[^3]。 #### 3. 分段发送 将完整的攻击载荷拆分成多个部分,并通过多次请求逐步传递给服务器。这种方法可以避免一次性发送完整载荷时被WAF检测到[^4]。 ```python # 示例:分段发送攻击载荷 payload_part_1 = "system(" payload_part_2 = "'id')" final_payload = payload_part_1 + payload_part_2 print(final_payload) ``` #### 4. 利用注释符 通过在恶意载荷中插入注释符(如`/* */`或`--`),可以绕过某些基于正则表达式的WAF规则。这些注释符可能会破坏WAF规则的匹配逻辑[^5]。 #### 5. 使用非标准协议 某些WAF仅针对HTTP/HTTPS流量进行防护,而忽略了其他协议(如WebSocket或gRPC)。攻击者可以通过这些非标准协议发起RCE攻击,从而绕过WAF的监控[^6]。 #### 6. 模拟合法流量 通过模拟正常用户的操作行为,攻击者可以降低被WAF标记为恶意流量的可能性。例如,添加额外的HTTP头信息或使用常见的User-Agent字符串[^7]。 ```http GET /vulnerable_endpoint HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 ``` #### 7. 利用白名单绕过 如果WAF配置了过于宽松的白名单规则,攻击者可能通过伪造IP地址、域名或其他参数来伪装成受信任的来源,从而绕过防护[^8]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值