Skip to content

Commit 3d90b49

Browse files
author
githubnull
committed
新增 ShowMeUCode 插件的核心文件,包括 pom.xml、README.md、配置管理类、提取器及用户界面组件,提供从 HTTP 请求体中提取真实接口名称的功能。
1 parent 0ca7638 commit 3d90b49

21 files changed

+2036
-0
lines changed

.cursor/rules/project.mdc

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
description:
3+
globs:
4+
alwaysApply: true
5+
---
6+
# showMeUCode burpsuite 接口显现插件
7+
8+
## 项目介绍
9+
showMeUCode 是一个由java编写的java插件,用于burpsuite的接口显现。
10+
在有些测试场景下,目标站点的真正接口名写在POST请求体中,表面上显示的接口名都是一样的。这就需要一个插件去把真正的接口名显现到备注里面来,然后就可以很方便的在历史记录里面看到真正的接口名,以方便把握测试细节和测试进度以及测试覆盖程度。
11+
12+
## 开发环境
13+
- 操作系统: windows11
14+
- 命令行环境: cmd 或者 powershell
15+
16+
## 技术选型
17+
- 语言及版本: java17
18+
- 构建工具: maven
19+
- 插件管理工具: burp suite
20+
- 依赖montoya-api版本: montoya-api:2025.4
21+
22+
23+
## 项目结构
24+
```bash
25+
showMeUCode/
26+
├── docs
27+
├── pom.xml
28+
└── src
29+
├── main
30+
│   ├── java
31+
│   │   └── org
32+
│   │   └── oxff
33+
│   └── resources
34+
└── test
35+
└── java
36+
```
37+
38+
插件入口类文件: ShowMeUCode.java
39+
40+
## 代码规范
41+
- 函数和变量命名:使用小驼峰命名法,例如函数:getUserInfo, 变量:userInfo
42+
- 函数和变量注释:使用中文注释,使用英文冒号 : 进行分割,例如:获取用户信息: getUserInfo: 获取用户信息
43+
- 常量命名:使用全大写字母,使用下划线分割单词,例如:USER_INFO
44+
- 模块化设计:使用模块化设计,每个功能模块应该单独一个类或者一个文件,避免代码冗余和耦合。
45+
- 代码列数: 单行最多120个字符
46+
- 代码文件行数: 一个文件代码文件最多不超过500行
47+
- 函数功能要求:一个函数只做一件事情,并把这件事情做好
48+
- 边界检查:尽可能使用边界检查,避免出现空指针异常等
49+
- 异常处理:尽可能使用try...except...finally...进行异常处理,并使用日志记录异常信息

.idea/.gitignore

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/encodings.xml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# ShowMeUCode
2+
3+
ShowMeUCode是一个Burp Suite插件,用于在HTTP历史记录中显示隐藏在请求体中的真实接口名称。
4+
5+
## 项目背景
6+
7+
在Web安全测试过程中,许多现代Web应用采用统一的API网关架构,所有API请求都指向同一个URL(如`/api/v1/gateway``/api/service`),而真正的接口名称或方法名则被包含在请求体中。这使得安全测试人员在使用Burp Suite查看历史记录时,难以区分不同的API请求,从而影响测试效率和测试覆盖度的把控。
8+
9+
ShowMeUCode插件通过自动从HTTP请求体中提取真实接口名称,并将其显示在Burp Suite的请求备注中,帮助测试人员更直观地管理测试进度。
10+
11+
## 主要功能
12+
13+
- 自动从HTTP请求体中提取真实接口名称
14+
- 支持多种常见数据格式(JSON、XML、表单数据)
15+
- 提供灵活的提取规则配置(正则表达式、JSON路径、XPath)
16+
- 提供简洁直观的用户界面
17+
- 可配置的URL匹配规则
18+
- 配置保存与加载功能
19+
20+
## 安装方法
21+
22+
1. 下载最新版本的`showMeUCode.jar`文件
23+
2. 打开Burp Suite
24+
3. 进入"Extensions"标签页
25+
4. 点击"Add"按钮
26+
5. 在"Extension Type"下选择"Java"
27+
6. 在"Extension File"中选择下载的JAR文件
28+
7. 点击"Next"完成安装
29+
30+
## 使用方法
31+
32+
1. 安装完成后,在Burp Suite的Extensions标签页中找到ShowMeUCode插件
33+
2. 进入插件配置面板,设置需要监听的URL模式和提取规则
34+
3. 开启插件功能
35+
4. 使用Burp Suite拦截或发送请求
36+
5. 在HTTP历史记录中查看带有提取出的接口名称的请求备注
37+
38+
## 配置说明
39+
40+
### URL匹配规则
41+
42+
指定哪些URL的请求需要进行处理。支持正则表达式,例如:
43+
- `.*api/gateway.*` - 匹配所有包含api/gateway的URL
44+
- `^https://example.com/api/.*` - 匹配特定域名下的API请求
45+
46+
### 提取规则
47+
48+
定义如何从请求体中提取接口名称。支持多种格式:
49+
50+
1. **正则表达式**:适用于各种文本格式
51+
例如:`"method"\s*:\s*"([^"]+)"`
52+
53+
2. **JSON路径**:适用于JSON格式的请求
54+
例如:`$.method``$.data.action`
55+
56+
3. **XPath**:适用于XML格式的请求
57+
例如:`//methodName``/root/action/@name`
58+
59+
## 构建说明
60+
61+
如需从源码构建:
62+
63+
```bash
64+
git clone https://github.com/GitHubNull/showMeUCode.git
65+
cd showMeUCode
66+
mvn clean package
67+
```
68+
69+
构建完成后,JAR文件将位于`target`目录中。
70+
71+
## 系统要求
72+
73+
- Java 17或更高版本
74+
- Burp Suite Professional/Community 2020.12或更高版本
75+
76+
## 开源许可
77+
78+
本项目采用MIT许可证。
79+
80+
## 贡献指南
81+
82+
欢迎提交问题报告、功能请求或代码贡献。请遵循以下步骤:
83+
84+
1. Fork本仓库
85+
2. 创建您的特性分支 (`git checkout -b feature/amazing-feature`)
86+
3. 提交您的更改 (`git commit -m 'Add some amazing feature'`)
87+
4. 推送到分支 (`git push origin feature/amazing-feature`)
88+
5. 开启一个Pull Request
89+
90+
## 作者
91+
92+
GitHubNull - [https://github.com/GitHubNull](https://github.com/GitHubNull)
93+
94+
## 致谢
95+
96+
- 感谢Burp Suite提供的优秀安全测试平台
97+
- 感谢所有为本项目提供反馈和建议的用户

docs/requirements.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# showMeUCode需求说明书
2+
3+
## 1. 项目概述
4+
5+
### 1.1 项目背景
6+
在安全测试过程中,许多Web应用使用统一的API接口路径(如`/api/v1/gateway`),真正的接口名称或方法名被包含在请求体中。这导致安全测试人员无法直观地从Burp Suite的历史记录中识别不同请求所对应的实际接口。
7+
8+
### 1.2 项目目标
9+
开发一个Burp Suite插件,能够自动从HTTP请求体中提取真实的接口名称,并将其显示在Burp Suite的请求备注中,以便测试人员可以更高效地进行安全测试和管理测试进度。
10+
11+
## 2. 功能需求
12+
13+
### 2.1 核心功能
14+
- 自动分析HTTP请求,从请求体中提取真实接口名称
15+
- 将提取的接口名称添加到Burp Suite请求的备注中
16+
- 支持多种常见的API请求格式(JSON、XML、Form表单等)
17+
- 提供用户可配置的正则表达式或JSON路径,用于自定义提取规则
18+
19+
### 2.2 用户界面
20+
- 提供简洁的配置界面,允许用户:
21+
- 启用/禁用插件功能
22+
- 配置需要监听的URL模式(支持正则表达式)
23+
- 配置接口名称的提取规则
24+
- 设置提取内容的格式化规则
25+
26+
### 2.3 配置存储
27+
- 保存用户配置,在Burp Suite重启后能够恢复设置
28+
29+
## 3. 非功能需求
30+
31+
### 3.1 性能需求
32+
- 插件处理请求的时间不应明显影响Burp Suite的整体性能
33+
- 插件应该能够处理大量请求而不出现内存泄漏问题
34+
35+
### 3.2 兼容性需求
36+
- 兼容Burp Suite最新版本及之前的稳定版本
37+
- 在Windows、Linux和macOS操作系统上可正常运行
38+
39+
### 3.3 可维护性
40+
- 代码结构清晰,遵循Java编程规范
41+
- 提供充分的注释和文档说明
42+
- 采用模块化设计,便于未来扩展功能
43+
44+
### 3.4 安全性
45+
- 插件不应修改原始请求和响应内容
46+
- 不应将分析的数据发送到外部服务器
47+
48+
## 4. 使用场景
49+
50+
### 场景1:API接口测试
51+
1. 测试人员向目标站点发送多个API请求
52+
2. 所有请求都指向同一URL路径(如`/api/v1/gateway`
53+
3. 每个请求的正文中包含不同的接口名称(如`method: getUserInfo``method: updateUserProfile`
54+
4. 插件自动从请求体中提取接口名称并显示在Burp Suite的备注中
55+
5. 测试人员可以在历史记录中直观地看到每个请求对应的实际接口
56+
57+
### 场景2:自定义提取规则
58+
1. 测试目标使用特殊格式的API调用
59+
2. 测试人员在插件配置界面中设置自定义的提取规则
60+
3. 插件根据自定义规则提取接口名称
61+
62+
## 5. 技术规格
63+
64+
### 5.1 开发环境
65+
- Java 17
66+
- Maven构建工具
67+
- Burp Suite Montoya API 2025.4
68+
69+
### 5.2 代码规范
70+
- 函数和变量命名:使用小驼峰命名法
71+
- 函数和变量注释:使用中文注释,使用英文冒号分割
72+
- 常量命名:使用全大写字母,下划线分割单词
73+
- 模块化设计:每个功能模块应该单独一个类
74+
- 代码列数限制:单行最多120个字符
75+
- 代码文件行数限制:一个文件最多不超过500行
76+
- 异常处理:使用try-catch-finally进行异常处理,使用日志记录异常信息
77+
78+
## 6. 交付物
79+
80+
- 源代码及完整项目结构
81+
- 编译好的jar包,可直接加载到Burp Suite中
82+
- 使用说明文档
83+
- 项目开发文档
84+
85+
## 7. 项目里程碑
86+
87+
- 需求分析与设计完成
88+
- 核心功能开发完成
89+
- 用户界面开发完成
90+
- 测试与问题修复
91+
- 文档完善
92+
- 最终交付

docs/tasks.md

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# showMeUCode项目任务清单
2+
3+
## 1. 项目准备与环境搭建
4+
5+
- [x] 创建项目基本结构
6+
- [x] 配置pom.xml,添加Burp Suite Montoya API依赖
7+
- [x] 创建文档目录与基础文档
8+
- [x] 创建项目README.md文件
9+
10+
## 2. 项目架构设计
11+
12+
- [x] 定义项目整体架构
13+
- [x] 设计类结构关系图
14+
- [x] 确定配置文件格式与存储方式
15+
- [x] 设计用户界面布局
16+
17+
## 3. 核心功能开发
18+
19+
### 3.1 基础框架
20+
21+
- [x] 创建插件入口类(ShowMeUCode.java)
22+
- [x] 实现HTTP监听器接口
23+
- [x] 实现UI组件接口
24+
- [x] 实现配置保存与加载功能
25+
26+
### 3.2 HTTP请求处理
27+
28+
- [x] 实现HTTP请求拦截功能
29+
- [x] 开发请求体内容提取模块
30+
- [x] 实现JSON格式请求体解析
31+
- [ ] 实现XML格式请求体解析
32+
- [ ] 实现Form表单格式请求体解析
33+
- [x] 实现接口名称提取正则表达式规则引擎
34+
- [x] 实现JSON路径提取规则引擎
35+
- [ ] 实现XPath提取规则引擎
36+
- [x] 开发注释更新功能
37+
38+
### 3.3 用户界面开发
39+
40+
- [x] 创建主配置面板
41+
- [x] 实现启用/禁用功能控制
42+
- [x] 实现URL匹配规则配置界面
43+
- [x] 实现提取规则配置界面
44+
- [ ] 开发规则测试功能
45+
- [ ] 实现配置导入/导出功能
46+
47+
## 4. 测试与优化
48+
49+
- [ ] 编写单元测试用例
50+
- [ ] 进行功能集成测试
51+
- [ ] 使用真实API场景测试
52+
- [ ] 性能测试与优化
53+
- [ ] 内存使用优化
54+
- [x] 异常情况处理优化
55+
56+
## 5. 文档编写
57+
58+
- [x] 编写需求说明书
59+
- [x] 创建任务清单
60+
- [x] 编写使用说明文档
61+
- [x] 创建用户指南(包含截图)
62+
- [ ] 编写开发者文档(包含架构说明)
63+
- [x] 完善代码注释
64+
65+
## 6. 构建与部署
66+
67+
- [x] 配置Maven构建脚本
68+
- [ ] 创建发布版本jar包
69+
- [ ] 测试发布版本在Burp Suite中的加载与使用
70+
- [ ] 创建发布说明文档
71+
72+
## 7. 版本管理与计划
73+
74+
### v1.0.0(基础版本)
75+
76+
- [x] 支持基本的请求拦截与解析
77+
- [x] 提供简单的配置界面
78+
- [x] 支持JSON格式的请求体解析
79+
- [x] 支持正则表达式提取规则
80+
81+
### v1.1.0(增强版本)
82+
83+
- [ ] 增加XML和Form表单解析支持
84+
- [x] 添加JSON路径和XPath提取规则
85+
- [x] 优化用户界面,增加使用反馈
86+
- [ ] 提供配置导入/导出功能
87+
88+
### v1.2.0(完善版本)
89+
90+
- [ ] 增加历史记录搜索功能
91+
- [ ] 添加结果统计分析功能
92+
- [ ] 提供批量处理功能
93+
- [ ] 增加自定义规则模板功能

0 commit comments

Comments
 (0)