【juice-shop】★★ Deprecated Interface:利用废弃 B2B 接口

通过分析前端白名单,发现投诉功能中的文件上传接口支持被隐藏的文件类型(XML、YAML),利用已废弃但未删除的 B2B 接口完成挑战。

【juice-shop】★★ Deprecated Interface:利用废弃 B2B 接口

0x01 任务简报

💡 核心线索 (Hints)
1. 禁用接口的开发者认为闭眼就看不到。
2. 旧版 B2B 界面已被更新换代,升级为更现代的版本。
3. 弃用旧接口时,并非所有组件都从代码库中彻底移除。
4. 仅需使用已弃用的接口即可解决,无需任何攻击或漏洞利用手段。

0x02 实战:复现漏洞

🔑 前置条件:登录账户

需要登录才能进行挑战。

🔍 第一步:API 收集与探测

既然是接口,那我们进行一下api收集

这里借助了FindSomething 这个firefox插件,虽然没有派上用 (╯°□°)╯︵ ┻━┻

API 探测尝试

这一步可能没有直接收获,但有助于理解应用的接口结构。

📝 第二步:发现投诉功能的文件上传接口

登录后,进入投诉(Complaint)功能,发现其中包含文件上传功能。

投诉功能界面

📋 第三步:测试前端白名单限制

创建测试文件:

1
2
❯ touch 1.zip
❯ touch 1.pdf

UI 提示仅支持 PDF 和 ZIP 格式,尝试上传这两种格式的文件,系统提示 客户支持人员将很快与您联系!。(并不会,这是本地环境

上传成功提示

尝试上传这两个后缀之外的文件,最好也是空文件,本地环境无所谓,选择了note.txt笔记文件,它甚至不给提交!

前端拒绝其他格式

🔎 第四步:分析前端代码

在 main.js 代码中搜索与文件上传相关的白名单配置,发现以下可疑代码:

1
allowedMimeType: ["application/pdf", "application/xml", "text/xml", "application/zip", "application/x-zip-compressed", "multipart/x-zip", "application/yaml", "application/x-yaml", "text/yaml", "text/x-yaml"],

前端白名单代码

关键发现:虽然 UI 提示仅支持 PDF 和 ZIP,但前端白名单实际上包含了 XMLYAML 等被隐藏的文件类型——这正是已废弃但未删除的 B2B 接口所支持的格式。

💉 第五步:利用隐藏的文件类型

使用touch 创建一个空xml

1
❯ touch 1.xml

✅ 第六步:完成挑战

点击提交后完成!


参考

使用 Hugo 构建
主题 StackJimmy 设计