学徒-垂直权限提升-个人资料控制的用户角色
# 实验室:通过用户个人资料修改用户角色
# 题目
此实验室在/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 用户。
删除成功,实验完成。
