安全矩阵

 找回密码
 立即注册
搜索
查看: 7266|回复: 0

基于burp的fuzz上传插件

[复制链接]

991

主题

1063

帖子

4315

积分

论坛元老

Rank: 8Rank: 8

积分
4315
发表于 2021-1-26 22:34:54 | 显示全部楼层 |阅读模式
原文链接:基于burp的fuzz上传插件

一、背景

之前在雷神众测公众号看到过关于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/ext ... yloadGenerator.html

文件上传插件目的是对请求数据包中如下数据进行改写,尝试绕过一些上传限制规则,
  1. Content-Disposition: form-data; name="uploaded"; filename="a.php"
  2. 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一些常见接口有了多一些了解,以后在改写类似的东西会更顺手一些。






















回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-9-20 19:35 , Processed in 0.012878 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表