一、背景
之前在雷神众测公众号看到过关于burp插件开发的一些文章,感觉还是很方便实用,回来后的第一件事就是自己尝试一下,搞定这个插件。现在把自己在尝试过程中遇到的一些问题做简单整理如下。
二、环境
burpsuit官方支持用java、python、ruby开发扩展,这里选择利用Python。利用python开发依赖Jython,需要先下载 Standalone Jar,并在burp中配置python的环境变量。
三、api接口
官方已经对一些常见的接口做了简单说明并提供一些开发案例,可参考链接https://portswigger.net/burp/extender/
关于文件上传的插件主要是利用Intruder payloads中开发案例进行改写,该案例可直接加载到burp中进行使用,主要介绍下IIntruderPayloadGenerator接口,此接口用于自定义的Intruder有效负载生成器,利用该接口下getNextPayload函数获取有效负载值。利用该接口可获取到在Intruder模块里设置的变量值,并去定义我们要替换的变量值。该接口的具体介绍可参考如下:
https://portswigger.net/burp/extender/api/burp/IIntruderPayloadGenerator.html
文件上传插件目的是对请求数据包中如下数据进行改写,尝试绕过一些上传限制规则,
Content-Disposition: form-data; name="uploaded"; filename="a.php"
Content-Type: application/octet-stream
利用getNextPayload函数,basevalue即Intruder模块里设置的变量的值
变量数据输出如下:
接下来通过替换上传文件后缀名、变换Content-Disposition大小写、增删空格、修改Content-Type类型等构造一系列payload即可。
四、注意事项
1、python版本统一
burp的python环境要和插件的版本统一,不然在后续调试过程中会出现很多问题,比如在这里我的burpp ython环境是2.7,所以插件也是用python2.7版本写的。
2、在测试插件时遇到数据总是被url编码问题,这个问题还是找了很久的,在确定代码没问题后,矛头转向burp的设置,发现果然是设置出现问题。
在intruder功能下的payloads设置中,burp默认对payload中=、等一些字符进行了编码,将URL-encode these characters的勾选去掉即可。
3、为了利用getNextPayload函数将intruder模块中的变量值读取出来,需要用到chr(x)函数,但是调用该函数时总是出现如下错误。
原因如下,Python2.7,chr( K ) 将编码K 转为字符,K的范围是 0 ~ 255,python 3.0中,chr( K ) 将编码K 转为字符,K的范围是,0 ~ 65535,而在实际输出中出现负数,所以系统出现上述错误。
4、编写该插件基本都是边写边调试的,所以需要burp频繁加载和卸载插件,只要是加载插件次数多了系统就会出现内存错误,主要造成内存错误的原因如下:
由于Jython动态产生Java的类的方式,在加载插件时你可能会遇到内存错误,可以通过配置Java版本低于JDK8,通过如下命令启动burp来分配更多的内存java -XX:MaxPermSize=1G -jar burp.jar,注意,这种方式在JDK8+以上是不允许的。这种方法我没有尝试,我是在出现这种问题时,直接重启burp。
五、演示效果
1、加载插件
2、intruder设置变量值并加载插件
3、运行效果
此处建议是加上,上传成功后的提示进行匹配,这样效果会比单纯的根据长度匹配更明显一些,如下图
六、小结
此插件只是对数据包中的“Content-Disposition: form-data; name="uploaded"; filename="a.php"
Content-Type: application/octet-stream”进行了混淆,所以存在其局限性,只是辅助于日常的测试,对于请求数据头部的混淆、上传文件的混淆、上传文件的免杀等方面的测试,还需要人工进行测试。不过有了这个插件,可以慢慢积累一些常见的绕过方法,来扩充完善其功能,也是挺方便的。自己动手的最大好处就是遇到问题解决问题,对burp一些常见接口有了多一些了解,以后在改写类似的东西会更顺手一些。
E
N
D
关
于
我
们
Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。
团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室,近三年来在网络安全技术方面开展研发项目60余项,获得各类自主知识产权30余项,省市级科技项目立项20余项,研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。对安全感兴趣的小伙伴可以加入或关注我们。
本文始发于微信公众号(Tide安全团队):基于burp的fuzz上传插件
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论