burp插件的简单入门
burp插件简单入门
简单介绍
可以在burp直接下载接口说明和接口
关于入门,可以看一些文章,这里就用hackbar举例
https://github.com/d3vilbug/HackBar
把文件下下来,然后分析代码,在我看来如果能借助别人的代码改改达到自己的需求,就没必要去写了,我开始的想法就是写一个burp的笔记本,刚好hackbar就非常适合我的需求。
我们这边举三个代码来理解
首先是BurpExtender
1 | public class BurpExtender implements IBurpExtender, IContextMenuFactory |
简单来说就是需要什么模块就先去注册模块,然后再调用
1 | IBurpExtender:在编写Burp拓展时必须要使用的类,该类的作用是在Burp上正确注册,注册方法是使用registerExtenderCallbacks()方法,传递callbacks参数 |
burp的接口可以自行的去官网查看,我觉得其实代码写起来比较简单,相反要是实现一些图形化感觉比较难一些
https://portswigger.net/burp/extender/
可以看这位博主的解释的比较全
https://blog.csdn.net/weixin_47767605/article/details/106237259
https://www.cnblogs.com/wjrblogs/p/15705552.html
我们知道接口的含义,所以就容易理解代码,registerExtenderCallbacks
注册模块初始化,createMenuItems
创建菜单
然后看hackbar写的通用方法
可以看到add_MenuItem_and_listenerd
的逻辑就是添加菜单和listener
1 | //一级菜单: |
举个例子
我们看webshell这里,可以看到他只注册了一级菜单,所以这个时候用add_MenuItem_and_listenerd
进行一个注册
Create_Main_Menu
创建主菜单,然后再添加子菜单,如果需要二级菜单就用这个
1 | //二级菜单: 创建主菜单,并加入子菜单 |
举个例子
可以看到LFIMenuItems
需要二级菜单
prompt_and_validate_input
,接受用户的输入
1 | public static String prompt_and_validate_input(String prompt, String str){ |
举个例子
我们看到调用prompt_and_validate_input
去获取用户的输入
其它就不举例子了0.0,比较简单
do_modify_request
对输出的文本进行处理
1 | public static byte[] do_modify_request(byte[] request, int[] selectedIndex, String modifiedString){ |
show_message
打印
1 | public static void show_message(String str1, String str2){ |
魔改
然后魔改就比较简单了,比如你想增加自己的webshell
可以先添加菜单
然后可以调用do_WebShell
去对传进去的action进行处理,比如这里我们直接添加了behinder的马,然后直接在switch对action进行判断即可,然后照样子把冰蝎马base一些就可以了。注意不要有中文!
如果想自己写一个菜单,那么直接在BurpExtender.registerExtenderCallbacks
注册一个即可,比如我这里的HttpHeader
然后创建文件,主要两个点,比较简单,就不继续了
最后效果
burp插件调试
首先确保IDEA和burp插件代码的一致性
添加远程
配置
1 | -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 |
可以看到会出现debug
然后就是关于burp的配置
需要在启动时加上
1 | -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 |
由于一般大家都是用的破解,比如我原来的命令是这样的
1 | "./jre\bin\javaw.exe" -Xmx8G -XX:-UseParallelGC -noverify -javaagent:BurpSuiteLoader_v2022.2.2.jar -Dfile.encoding=utf-8 -jar burpsuite_pro_v2022.2.2.jar |
这个时候在后面加上即可
1 | -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 |
下载jre的网站
报了这样的错误,发现是没有下载dll文件,百度下载了个jdwp.dll放到jdk的bin目录
还有就是注意jdk版本的一致性
最后命令是
1 | "\java\jdk-14.0.2\bin\java.exe" -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Xmx8G -XX:-UseParallelGC -noverify -javaagent:BurpSuiteLoader_v2022.2.2.jar -Dfile.encoding=utf-8 -jar burpsuite_pro_v2022.2.2.jar |
这个时候我假设在webshell的php下断点
然后在burp下点击hackbar的php选项
可以看到已经成功的断在了我们想要的地方
最终得到想要的结果
参考:
http://www.code2sec.com/burpsuitecha-jian-kai-fa-tips.html
https://blog.csdn.net/huahao1989/article/details/107746738
https://www.netspi.com/blog/technical/web-application-penetration-testing/debugging-burp-extensions/