HW 中利用 WAF 缺陷进行绕过

admin 2025年3月18日23:22:08评论21 views字数 1871阅读6分14秒阅读模式

原文链接:https://forum.butian.net/share/3639

浅析waf绕过

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

利用waf的缺陷绕过

1.1 利用waf性能缺陷-垃圾字符填充

对于通用性较强的软WAF来说,不得不考虑到各种机器和系统的性能,故对于一些超大数据包、超长数据可能会跳过不检测

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

HW 中利用 WAF 缺陷进行绕过
HW 中利用 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

HW 中利用 WAF 缺陷进行绕过

cp037(原始payload为' and (7=len(db_name())) and 'a' = 'a)

HW 中利用 WAF 缺陷进行绕过

json下的unicode编码
HW 中利用 WAF 缺陷进行绕过

3.利用waf适配协议的缺陷

3.1 畸形请求(与Web应用所处的中间件有关,在部分中间件下不适用)

将HTTP请求头变为随机字符串例如xxxxT

HW 中利用 WAF 缺陷进行绕过

请求方法后加一个table等空字符

HW 中利用 WAF 缺陷进行绕过

使用get请求方法但带上post体(需要服务端能正常接受)

HW 中利用 WAF 缺陷进行绕过
3.2 分块传输

仅仅适用于post传输方法

HW 中利用 WAF 缺陷进行绕过

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

具体使用可以参考该项目 http://github.com/c0ny1/chunked-coding-converter

HW 中利用 WAF 缺陷进行绕过

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的机器访问进行绕过

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

HW 中利用 WAF 缺陷进行绕过

搜集ip信息为xxx.xxx.200.1xx

HW 中利用 WAF 缺陷进行绕过

查找c段服务,一个个访问尝试

HW 中利用 WAF 缺陷进行绕过

利用成功

HW 中利用 WAF 缺陷进行绕过

利用waf白名单

WAF存在某些机制,不处理和拦截白名单中的请求数据

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

特定ip

可以使用https://github.com/TheKingOfDuck/burpFakeIP插件将xff等头部设置为127.0.0.1等进行绕过尝试

HW 中利用 WAF 缺陷进行绕过

搜索引擎爬虫的访问数据

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

原文始发于微信公众号(网安探索员):HW 中利用 WAF 缺陷进行绕过

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月18日23:22:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   HW 中利用 WAF 缺陷进行绕过https://cn-sec.com/archives/3813288.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息