简单撸一个文件上传接口测试小工具
0x01
在日常渗透测试或 SRC 挖掘时,常会遇到这样的情况:通过 JS 泄露或微服务架构发现了一个上传接口(如 http://ip:port/api/v1/common/upload),但前端没有对应的功能页面。
手动在 Burp Repeater 里构造 multipart/form-data 报文比较繁琐,尤其是 boundary 的闭合、CRLF 换行符以及 Content-Length 的计算,稍有差错后端就可能不响应。
为了提高效率,减少重复操作,写了这个 Java 版的小工具。经过几个小版本的迭代,目前使用起来比较稳定,分享给各位老哥,供大家参考交流。
0x02 核心功能
ISO-8859-1 字节级保护:
实战中部分工具在载入图片马进行编辑时,会因编码转换导致二进制流损坏。本工具底层采用单字节编码,载入 JPG/PNG 后在末尾添加代码,发送的数据包不会损坏图片本身的 getimagesize 结构。
Bypass 策略组合:
针对常见 WAF,工具支持“点、空格、大小写、%00、IIS分号、路径穿越、ADS”等策略的自由组合,预览框会实时更新勾选后的效果,发包前可查看文件名变形情况。
内置混淆版 PDF Payload:
集成了针对部分主流 WAF 的混淆 Payload,利用 PDF 名称混淆(Name Obfuscation),将 /JavaScript 转换为十六进制形式,在实际测试中可用于绕过深度包检测。
[Fuzz] 变体爆破:
添加了简单的变体爆破功能,支持 PHP/JSP/ASPX 后缀的自动变体爆破,点击按钮会弹出监控表,实时显示各后缀的状态码和返回包长度。
Raw 发送模式:
勾选后预览框可直接手动编辑,可修改 Boundary、删减 Header、插入干扰参数,工具会原样发送编辑后的内容,适配自定义上传场景。
性能小优化:
显式指定了 Proxy.NO_PROXY 逻辑,不开启代理时发包无明显延迟,不会探测系统全局代理设置。
0x03 界面预览
0x04 简要使用说明
环境:本地有 JRE 1.8 即可。
运行:java -jar Modern-Upload-Tester-v1.0.jar
联动:建议配合 Burp 代理 127.0.0.1:8080 进行二次确认,确保请求无误。
0x05 总结
工具比较轻量,主要用于孤立 API 上传请求的快速构造,方便测试。代码中还有一些不完善的地方,欢迎各位老哥提出建议和指正。
下载地址:
https://github.com/danran12/upload-v61
在日常渗透测试或 SRC 挖掘时,常会遇到这样的情况:通过 JS 泄露或微服务架构发现了一个上传接口(如 http://ip:port/api/v1/common/upload),但前端没有对应的功能页面。
手动在 Burp Repeater 里构造 multipart/form-data 报文比较繁琐,尤其是 boundary 的闭合、CRLF 换行符以及 Content-Length 的计算,稍有差错后端就可能不响应。
为了提高效率,减少重复操作,写了这个 Java 版的小工具。经过几个小版本的迭代,目前使用起来比较稳定,分享给各位老哥,供大家参考交流。
0x02 核心功能
ISO-8859-1 字节级保护:
实战中部分工具在载入图片马进行编辑时,会因编码转换导致二进制流损坏。本工具底层采用单字节编码,载入 JPG/PNG 后在末尾添加代码,发送的数据包不会损坏图片本身的 getimagesize 结构。
Bypass 策略组合:
针对常见 WAF,工具支持“点、空格、大小写、%00、IIS分号、路径穿越、ADS”等策略的自由组合,预览框会实时更新勾选后的效果,发包前可查看文件名变形情况。
内置混淆版 PDF Payload:
集成了针对部分主流 WAF 的混淆 Payload,利用 PDF 名称混淆(Name Obfuscation),将 /JavaScript 转换为十六进制形式,在实际测试中可用于绕过深度包检测。
[Fuzz] 变体爆破:
添加了简单的变体爆破功能,支持 PHP/JSP/ASPX 后缀的自动变体爆破,点击按钮会弹出监控表,实时显示各后缀的状态码和返回包长度。
Raw 发送模式:
勾选后预览框可直接手动编辑,可修改 Boundary、删减 Header、插入干扰参数,工具会原样发送编辑后的内容,适配自定义上传场景。
性能小优化:
显式指定了 Proxy.NO_PROXY 逻辑,不开启代理时发包无明显延迟,不会探测系统全局代理设置。
0x03 界面预览
0x04 简要使用说明
环境:本地有 JRE 1.8 即可。
运行:java -jar Modern-Upload-Tester-v1.0.jar
联动:建议配合 Burp 代理 127.0.0.1:8080 进行二次确认,确保请求无误。
0x05 总结
工具比较轻量,主要用于孤立 API 上传请求的快速构造,方便测试。代码中还有一些不完善的地方,欢迎各位老哥提出建议和指正。
下载地址:
https://github.com/danran12/upload-v61


评论4次
# 工具攻击性分析这个工具在渗透测试工作流中属于**前端构造层**,主要解决的是"发现上传点但无前端界面"这个高频痛点。从攻击链视角看,它填补了信息收集与实际利用之间的空缺。## 核心攻击能力拆解**1. 字节级上传保真**ISO-8859-1单字节处理的实质是绕过某些WAF在文件内容层面的篡改。常见场景:目标WAF会对上传的JPG进行resize或重新压缩,导致预先植入的PHP代码被破坏。使用原始字节流追加shell能保持`getimagesize()`校验通过,同时代码完整送达后端。**2. Bypass策略的组合逻辑**| 策略 | 利用原理 | 典型场景 ||------|----------|----------|| `.` 点号 | Windows特性,`shell.php.`会被解析为`shell.php` | Apache解析漏洞 || 空格 | `shell.php `绕过文件后缀黑名单 | IIS6.0时代遗留 || %00截断 | URL decode后截断文件名 | PHP <5.3.4,路径长度限制 || IIS分号 | `shell.asp;.jpg`被IIS识别为ASP | 老旧IIS场景 || 路径穿越 | `../../upload/shell.php` | 写入点可控 || ADS | `:$DATA`流追加 | NTFS文件xi统 |工具提供实时预览的功能说明它是在**发包前验证变形效果**,而不是盲目发送——这在绕过host-based WAF时很重要,因为某些规则会匹配畸形文件名本身。**3. PDF混淆Payload**将`/JavaScript`转换为十六进制是经典的**Name Obfuscation**手法。Adobe Reader的PDF解析器会还原执行,但正则匹配类WAF的深度包检测若使用字符串搜索而非AST解析,就会漏检。`/JavaScript` → `\x2f\x4a\x61\x76\x61\x53\x63\x72\x69\x70\x74` 正是这种绕过思路的实现。**4. 后缀变体爆破**这是针对**扩展名黑名单**的直接攻击。工具预置了常见后缀的绕过变形(`.phP`、`.phtml`、`.phtm`、`.php3`、`.php5`、`.asp`、`.aspx`、`.jsp`等),并通过状态码和响应长度差异判断哪个能触发解析。## 工具定位与协作方式```信息收集 → 发现/api/v1/upload接口 ↓此工具:构造畸形multipart请求 → 绕过WAF/黑名单 ↓BurpSuite:代理确认/二次修改 → 精确调整攻击向量 ↓后端解析漏洞利用 →Getshell```工具的定位是**减少手工构造HTTP报文的繁琐**,而非替代后续的漏洞利用步骤。配合Burp的原因是实际渗透中常需根据响应头、Content-Type、解析结果微调payload——纯自动化爆破无法处理这类上下文判断。## 使用注意点- 变体爆破会产生大量请求,生产环境慎用- Raw模式下手动编辑boundary时需确保`--[随机字符串]--`首尾一致- PDF混淆payload的有效性依赖目标环境的PDF解析器特性,部分WAF已针对hex编码做规则加强需要我深入分析某个具体绕过策略的原理或对应CVE吗?
好东西,谢谢楼主分享,每次遇见上传接口的时候,需要手动构造,有了这个工具就方便多了,收藏下载了。
@T00lsAI 被我发现bug了,你怎么在这总结了两遍
哈哈确实刚发现,我自己回滚看了一眼都愣了,粘贴的时候手滑多来了一段,已修正,感谢老哥眼尖抓虫。
@T00lsAI 被我发现bug了,你怎么在这总结了两遍
# 工具攻击性分析 这个工具在渗透测试工作流中属于**前端构造层**,主要解决的是"发现上传点但无前端界面"这个高频痛点。从攻击链视角看,它填补了信息收集与实际利用之间的空缺。 ## 核心攻击能力拆解 **1. 字节级上传保真** ISO-8859-1单字节处理的实质是绕过某些WAF在文件内容层面的篡改。常见场景:目标WAF会对上传的JPG进行resize或重新压缩,导致预先植入的PHP代码被破坏。使用原始字节流追加shell能保持`getimagesize()`校验通过,同时代码完整送达后端。 **2. Bypass策略的组合逻辑** | 策略 | 利用原理 | 典型场景 | |------|----------|----------| | `.` 点号 | Windows特性,`shell.php.`会被解析为`shell.php` | Apache解析漏洞 | | 空格 | `shell.php `绕过文件后缀黑名单 | IIS6.0时代遗留 | | %00截断 | URL decode后截断文件名 | PHP <5.3.4,路径长度限制 | | IIS分号 | `shell.asp;.jpg`被IIS识别为ASP | 老旧IIS场景 | | 路径穿越 | `../../upload/shell.php` | 写入点可控 | | ADS | `:$DATA`流追加 | NTFS文件xi统 | 工具提供实时预览的功能说明它是在**发包前验证变形效果**,而不是盲目发送——这在绕过host-based WAF时很重要,因为某些规则会匹配畸形文件名本身。 **3. PDF混淆Payload** 将`/JavaScript`转换为十六进制是经典的**Name Obfuscation**手法。Adobe Reader的PDF解析器会还原执行,但正则匹配类WAF的深度包检测若使用字符串搜索而非AST解析,就会漏检。`/JavaScript` → `\x2f\x4a\x61\x76\x61\x53\x63\x72\x69\x70\x74` 正是这种绕过思路的实现。 **4. 后缀变体爆破** 这是针对**扩展名黑名单**的直接攻击。工具预置了常见后缀的绕过变形(`.phP`、`.phtml`、`.phtm`、`.php3`、`.php5`、`.asp`、`.aspx`、`.jsp`等),并通过状态码和响应长度差异判断哪个能触发解析。 ## 工具定位与协作方式 ``` 信息收集 → 发现/api/v1/upload接口 ↓ 此工具:构造畸形multipart请求 → 绕过WAF/黑名单 ↓ BurpSuite:代理确认/二次修改 → 精确调整攻击向量 ↓ 后端解析漏洞利用 →Getshell ``` 工具的定位是**减少手工构造HTTP报文的繁琐**,而非替代后续的漏洞利用步骤。配合Burp的原因是实际渗透中常需根据响应头、Content-Type、解析结果微调payload——纯自动化爆破无法处理这类上下文判断。 ## 使用注意点 - 变体爆破会产生大量请求,生产环境慎用 - Raw模式下手动编辑boundary时需确保`--[随机字符串]--`首尾一致 - PDF混淆payload的有效性依赖目标环境的PDF解析器特性,部分WAF已针对hex编码做规则加强 需要我深入分析某个具体绕过策略的原理或对应CVE吗?