【第8周】编写Burp分块传输插件绕WAF

  • A+
所属分类:安全文章

分块传输绕WAF在年初的《利用分块传输吊打所有WAF》中学习到了,不过没有深入研究。最近在T00ls上看到大佬们在编写sqlmap的tamp脚本,过程中遇到了比较难解决的一个问题,对sqlmap数据包加入Transfer-Encoding: ChunkedHTTP头。本周尝试通过编写Burp插件来解决这个问题,同时也为了方便在Burp上快速测试分块传输是否能绕过waf我们开始吧!



 0x01 

功能设计



我们先来看看插件要实现的功能


  1. 在Burp Repeater套件上可对数据包进行快速chunked解码编码

  2. 自动化对Burp的Proxy,scanner,spider等套件的数据包进行编码

  3. 可设置分块长度,是否开启注释



 0x02 

代码编写



限于边幅,我只说明核心函数,并通过注释的方式解释代码的相关功能。


2.1 编码函数


这是我们的核心函数,对各个套件数据HTTP数据进行chunked编码

【第8周】编写Burp分块传输插件绕WAF


自动编码其他模块的数据包,我们可以通过实现Burp的IHttpListenerIProxyListener这两个接口,分别实现processHttpMessage()processProxyMessage()这两个方法。


注意:

这里注意一个问题,Burp的所有模块的HTTP流量都会经过IHttpListener.processHttpMessage()这个方法,但是如果在这里处理数据包的话,Burp Proxy模块的数据包被修改之后,不会在Proxy套件UI界面显示修改后的流量,故Proxy模块流量处理单独使用IProxyListener.processProxyMessage()


2.2 自动编码Proxy套件的流量


【第8周】编写Burp分块传输插件绕WAF


2.3 自动编码Proxy之外的套件(Intruder,scanner...)流量

【第8周】编写Burp分块传输插件绕WAF

完整的代码,请后台留言“Burp分块传输插件”,获取下载地址。




 0x03 

效果演示



演示一:快速编码解码

在Burp repeater套件可以快速对请求内容进行chunked编码解码,来对WAF进行测试。

【第8周】编写Burp分块传输插件绕WAF


演示二:搭配sqlmap进行sql注入

sqlmap代理到Burp中,插件对Proxy套件的流量进行编码处理,来绕过waf。


动图有些大无法上传公众,请访问博客图片,地址如下:
http://gv7.me/articles/2019/chunked-coding-converter/sqlmap-bypassWAF.gif



本文始发于微信公众号(回忆飘如雪):【第8周】编写Burp分块传输插件绕WAF

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: