从业者-多步骤过程-其中一步未实施访问控制
# 实验室:多步骤过程,其中一步未实施访问控制
# 题目
此实验室有一个管理面板,其中包含有缺陷的多步骤过程,可以用于更改用户角色。你可以使用凭据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-multi-step-process-with-no-access-control-on-one-step
bgColor: '#001350'
textColor: '#4cc1ff'
2
3
4
5
6
# 实操
根据题意,可得实验目标:
- 使用 administrator 账户熟悉管理面板,寻找多步骤流程中的访问控制缺陷。
- 使用 wiener 账户,利用该缺陷将自身提升为管理员权限。
点击 “ACCESS THE LAB” 进入实验室。

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

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

登录成功,点击 “Admin panel” 进入管理面板。

通过前面的实验室可以得知,这是一个 升级/降级 用户的功能。

选择 wiener 用户,然后点击 “Upgrade” 将其升级。

和之前的实验室有所不同,此处多了一个 “确认” 的操作,询问你是否真的要 升级/降级 该用户。
这里点击 “Yes” 确认升级。

升级之后,wiener 用户已经变为了管理员。

以下是升级过程中产生的请求数据包。
第一个数据包,点击 “Upgrade” 之后发出,携带用户名和对应的操作。

第二个数据包,点击 “Yes” 之后发出,用于确认是否进行操作,除了用户名和操作之外,还存在参数confirmed=true
。

第三个数据包,由上一个数据包跳转而来。

思考 3 秒,上面哪个数据包有问题?
此时,wiener 用户为管理员(如图)。

将第二个数据包转发至 Repeater 功能模块,修改其中的action
参数为downgrade
,然后发送数据包。

刷新网页,wiener 用户变为了普通用户。
问题出在第二个数据包中。

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

登录成功,此时的账户身份为普通用户。

这是刚刚的登录数据包,复制响应中返回的 Cookie 。

这是刚刚的第二个请求数据包。
将其中的action
修改为upgrade
并再次发送数据包,访问被拒绝,因为刚刚的 administrator 用户已经退出登录,他的 Cookie 失效了。

将 Cookie 替换为刚刚复制的,也就是 wiener 用户的 Cookie ,然后再次发送数据包,请求成功。

回到浏览器页面,wiener 用户已经被升级为管理员。
实验完成。
