Skip to content

Commit 0ec02fb

Browse files
committed
update
1 parent 34a1d23 commit 0ec02fb

14 files changed

Lines changed: 4654 additions & 311 deletions

README.md

Lines changed: 171 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,188 @@
11
![](https://avatars.githubusercontent.com/u/87968663?s=200&v=4)
22

33
郑重声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担。
4-
# 介绍
4+
### 介绍
55
作者:[p0desta](https://github.com/p0desta/)[Y0!0](https://github.com/hooray195)[0cat ](https://github.com/0cat-r)
66

77
团队:[0x727](https://github.com/0x727),未来一段时间将陆续开源工具,地址:[https://github.com/0x727](https://github.com/0x727)
88

99
定位:在攻防和渗透测试中,可以更加方便的找到一些绕过的点,比如403bypass,比如shiro的权限绕过
1010

11-
语言:Java11
11+
语言:Java 8(`pom.xml``source/target=8`,产物可在 Java 8 环境运行;构建可使用 JDK 8+)
1212

1313
功能:权限绕过的自动化bypass的burpsuite插件。
1414

1515
此项目是基于p0desta师傅的项目[https://github.com/p0desta/AutoBypass403-BurpSuite](https://github.com/p0desta/AutoBypass403-BurpSuite)进行二开的。用于权限绕过,403bypass等的自动化bypass的Burpsuite插件。感谢p0desta师傅的开源,本二开项目已经过p0desta师傅本人允许开源。
1616

17-
# 新增加的功能
18-
19-
1. 新增被动扫描功能
20-
21-
![image.png](https://cdn.nlark.com/yuque/0/2023/png/22658608/1680773992648-7076f536-a848-4f2a-a1f6-fe88bf530d72.png#averageHue=%23f5f3f1&clientId=ud59bccca-0a4a-4&from=paste&height=66&id=udf6d3a34&name=image.png&originHeight=82&originWidth=525&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=3932&status=done&style=none&taskId=u8f8caa7e-a1c2-4269-8f71-182e01050e1&title=&width=420)
22-
23-
2. 对被动扫描和主动扫描的逻辑做重新判断
24-
3. 增加字段tool 和id 可以判断哪些是被动流量 哪些是主动流量
25-
4. 添加了/public/..;的fuzz
26-
5. 被动扫描下,对如下静态文件后缀进行过滤,不进行绕过
27-
28-
`js,css,png,gif,jpg,mp4,mp3,tif,swf,wmv,map,zip,exe,so,rar,gz,iso,avi,pdf,doc`
29-
30-
6. 增加了request/response 双窗格显示
31-
32-
![](https://cdn.nlark.com/yuque/0/2023/png/22658608/1680772585348-ac7607e4-8e92-4d02-97d5-e1887389e06d.png#averageHue=%23f9f7f5&clientId=ud59bccca-0a4a-4&from=paste&id=u8be2f93a&originHeight=1341&originWidth=2471&originalType=url&ratio=1.25&rotation=0&showTitle=false&status=done&style=none&taskId=u54d79313-8266-4827-91e5-0731a49a37c&title=)
33-
34-
# 用法
35-
被动扫描:勾选上之后,proxy 流量中出现403 301 404 302 的时候去自动bypass
36-
主动扫描:取消勾选之后,可以在proxy 流量中选择一些右键发送到BypassPro 去自动fuzz
37-
当状态码是200,415,405则会进行回显,页面相似度80%以下进行回显
38-
![](https://cdn.nlark.com/yuque/0/2023/png/22658608/1680775299560-6dc3d2e8-0060-41eb-8c3d-247c35fa405c.png#averageHue=%23fbfbfb&clientId=u113930d5-5cde-4&from=paste&id=u82eda32d&originHeight=835&originWidth=2500&originalType=url&ratio=1.25&rotation=0&showTitle=false&status=done&style=none&taskId=u179c5fb9-de8a-41d8-988f-bc58175c353&title=)
39-
主动扫描:右键发送
40-
![image.png](https://cdn.nlark.com/yuque/0/2023/png/22658608/1680775376139-7ab589d5-8bf6-4239-80e6-a1470d5c91f1.png#averageHue=%23f8f4f2&clientId=u113930d5-5cde-4&from=paste&height=889&id=uc96e49ac&name=image.png&originHeight=1111&originWidth=1798&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=532821&status=done&style=none&taskId=u24bc1fcd-ae55-4ac4-9d13-e20436ac17b&title=&width=1438.4)
41-
42-
43-
**注意事项**,该工具会一定程度上触发waf,所以当目标站点有waf 请关闭被动扫描。
44-
45-
# 案例
17+
### 当前版本更新
18+
19+
#### 新增功能
20+
21+
**1. 新增 Mode 2: Auto WAF Bypass(自动 WAF 绕过)**
22+
23+
右键 `Send to BypassPro (WAF)` 触发,自动对请求 Body 进行多种编码变形绕过 WAF:
24+
25+
- Body 字符集编码:UTF-16 / UTF-16BE / UTF-16LE / UTF-32 / UTF-32LE / IBM037 / cp290
26+
- Body 压缩:Gzip 压缩请求体,同时设置 `Content-Encoding: gzip`
27+
- Content-Type 欺骗:
28+
- `multipart/form-data`:表单参数自动拆解为标准 multipart 格式;非表单类型做 Header 欺骗
29+
- `text/plain`:伪装 Content-Type 绕过 WAF 对 JSON/XML 的检测
30+
- 每种变形生成独立变体请求,结果经相似度过滤后入表
31+
32+
**2. 新增 Mode 3: Manual WAF Bypass(手动 WAF 工作台)**
33+
34+
右键 `Send to BypassPro (Manual WAF)` 将请求送入工作台,类似 Repeater 但专为 WAF 绕过设计:
35+
36+
- 编辑器:使用 Burp 原生 IMessageEditor,支持 Raw/Hex 视图,可处理二进制/Gzip 数据
37+
- 目标可编辑:Host/Port/HTTPS 输入框,支持测试 Host 头欺骗或切换目标
38+
- Transform Tools(变换工具):
39+
- Encoding:URL Encode/Decode、Double URL、Base64、Hex、Unicode Escape
40+
- Case:UPPER、lower、RaNdOm 随机大小写
41+
- Unicode:全角字符、同形字 (Homoglyph)
42+
- SQL Bypass:`/**/` 包裹、`/*!50000*/` 版本注释、空白转 `/**/`
43+
- Path:`../` 插入、`..;/` Tomcat 绕过
44+
- Dirty Data:`{{dirty(N)}}` 随机数字、`{{dirtynull(N)}}` NUL 字节(发送时展开)
45+
- Request:Gzip 压缩、To Multipart 转换、HTTP/1.0 降级、字符集编码(UTF-16/32/IBM037 等)
46+
- 发送控制:
47+
- Send / Cancel 按钮,支持中断请求
48+
- Follow Redirect 开关,控制是否跟随 301/302/303/307/308(最多 10 跳)
49+
- Ctrl+Enter / Cmd+Enter 快捷发送
50+
- 状态栏:显示 Status Code / Time(ms) / Request Size / Response Size / Redirect 次数
51+
- History:
52+
- 显示 Method / Path / Status / Length / Time(ms) / 时间戳
53+
- 双击或右键可将历史请求加载回编辑器继续修改
54+
- 最多保留 50 条,Undo/Redo 最多 20 步
55+
- 结果记录:不做相似度过滤,所有发送都写入 History 和 Dashboard
56+
57+
**3. UI 重构**
58+
59+
- 页签拆分:Dashboard(结果表格 + Request/Response 双窗格)/ Config(配置管理)/ Manual WAF(手动工作台)
60+
- 进度显示:Dashboard 顶部增加动画进度条 + 完成数/总数
61+
- Auto Scan:勾选后监听 Proxy 响应,命中 401/403 时自动触发扫描
62+
- 右键菜单拆分:
63+
- `Send to BypassPro (Access Control)`:访问控制绕过
64+
- `Send to BypassPro (WAF)`:WAF 绕过(Body 编码变形)
65+
- `Send to BypassPro (Manual WAF)`:送入手动工作台
66+
67+
**4. 配置文件升级(参考 HaE)**
68+
69+
- 外置配置:`~/.config/BypassPro/BypassPro-config.yaml`
70+
- 首次启动:若外置文件不存在,从 jar 内置模板自动生成
71+
- 更新插件不覆盖:只有点击 Config 页的 Reinit 并确认才会重置
72+
- Config 页面:支持 Reload(重新加载)/ Reinit(恢复默认)/ 当前规则展示
73+
74+
#### 优化与修复
75+
76+
**Mode 1 (Access Control)**
77+
- HTTP-Version 处理:修改版本号时不再清空原有 Headers
78+
79+
**Mode 2 (WAF)**
80+
- Body 二进制安全:使用 ISO_8859_1 处理,不破坏二进制数据
81+
- Content-Type charset:正则替换已有 charset,不会出现 `charset=utf-8; charset=utf-16`
82+
- CL-TE 冲突:修改 Body 后自动移除 `Transfer-Encoding`
83+
- Multipart 智能转换:表单参数拆解还原,非表单做 Header 欺骗
84+
- 重定向保留 Payload:跟随重定向时传入已编码的 Body
85+
86+
**Mode 3 (Manual)**
87+
- 脏数据与 CL:检测用户是否手动修改了 Content-Length(用于 CL-TE 测试),若已修改则不自动覆盖
88+
- HTTP/1.0 降级:完整清洗 Keep-Alive / Transfer-Encoding / Connection 头
89+
- Gzip 防双重压缩:检查 Header 和 Magic Bytes (1F 8B),已压缩时提示
90+
91+
**全局**
92+
- 线程池:全局单例 ExecutorService,避免线程爆炸
93+
- 内存保护:History 最多 50 条,Undo/Redo 最多 20 步
94+
- 并发安全:Dashboard 表格写入加锁,避免多线程竞争
95+
96+
### 用法
97+
98+
#### 工作模式(Modes)
99+
100+
本插件围绕“**把同一个目标请求快速变形并重放**”来提高发现绕过点的效率。不同模式的区别主要是:**触发方式****使用的规则集(profile)****是否做相似度过滤****结果如何落表**
101+
102+
##### 1)Auto Scan(自动触发 / 访问控制)
103+
- **入口**`Dashboard` 页勾选 **Auto Scan**
104+
- **触发方式**:监听 Proxy 响应;当响应状态码命中 `401/403` 时自动触发
105+
- **规则集**:固定使用 `profiles.access_control`(不会跑 WAF profile)
106+
- **静态资源过滤**:对常见静态后缀不触发(避免噪声与额外请求)
107+
- **用途定位**:批量找 401/403 访问控制绕过点(如 403 bypass、权限绕过)
108+
109+
##### 2)主动 Auth Bypass(自动 / 访问控制)
110+
- **入口**:在 Proxy/Target 等视图选中请求右键 **Send to BypassPro (Access Control)**
111+
- **规则集**`profiles.access_control`
112+
- **用途定位**:对“你指定的某一个请求”做访问控制绕过变形与重放(比 Auto Scan 更可控)
113+
114+
##### 3)主动 WAF Bypass(自动 / 规则集)
115+
- **入口**:右键 **Send to BypassPro (WAF)**
116+
- **规则集**:优先使用 `profiles.waf`;当配置未提供 `waf` profile 时会回退到 `profiles.access_control`
117+
- **用途定位**:对“你指定的某一个请求”按 WAF 规则集做路径/头部等自动变形(适合验证被拦截页/风控页的差异)
118+
119+
##### 4)主动 WAF Bypass(手动 / 工作台)
120+
- **入口**:右键 **Send to BypassPro (Manual WAF)**(把选中的请求送入 `Manual WAF` 页签)
121+
- **交互方式**:在工作台里直接编辑请求;选中文本后点击右侧/下方的变换工具进行变形;点击 **Send** 发送
122+
- **结果记录**:手动模式不做相似度过滤;每次 Send 都会记录到 **History**,同时写入 Dashboard(`Tool` 列会标记为 `WAF Bypass (Manual)`
123+
- **用途定位**:面向“研究型绕过”,适合逐步试探、组合变形、观察差异
124+
125+
#### 模式背后的核心逻辑(How it works)
126+
127+
##### A. 变形规则如何生成
128+
- 自动模式的变形主要来自配置文件 `profiles.<profile>``access_control`/`waf`):
129+
- **suffix**:对路径尾部追加变体(如 `/.``;/.css``%09` 等)
130+
- **prefix**:对路径的每一层目录做前缀变体(如 `;/``%2e/``images/..;/` 等)
131+
- **boundary_insert**:在目录边界插入标记(一次只改一个边界,避免组合爆炸)
132+
- **headers**:伪造/注入 Header 变体(如 `X-Forwarded-For``X-Client-IP` 等)
133+
134+
##### B. 自动模式如何回显/落表(减少噪声)
135+
- **落表候选状态码**:变体请求(如遇 30x 会跟随重定向,最多 2 跳)最终响应状态码命中以下集合时,才进入“可能入表”的判断:
136+
`200/206/304/301/302/303/307/308/405/415`
137+
- **入表判定**:同时满足:
138+
- **候选状态码命中**(见上)
139+
- 且满足以下任意一条:
140+
- **相似度低于阈值**:变体响应 body 与原始响应 body 的相似度 \(ratio\) 满足 `ratio < threshold`
141+
- **状态码类别变化**:原始与变体的状态码“百位段”不同(例如 `403 -> 302``401 -> 200`
142+
- **相似度阈值来源**:统一由 `general.similarity_threshold` 管理(在 `Config -> General` 设置)
143+
- **0-1 含义**:表示“变体响应与原始响应的相似程度”(越接近 1 越相似)
144+
- **值越大**:更容易满足 `ratio < threshold`,因此更容易入表(更宽松,噪声可能更多)
145+
- **值越小**:更不容易入表(更严格,只保留差异更大的响应)
146+
147+
##### C. 手动模式为什么不做相似度过滤
148+
- 手动模式的价值在于“人”在迭代选择变形与观察差异,所以工作台会保留所有尝试,方便回溯与对比。
149+
150+
##### D. 手动模式的变换工具(Transform Tools)
151+
- Transform Tools 会对“你选中的文本”做编码/变形(如 URL/Base64/Unicode、大小写、全角/同形字、SQL 注释变形、路径变形等)。
152+
- 为避免插入超大脏数据导致 Burp 卡顿,工作台支持用占位符插入脏数据:
153+
- `{{dirty(N)}}`:发送时生成 N 位随机数字
154+
- `{{dirtynull(N)}}`:发送时生成 N 个 NUL 字节
155+
- 发送前会展开占位符并重算 `Content-Length`,保证实际发包字节与长度一致
156+
157+
#### 内置规则(不可配置)
158+
159+
以下规则硬编码在插件中,用户无法修改:
160+
161+
| 规则 || 说明 |
162+
|------|-----|------|
163+
| Auto Scan 触发状态码 | 401, 403 | Proxy 响应命中这些状态码时触发扫描 |
164+
| 落表候选状态码 | 200, 206, 304, 301, 302, 303, 307, 308, 405, 415 | 变体响应状态码必须在此范围才可能入表 |
165+
| 自动模式重定向跳数 | 最多 2 跳 | 跟随 30x 重定向的最大次数 |
166+
| Manual 模式重定向跳数 | 最多 10 跳 | Follow Redirect 开启时的最大次数 |
167+
| History 最大条数 | 50 条 | 超出后自动删除最旧记录 |
168+
| Undo/Redo 最大步数 | 20 步 | 超出后自动丢弃最旧状态 |
169+
| 静态资源过滤后缀 | .js, .css, .png, .jpg, .gif, .ico, .svg, .woff 等 | Auto Scan 不扫描这些后缀 |
170+
171+
#### 快速开始(推荐流程)
172+
- **先用 Auto Scan**:快速覆盖站点常见的 401/403 场景,找“可能绕过点”
173+
- **对可疑请求用主动模式复测**:右键发起 `Access Control``WAF`
174+
- **需要精细化研究时用 Manual WAF**:把请求送入工作台,多轮变形与对比
175+
176+
### 构建
177+
178+
- Maven 打包:
179+
- `mvn -DskipTests package`
180+
- 产物位于 `target/`
181+
182+
### 注意事项
183+
- Auto Scan 会对命中条件的 Proxy 响应自动发起一批变体请求,目标站点存在 WAF/频率限制时建议关闭 Auto Scan,仅使用手动扫描。
184+
185+
### 案例
46186
之前很多案例没有记录。这次bypasspro又发现了一个
47187

48188
最近的JumpServer未授权访问漏洞(CVE-2023-42442):未经身份验证的远程攻击者利用该漏洞可以访问录像文件,远程获取到敏感信息。

pom.xml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
<groupId>com.Bypass</groupId>
88
<artifactId>BypassPro</artifactId>
9-
<version>2.4</version>
9+
<version>4.0</version>
10+
<packaging>jar</packaging>
1011

1112
<dependencies>
1213
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
@@ -16,13 +17,20 @@
1617
<version>3.8</version>
1718
</dependency>
1819

20+
<dependency>
21+
<groupId>org.yaml</groupId>
22+
<artifactId>snakeyaml</artifactId>
23+
<version>1.33</version>
24+
</dependency>
25+
1926
</dependencies>
2027

2128
<build>
2229
<plugins>
2330
<plugin>
2431
<groupId>org.apache.maven.plugins</groupId>
2532
<artifactId>maven-shade-plugin</artifactId>
33+
<version>3.5.1</version>
2634
<executions>
2735
<execution>
2836
<phase>package</phase>
@@ -33,11 +41,20 @@
3341
</executions>
3442
<configuration>
3543
<createDependencyReducedPom>false</createDependencyReducedPom>
44+
<filters>
45+
<filter>
46+
<artifact>*:*</artifact>
47+
<excludes>
48+
<exclude>META-INF/MANIFEST.MF</exclude>
49+
</excludes>
50+
</filter>
51+
</filters>
3652
</configuration>
3753
</plugin>
3854
<plugin>
3955
<groupId>org.apache.maven.plugins</groupId>
4056
<artifactId>maven-compiler-plugin</artifactId>
57+
<version>3.11.0</version>
4158
<configuration>
4259
<source>8</source>
4360
<target>8</target>

0 commit comments

Comments
 (0)