WAF 延时分块传输绕过

前言

之前写过两篇关于WAF分块传输绕过内容对文章,对于分块传输不太熟悉的可以先看前两篇内容,本篇文章也是在其基础内容上进行扩充。

  1. 《WAF 分块传输绕过》
  2. 《WAF HTTP协议覆盖+分块传输组合绕过》

0x01 WAF分块传输利用

1.SQL注入绕过

在HTTP协议覆盖的基础上可以配合分块编码传输组合绕过WAF检测

利用chunked-coding-converter插件功能一键分块传输编码

编码后

2.命令执行绕过

与SQL注入绕过同理,利用分块传输编码绕过WAF检测,成功执行系统命令

编码前

在这里插入图片描述

编码后

在这里插入图片描述

3.文件上传绕过

在有WAF防护的情况下,直接上传php等脚本后缀格式文件会被检测拦截。利用分块传输编码绕过WAF检测,成功上传php等脚本文件

编码前

在这里插入图片描述

编码后

0x02 WAF延时分块传输

前面简单介绍了WAF分块传输的几种应用场景,实际利用场景远不局限于上述几种,只要目标系统是支持HTTP/1.1的POST包都支持分块传输。接下来再介绍一下WAF延时分块传输的利用方式。

1. 延时分块传输简介

分块传输已经被公开多年了,目前很多WAF都已经支持WAF分块传输检测,可以通过延时分块传输绕过普通WAF检测规则。

WAF一般通过以下步骤检测分块传输内容:

  1. 发现数据包是分块传输,启动分块传输线程进行接收
  2. 分块传输线程不断接收客户端传来的分块,直到接收到0\r\n\r\n
  3. 将所有分块合并,并检测合并之后的内容

chunked-coding-converter 插件实现了在上一块传输完成后,sleep一段时间,再发送下一块。 目的是在2阶段延长WAF分块传输线程的等待时间,从而消耗WAF性能。

注意:块与块之间发送的间隔时间必须要小于后端中间件的post timeout,Tomcat默认是20s,weblogic是30s。

为了加大WAF的识别难度,chunked-coding-converter 插件支持了延时时间随机化、分块长度随机化、垃圾注释内容与长度随机化[可选]等。

chunked-coding-converter 插件可以显示预估分块数量范围和延时范围,显示每一块发送的内容,长度,延时时间以及发送状态等等。

2. 延时分块传输插件

如果你的BurpSuite启动时使用了汉化插件,并且使用的是作者默认打包好chunked-coding-converter 插件,则可能会出现如下报错:

通过排查原因,发现原作者插件的代码中只识别英文的StartStopClear等,汉化插件会将英文转化为开始停止清空等,导致插件无法识别功能按钮,从而导致运行插件报错。

知道原因后就可以解决问题了,为了不影响汉化插件和分块传输插件的同时使用,博主修改分块传输插件的源码按钮的Start修改为StartChunkedStop修改为StopChunkedClear修改为ClearChunked等,最终重新打包插件效果如下:

3. 延时分块传输利用

以SQL注入绕过为例,直接在数据包界面使用chunked-coding-converter插件的sleep chunked sender功能

可以根据实际场景设置好分块传输的长度,以及分块传输的延迟时间,配置好后点击右上角的Start功能,即可开始延时分块传输

延时分块传输结束以后,可以在Response界面查看SQL注入后的响应数据包的结果

参考文章

  • https://gv7.me/articles/2021/java-deserialized-data-bypasses-waf-through-sleep-chunked/
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Luckysec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值