首页 > 其他分享 >burp 插件编写

burp 插件编写

时间:2023-07-04 18:12:56浏览次数:39  
标签:插件 BurpExtender callbacks 参数 burp new 编写 JSplitPane

挖洞效率好低,思来想去,还是得靠插件。0到1,的burp插件开发

 

https://portswigger.net/burp/extender/api/allclasses-noframe.html   接口文档 ,给出的 接口的方法及其作用

https://portswigger.net/burp/extender/api/constant-values.html#burp.IRequestInfo.CONTENT_TYPE_JSON  方便查看 各个接口中 方法的参数 及其所代表的含义

1.Java 代码基础

2.配置号burp  api 

保存java api 到本地

 并创建空的java项目,导入api

 

3. 在BurpExtender  实现自己的功能模块

 

 

 

 

4. GUI  页面编写    Swing组件的使用 

https://juejin.cn/post/6844903572891500551#heading-3   可以学习下,简单的burp 窗口,是怎么实现的。 实现ITab接口

SwingUtilities.invokeLater() 创建 视图窗口
SwingUtilities的 函数invokeLater来保证GUI在事件分发线程中创建。
参考文章:
https://blog.csdn.net/Mculover666/article/details/104338322 awt
https://blog.csdn.net/bingongzi/article/details/95736582 Jframe

getUiComponent()  方法 ,返回主面板



SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {


//生成主面板 以及两个子面板
      JSplitPane  RootPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);

JSplitPane jSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
JSplitPane jSplitPane2= new JSplitPane(JSplitPane.VERTICAL_SPLIT);
// 声明 二维记录表
logTable = new Table(BurpExtender.this);
// 声明清除列表 记录 的按钮
JButton Button = new JButton("清除记录") ;
// 给自己 第二个子面板 生成一个 模型。 并把按钮添加进去
JPanel panel= new JPanel();
panel.setLayout(new GridLayout(18, 1));
panel.add(Button);

jSplitPane2.setLeftComponent(panel);



// 将二维记录表 放进滑动框 JScrollPane
        JScrollPane scrollPane = new JScrollPane(logTable);//先创建对象在放进去
jSplitPane.setLeftComponent(scrollPane);

// tabs with request/response viewers 生成标签 展示数据包详情 放进子面板一
JTabbedPane tabs = new JTabbedPane();
requestViewer = callbacks.createMessageEditor(BurpExtender.this, false);
responseViewer = callbacks.createMessageEditor(BurpExtender.this, false);
tabs.addTab("Request", requestViewer.getComponent());
tabs.addTab("Response", responseViewer.getComponent());

jSplitPane.setRightComponent(tabs);

//整体分布
RootPane.setLeftComponent(jSplitPane);
RootPane.setRightComponent(jSplitPane2);
RootPane.setDividerLocation(1000);
//customize自己的UI
        BurpExtender.this.callbacks.customizeUiComponent(RootPane);
BurpExtender.this.callbacks.customizeUiComponent(logTable);
BurpExtender.this.callbacks.customizeUiComponent(scrollPane);
BurpExtender.this.callbacks.customizeUiComponent(panel);
BurpExtender.this.callbacks.customizeUiComponent(tabs);

BurpExtender.this.callbacks.addSuiteTab(BurpExtender.this);
// 定义按钮 的监听操作
Button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
log.clear();
BurpExtender.this.fireTableDataChanged();

}
});


}
});

 l

5. 功能实现  

根据自己的需求,分解实现步骤,一步步,实现。   可以去参考用到相同步骤的项目

  一种 json格式的越权       一种 get方式的越权

josn格式

1. 判断数据包 的格式 json

其中  messageInfo  是  IHttpRequestResponse类型的对象

this.helpers.analyzeRequest(messageInfo).getContentType()
有接口可以查看 json的 Type值 4
https://portswigger.net/burp/extender/api/constant-values.html#burp.IRequestInfo.CONTENT_TYPE_JSON

2.判断参数key值 是否包含id 

 3.参数value 进行类型转换   加一 或者5    

4.根据参数 构造新的请求包   判断响应包的变化 

case1   响应码 发生变化   不存在越权   case2  数据包中 包含error|等报错字段 越权失败,但是可以报响应包拿出来看看   case3  

case4    一个原本size不小的响应包,明显变大。

get 格式  的越权   url中越权   参数中越权   尝试将不同的参数置空,置为负数,  将置空与置为负数的参数,进行排列组合

 

遇到的报错: java: 无效的目标发行版: 11   问题解决文章   jdk环境不对,重新修改项目配置

https://blog.csdn.net/weixin_46294086/article/details/124203970

 

 

如何获取  json数据    getParameters() 。  

如何判断在body的哪个位置,添加payload    如何根据数据包生成  payload。

parameters  的 name 与value。 根据name判断 payload 的位置,uodate参数,替换payload

 替换payload ,重新发包,并分析响应包。

 

声明一个logEntry类 ,记录请求的详情。

 

private static class LogEntry{
// 记录的参数
final String url;
final String status;
final String res;
final IHttpRequestResponse requestResponse;

//通过构造函数,表明 记录 所需要的参数,及对象的参数类型
LogEntry(String url, String status, String res, IHttpRequestResponse requestResponse) {
this.url = url;
this.status = status;
this.res = res;
this.requestResponse = requestResponse;
}
}

 // 通过列表 记录多个LogEntry

public final List<LogEntry> log = new ArrayList<LogEntry>();

 

 

 

 

toolflag 配置监听那个模块的数据 64  4  监听 proxy repeater 模块的流量。

processHTTPMESSAGE()

定义心得接口 实现 报告扫描结果呈现

单独实现 功能模块, 调用,减少代码的重复编写

 

 

完成功能,展示数据后,导出 jar  包 。

后期会分享,自己的插件,还在继续优化,欢迎与大家交流。

 

标签:插件,BurpExtender,callbacks,参数,burp,new,编写,JSplitPane
From: https://www.cnblogs.com/darkfree/p/17460771.html

相关文章

  • chrome插件开发
    1.前置知识JavaScript一些基本前端知识2.环境准备运行环境:Chrome浏览器或Chromium内核浏览器(如Edge),在浏览器”拓展”中打开”开发人员模式”3.目录结构├──css//css文件├──html//html文件├──images//存放插件图标等图片├──js......
  • unity前后端通信 json解析 HTTP POST(BestHttp插件实现)
    1.配置请求体中的Json字符串1request_data=newRequestBodyClass();2request_data.a="Json第一个字段";3request_data.b="Json第二个字段";4stringbody=JsonUtility.ToJson(request_data);2.实例化HTTPRequest,请求头方法设置为POST,并且设置请求头中类型为json......
  • Flask插件---flask-caching (缓存)
    Flask插件---flask-caching(缓存)安装pipinstallflask-caching加载配置插件在exts.py文件中配置#exts.py:插件管理#扩展的第三方插件#1.导入第三方插件fromflask_sqlalchemyimportSQLAlchemyfromflask_migrateimportMigratefromflask_cachingimportC......
  • 1.6 编写双管道ShellCode后门
    本文将介绍如何将CMD绑定到双向管道上,这是一种常用的黑客反弹技巧,可以让用户在命令行界面下与其他程序进行交互,我们将从创建管道、启动进程、传输数据等方面对这个功能进行详细讲解。此外,本文还将通过使用汇编语言一步步来实现这个可被注入的ShellCode后门,并以此提高代码通用性。......
  • Visual Studio插件推荐
    MarkdownEditor功能:在VisualStudio中编辑Markdown文件。打开Markdown文件,右键可以打开插件的设置。比较难理解的几个设置......
  • Silhouette 2023.0.1 CE 影视后期ROTO跟踪抠像合成软件 支持AE/PR/达芬奇/VEGAS/OFX插
    Silhouette是一款被广泛应用于影视剧中Roto、抠像、擦威亚的特效合成辅助软件,正所谓术业有专攻,它就是为了应对这些脏活累活而诞生的。之前还有一款软件CommotionPro,但是已经停止开发,目前已经被这款Silhouette所替代,目前它也属于BorisFX家族的一员。软件下载Silhouette2023.......
  • ps汉化插件套装|最新 Retouch4me ​史上最强AI修图神器来了!
    Retouch4me是由鼎鼎大名的3DLutCreator作者开发的一套基于神经网络的人像照片快速精修工具,它功能强大,同时它基于神经网络,使得操作简单易上手,是一套备受推崇的经典插件。Retouch4me无需对皮肤问题区域进行手动操作,只需按一下按钮即可获得高质量结果!而且还可以实现专业工作流......
  • 高阶函数, 装饰器的编写
    符合如下之一特点的即为高阶函数:接受函数名作为形参返回值包含函数名错误写法:  装饰器函数  原理: 正确的装饰器写法: ......
  • python一题多解:编写函数 change(str1) ,其功能是对参数 str1 进行大小写转换
    #习题6,3.编程题,p95#(2)编写函数change(str1),其功能是对参数str1进行大小写转换,#将大写字母转换成小写字母;#小写字母转换成大写字母;#非英文字符不转换。#类似p54,4.编程题(1),用分支语句实现。defchange1(str1):ret=""foriinrange(len(s......
  • SQL编写规范
    SQL编写规范(1分钟上手)原创 kingdom 数码百科 2023-06-2800:45 发表于广东收录于合集#mysql12个#数据库14个#数据存储10个#大数据11个#数据仓库8个 SQL编写规范尽量避免使用select ,join语句使用select 可能导致只需要访问索引即可完成的查询需要回......