学徒-水平权限提升-用户ID不可预测
# 实验室:由请求参数控制的用户ID,用户ID不可预测
# 题目
此实验室在用户的帐户页面上存在一个水平权限提升漏洞,但使用 GUID 来标识用户。
若要解决实验室问题,请找到carlos
的 GUID,然后将他的 API 密钥作为解决方案提交。
你可以使用以下凭据登录到自己的帐户:wiener
:peter
- name: 实验室-学徒
desc: 由请求参数控制的用户ID,用户ID不可预测 >>
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-id-controlled-by-request-parameter-with-unpredictable-user-ids
bgColor: '#001350'
textColor: '#39d50c'
2
3
4
5
6
# 实操
根据题意,可得实验目标:
- 找到 carlos 用户的 GUID ,然后利用水平权限提升漏洞获取 carlos 用户的 API 密钥并提交。
点击 “ACCESS THE LAB” 进入实验室。

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

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

URL 中存在参数id
,但参数值已经从原来的 用户名 改为了 GUID ,无法预测。

根据学习到的理论知识,我们需要在某些功能点 找出其他用户的 GUID ,例如评论功能。
点击任意一个 “View post” 进入帖子。

我尝试了评论功能,并没有发现可利用的地方。

随后,我在评论功能的上方,帖子信息栏,发现了一个用户名。
点击该用户名,看看会发生什么。

点击之后,跳转到了另一个页面blogs
,URL 中携带了参数userId
。
通过对比账户页面的id
和当前页面的userId
,发现两个参数值是一样的,都是 wiener 用户的 GUID 。
这应该是一个论坛站点,通过/blogs?userId=XXX
可以进入不同用户的个人主页。

那思路就来了,只要找一篇 carlos 用户发表的帖子,然后点击信息栏中的用户名,即可获得 carlos 的 GUID 了。
经过一段时间的搜寻,找到了一篇由 carlos 用户发表的帖子。点击信息栏中的用户名。

跳转到了 carlos 的个人主页,URL 中包含他的 GUID 。
复制该 GUID 。

来到 wiener 用户的账户页面。
将原来的id
参数替换为刚刚复制的 GUID ,然后访问。

访问成功,网页显示了 carlos 用户的账户信息。

复制 carlos 用户的 API 密钥。
点击上方的 “Submit solution” 打开提交窗口,填入刚刚复制的密钥,然后点击 “确定” 。

提交正确,实验完成。

(彩蛋时间)
在搜寻帖子的过程中,还找到了 administrator 用户发表的帖子,以及他的 GUID......
