前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分块传输绕过WAF

分块传输绕过WAF

作者头像
Ms08067安全实验室
发布2019-09-24 15:29:41
1.6K0
发布2019-09-24 15:29:41
举报
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安全实验室

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Ms08067安全实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档