# 【juice-shop】★★★ Admin Registration：注册管理员权限账户


# 【juice-shop】★★★ Admin Registration：注册管理员权限账户

## 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. 注册为普通用户，了解此用例涉及哪些 API 接口。<br>
3. 设想区分普通用户与管理员的最简单实现方式。
</blockquote>

---

## 0x02 实战：复现漏洞

### 🔍 第一步：注册普通用户并抓包

提示其实无所谓，在实际操作的时候我大概只与第三点有关……

在这个挑战开始前，如果完成过`Login Admin`更好，没有完成过也没事（

首先，打开burp，使用内置浏览器注册一个普通用户

![注册普通用户](../../../../../../public/p/juice-shop-admin-registration注册管理员权限账户/assets/Pastedimage20260407103901.png)

### 🔎 第二步：分析返回的 JSON

观察注册成功后服务器返回的 JSON 数据，发现其中包含一个 `role` 字段：

```json
"role": "customer"
```

这很可能就是区分普通用户与管理员的关键字段。

![返回 JSON 分析](../../../../../../public/p/juice-shop-admin-registration注册管理员权限账户/assets/Pastedimage20260407104041.png)

### 🔑 第三步：确认管理员的 role 值

我们把这个包发送到重放器，重新注册一个账号，把这个字段添加进去，如果没有完成过`Login Admin`，可以猜一下这里有哪些role，不过我不喜欢猜，使用 SQL 注入登录管理员账户，访问管理后台：

![](../../../../../../public/p/juice-shop-admin-registration注册管理员权限账户/assets/Pastedimage20260407104446.png)

```
http://127.0.0.1:3000/#/administration
```

![管理后台](../../../../../../public/p/juice-shop-admin-registration注册管理员权限账户/assets/Pastedimage20260407111310.png)

在 Burp 中找到对应请求，从响应中确认管理员的 role 值：

```json
"role": "admin"
```

![管理员 role 确认](../../../../../../public/p/juice-shop-admin-registration注册管理员权限账户/assets/Pastedimage20260407112600.png)

### 💉 第四步：篡改请求注册管理员账户

将注册请求发送到 Repeater，修改请求体，在 JSON 中添加 role 字段：

```json
"role": "admin"
```

发送请求，注册一个新的管理员权限账户。

![篡改请求](../../../../../../public/p/juice-shop-admin-registration注册管理员权限账户/assets/Pastedimage20260407112851.png)

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

成功注册拥有管理员权限的用户，挑战完成。

