从业者-垂直权限提升-基于方法的访问控制
# 实验室:绕过基于方法的访问控制
# 题目
本实验室基于 HTTP 请求方法实现了部分访问控制措施。你可以使用凭据administrator:admin
来登录并熟悉管理面板。
要解决实验室问题,请使用凭据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-method-based-access-control-can-be-circumvented
bgColor: '#001350'
textColor: '#4cc1ff'
2
3
4
5
6
# 实操
根据题意,可得实验目标:
- 使用 administrator 账户熟悉管理面板,寻找访问控制措施的缺陷。
- 使用 wiener 账户,利用该缺陷将自身提升为管理员权限。
点击 “ACCESS THE LAB” 进入实验室。

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

输入题目中提供的管理员用户名和密码administrator
:admin
进行登录。

点击 “Admin panel” 进入管理面板。

在管理面板中,不再是之前的用户删除功能,而是 升级/降级 用户的功能。
(NORMAL 普通用户权限,ADMIN 管理员权限)
选择一个用户,点击 “Upgrade user” 会将普通用户升级为管理员,点击 “Downgrade user” 会将管理员降级为普通用户。

先尝试一下,选择 wiener 用户,然后点击 “Upgrade user” 使其升级。

操作过后,wiener 用户已经被升级为管理员。

可以降级 administrator 用户吗?(皮)
答案是不可以,总不能自己降自己吧。

升级 wiener 用户之后,点击 “Log out” 退出当前账户。

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

登录之后,在右上角可以看到 “Admin panel” ,说明此时的 wiener 已经具备管理员权限。
题目要求自己升级自己,所以还得继续。

然后,我尝试 wiener 自己降级自己,竟然成功了...
管理员把自己降为普通用户?这操作。

在之前 升级/降级 的过程中捕获了相关的数据包。
当action
参数为 upgrade 的时候,会升级用户。除了 upgrade 以外的任何参数,都会降级用户。
尝试以 wiener 身份升级自己,访问被拒绝。此时的 HTTP 方法为POST
。

在数据包中 “右键 --> Change request method” 将原本的 POST 请求修改为 GET 请求。

通过GET
方法再次访问,没有返回错误信息,大概率是访问成功。

回到浏览器页面,实验已经完成,说明刚刚的升级成功了,wiener 从普通用户变为了管理员。
实验完成。
