学徒-垂直权限提升-个人资料控制的用户角色
# 实验室:通过用户个人资料修改用户角色
# 题目
此实验室在/admin
处有一个管理面板。只有roleid
为 2 的登录用户才能访问它。
访问管理面板,并使用它删除用户carlos
来完成实验室。
你可以使用以下凭据登录到自己的帐户:wiener
:peter
- name: 实验室-学徒
desc: 通过用户个人资料修改用户角色 >>
avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
link: https://portswigger.net/web-security/access-control/lab-user-role-can-be-modified-in-user-profile
bgColor: '#001350'
textColor: '#39d50c'
2
3
4
5
6
# 实操
根据题意,可得实验目标:
- 尝试伪造管理员身份的 roleid 参数 ,然后访问管理面板并删除 carlos 用户。
点击 “ACCESS THE LAB” 进入实验室。

点击 “My account” 进入登录界面。

输入题目中提供的用户名和密码wiener
:peter
进行登录。

登录成功。

然后我一股脑,访问/admin?roleid=2
、/admin?id=2
、/admin?role=2
、Cookie: roleid=2
啥的,硬是没做出来。
# 失败的尝试
然后审题,“个人资料”?
账户页面唯一的功能点也就只有 “更新邮箱” 了。尝试修改邮箱,并捕获请求数据包。

响应包返回了 4 个参数,其中一个便是roleid
参数。
但是这参数在响应包里面,该咋用啊?

难道是修改响应包?说试就试。
启用浏览器代理,然后点击 “Update email” 修改邮箱。

捕获请求数据包之后 “右键 --> Do intercept --> Response to this request” ,然后放行数据包。

捕获响应数据包,将返回的roleid:1
修改为roleid:2
,然后放行数据包。

邮箱更新成功。

尝试访问管理面板,失败。

# 利用成功
既然无法修改响应包,那可不可以修改请求包?
原先的请求数据包中只有email
一个参数,我们手动添加roleid
参数。
# 添加前
{
"email":"j@k.l"
}
# 添加后
{
"email":"j@k.l",
"roleid":1
}
2
3
4
5
6
7
8
9
10
应用程序返回了正常信息,并没有报错,说明可以携带两个参数访问。

将roleid
修改为2
,再次发送请求数据包。
响应信息中的 roleid 也变成了 2 ,难道修改成功了?

回到浏览器,刷新网页。
邮箱更新成功,同时右上角出现了 “Admin panel” ,说明此时的 wiener 用户已经具备管理员权限。
点击 “Admin panel” 进入管理面板。

成功进入管理面板,点击 Delete 删除 carlos 用户。

删除成功,实验完成。
