burpsuite扩展开发之Python

路人甲 2015-04-24 10:10:00

0x00 简介


Burpsuite作为web测试的神器,已经人手必备了。它提供的一系列互相配合的工具,极大的提高了手工测试的效率,从1.5版本开始,Burpsuite开始支持扩展。用户可以自己开发扩展实现一些特殊的需求。不过目前关于Burpsuite扩展开发的中文资料很少。这里抛砖引玉总结一下学习的过程。

0x01 基础知识


目前burpsuite官方支持用java,python,ruby开发扩展,选择还是很多的。Brupsuite的扩展可以实现非常多的功能,比如自定义扫描,修改http请求和响应,修改burp配置等等。几乎所以burpsuite功能都支持在扩展中进行控制。所以其实是可以用扩展把自己经常使用的功能做成自动化的。这也应该是一个最终的学习目标。官方文档是首选的资料。中文介绍资料可以参考BurpSuite扩展API和HelloWold

0x02 环境配置


安装python开发的扩展需要配置Jython环境。Jython下载直接下载Standalone Jar版本就可以。在extender标签页中选择options标签。在python environment中选中刚刚下载的jython standalon jar。

如果下载的是jython installer。需要在安装的时候选择standlone类型。之后再在burpsuite中选择安装目录下的jython.jar.

如果没有配置好jython环境。添加python编写的扩展会报错。

0x03 常用接口介绍


burpsuite的文档中给了多个样例以及详细的API文档

个人觉得最快的方法还是阅读现成的扩展代码。很多需求稍微修改现成的扩展就可以完成。Burp的Bapp store里的扩展安装之后默认是在burpsuite同目录下的bapps的文件夹内。

简单介绍一下几个最常用的接口:

interface IBurpExtender: 这个接口所有的扩展都需要实现.

Interface IBurpExtenderCallbacks: 这个接口几乎是必备的。在编写扩展的过程中会经常用到。

Interface IExtensionHelpers: 这个接口是新加的。提供了编写扩展中常用的一些通用函数,比如编解码、构造请求等。这样就不需要重负造轮子了。

Interface IHttpRequestResponse: 这个接口包含了每个请求和响应的细节。在Brupsuite中的每个请求或者响应都是IHttpRequestResponse实例。

0x04 第一个burpsuite扩展


在web测试过程中,使用repeater调试接口是很常见的一个使用方式。现在很多接口都是返回包含unicode明文的json数据,比如这种

{"result":"passwd_error","msg":"\u7528\u6237\u540d\u5bc6\u7801\u9519\u8bef"}

由于brup的decoder没有对unicode的解码,每次想要看一下这些unicode是是什么意思的时候都需要复制出来使用其他工具解码。可以使用burp扩展来实现自动解码unicode,从而提高测试的流畅性。

首先引入所需要的模块,在BurpExtender类中定义我们需要的方法。

toolFlag是burpsuite中对工具进行识别的方式,proxy是4,repeater是64.可以在文档里查看所有工具对应的flag值。这里几行代码就是先解码返回值,查找unicode明文,进行解码,之后再更新响应的body。

加载扩展之前,repeater看到的返回:

加载扩展之后:

代码下载地址:github

0x05 相关资料


BurpSuite 扩展开发[1]-API与HelloWoldburpextensions.com

评论

J

justforfun 2015-04-24 11:24:01

好东西。。

大风对我说 2015-04-24 12:47:32

大神,感谢分享

大大灰狼 2015-04-24 14:08:27

不错学习了

乌云白帽子 2015-04-24 15:32:47

看不懂

动后河 2015-04-26 22:47:44

有一个叫python scripter的五星插件,看上去更容易拓展, 楼主来一篇?

F

F1uYu4n 2015-04-27 09:59:39

changeu这个太有用了啊 非常感谢

K

kevinchowsec 2015-04-27 11:10:17

我也要写插件!!!

S

suolong 2015-04-27 15:53:59

好文章

X

xsser_w 2015-04-28 10:07:31

low爆了 ,json的unicode返回 我都是口算的。。。。

F

F1uYu4n 2015-04-28 23:27:06

如果response里有多处unicode的话,作者的py只会解析第一处,建议改进下

D

D&G 2015-05-05 16:16:16

@动后河 我也看到这个插件了。没看懂。

D

D&G 2015-05-08 14:31:04

@F1uYu4n 已经增加多处unicode解码了。感谢使用

R

rampage 2015-08-11 17:25:00

神奇的路人甲

__画船听雨 2016-03-14 16:49:34

我用着怎么乱码。。打算也学着写插件 半自动扫描

__画船听雨 2016-03-14 16:57:44

个别乱码,使用起来挺好

路人甲

真正的路人甲.

twitter weibo github wechat

随机分类

Ruby安全 文章:2 篇
运维安全 文章:62 篇
IoT安全 文章:29 篇
其他 文章:95 篇
二进制安全 文章:77 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Article_kelp

因为这里的静态目录访功能应该理解为绑定在static路径下的内置路由,你需要用s

N

Nas

师傅您好!_static_url_path那 flag在当前目录下 通过原型链污

Z

zhangy

你好,为什么我也是用windows2016和win10,但是流量是smb3,加密

K

k0uaz

foniw师傅提到的setfge当在类的字段名成是age时不会自动调用。因为获取

Yukong

🐮皮

目录