一、前言
- burp官方支持三种语言开发插件:Java、Python、Ruby。但一般情况下推荐使用Java来做插件开发。原因有以下两点:
- 当用python去做插件的时候,如果需要使用到某个库,而这个库又是用C语言实现的。那么插件将无法正常运行。因为burp在执行python写的插件的时候,是通过Jython(Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。)去解析执行的。而Jython是无法使用C写的模块,所以在这时候插件就不能正常运行。
- burp本身是Java写的,使用Java去开发插件兼容性最高,会少很多莫名其妙的错误。而且当使用Java的时候,可以很方便的和ide进行远程调试。而在使用python写插件进行调试时,只能尽量通过输出去获取信息,没有好的办法进行下断点的动态调试
所以说Java是写插件的最优选择
- 回调的概念
我们所写的插件,都是被burp所调用的,实质上就是个回调
二、入门准备
- 在本文中是使用java来进行开发,所以主要讲一下java中的调试方法。其他语言就多写点print就可以了。
- 由于国内大多数是用的破解版burp,所以在调试方法的准备上稍微需要一点改变。一般情况下破解版burp有使用helper的,有使用keygen的。而如果想要进入调试状态,则需要使用kygen。在我的调试环境下,有如下两个文件
- burp-loader-keygen.jar
- burpsuite_pro_v1.7.31.jar
用如下命令启动burp并让它处于调试的监听方:java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Xbootclasspath/p:burp-loader-keygen.jar -jar burpsuite_pro_v1.7.31.jar
这个命令和调试正版burp的区别在于,这个命令需要加-Xbootclasspath/p:burp-loader-keygen.jar
这一段。
可以将这条指令保存为bat文件,方便一键启动。
3. 另一边就是IDE的配置了,以idea为例(注意jdk环境不能太高,否则你打包的jar包burp不能正常加载,推荐使用jdk1.8)
如上debug模式的burp和IDEA都配置好后,就可以进行下断点调试了。需要注意的是,需要保持IDEA中的代码和你打包的插件的代码一致。
- 顺便在这里再码一篇写的很棒的文章 https://blog.netspi.com/debugging-burp-extensions/
还有,官方资料都是最好的资料 https://portswigger.net/burp/extender#SampleExtensions
三、Hello World
- 首先我们创建一个IDEA工程文件,并且创建一个名叫burp的包。然后启动之前准备好的bat文件。并将burp里面的API接口文件导出到IDEA的burp包里面。再之后,新建一个class文件,名字为BurpExtender。然后写入以下代码。
1 | package burp; |
将项目打包为jar包然后从burp导入jar包
最后成功输出结果