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

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

## 0x01 任务简报

<blockquote style="border-left: 5px solid #6f42c1; background-color: #f5f3ff; padding: 20px; margin: 1.5rem 0; color: #5521b5; line-height: 1.8; border-radius: 0 5px 5px 0;">
<div style="font-weight: bold; font-size: 1.1rem; margin-bottom: 10px; display: flex; align-items: center;">
<span style="margin-right: 8px;">💡</span> 核心线索 (Hints)
</div>
1. 禁用接口的开发者认为闭眼就看不到。<br>
2. 旧版 B2B 界面已被更新换代，升级为更现代的版本。<br>
3. 弃用旧接口时，并非所有组件都从代码库中彻底移除。<br>
4. 仅需使用已弃用的接口即可解决，无需任何攻击或漏洞利用手段。
</blockquote>

---

## 0x02 实战：复现漏洞

### 🔑 前置条件：登录账户

需要登录才能进行挑战。

### 🔍 第一步：API 收集与探测

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

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

![API 探测尝试](../../../../../../public/p/juice-shop-deprecated-interface利用废弃-b2b-接口/assets/Pastedimage20260405011658.png)

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

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

登录后，进入投诉（Complaint）功能，发现其中包含文件上传功能。

![投诉功能界面](../../../../../../public/p/juice-shop-deprecated-interface利用废弃-b2b-接口/assets/Pastedimage20260405015048.png)

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

创建测试文件：

```bash
❯ touch 1.zip
❯ touch 1.pdf
```

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

![上传成功提示](../../../../../../public/p/juice-shop-deprecated-interface利用废弃-b2b-接口/assets/Pastedimage20260405012629.png)

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

![前端拒绝其他格式](../../../../../../public/p/juice-shop-deprecated-interface利用废弃-b2b-接口/assets/Pastedimage20260405013507.png)

### 🔎 第四步：分析前端代码

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

```js
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"],
```

![前端白名单代码](../../../../../../public/p/juice-shop-deprecated-interface利用废弃-b2b-接口/assets/Pastedimage20260405013714.png)

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

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


使用touch 创建一个空xml

```bash
❯ touch 1.xml
```

### ✅ 第六步：完成挑战

![](../../../../../../public/p/juice-shop-deprecated-interface利用废弃-b2b-接口/assets/Pastedimage20260405013834.png)

点击提交后完成！

---

## 参考

- [OWASP Juice Shop 官方攻略 - Deprecated Interface](https://pwning.owasp-juice.shop/companion-guide/latest/appendix/solutions.html#_use_a_deprecated_b2b_interface_that_was_not_properly_shut_down)



