| 关键词: 传输 WAF 数据 http 一些 安全 攻击者 攻击 情况 一下 |
分块传输绕过WAF 原创: 徐哥 Ms08067安全实验室 1周前 ![]() WAF作为一种安全产品为Web应用提供安全防护,可以增大攻击者的攻击难度和攻击成本,这一点是不容至疑的。但是,WAF并不是万能的,世界上没有任何一款安全产品可以提供100%的安全防护。由于产品的设计或实现原理,及其他问题都有可能导致攻击者可以成功绕过WAF的防护,来达到攻击后端Web应用的目的。除了WAF自身的安全性以外,现在讨论最多的就是WAF的绕过技术。 在介绍WAF绕过技术之前,我们必须要要搞明白一个问题,那就是WAF为什么会存在被绕过的风险?这是因为WAF对数据包的解析和Web服务器对数据包的解析两者之间存在差异,所以存在被绕过的可能。下面列出了一些在SQL注入过程中主流的WAF绕过技术: 1、参数污染 2、URL重写 例如:http://localhost/uyg/id/123+or+1=1/tp/456 3、加密payload(例如:MD5、SHA-1、自定义加密) 4、缓冲区溢出 5、编码绕过 6、特殊字符插入(%00) 7、异常HTTP请求包(例如:超级大,不符合HTTP规范但被server容错的数据包) 8、数据包分块传输方式Transfer-Encoding:chunked 这次就给大家分享一下分块传输绕过WAF的经验。
分块传输是什么? 在HTTP0.9中,响应包的结束只是简单的依赖于TCP的连接断开。在HTTP 1.0的响应头增加了一些字段,比如,Content-length用于表示响应包的大小,但却只有在服务器预先知道HTTP头长度的情况下,才能确定Content-length的值。这就意味着如果发送的是动态的内容,那么首先需要缓存数据,在发送前必须要计算出要发送的HTTP头的大小。否则如果依旧按过去的方式,可能TCP连接断开的时候,数据还没有传输完,这时候就不得不中断数据传输,要解决这种情况就不得不让TCP连接一直保持活跃状态。
首先测试一下正常不加waf的情况:发现是字符型注入。 我的payload构造是id=1’ and1=1# ![]() id=1’ and 1=2# ![]() 以及一些其他的手工注入语句,这里不再详细说,这里说一下union select 1,database(),version()# ![]() 然后再装上waf,可以看到被拦截了。 ![]() 然后:数据包头中添加Transfer-Encoding:chunked进行分块传输,将注入的内容进行分块,发现是可以进行绕过的。 ![]() ![]() ![]() 分块传输还有很多有趣的玩法,欢迎各位朋友一些交流学习。 作者:cong9184 来源:微信公众号 Ms08067安全实验室 |
| 本文出处: https://www.toutiao.com/a6675117950480941579/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|