学徒-有缺陷的假设-安全控制不一致
# 实验室:不一致的安全控制
# 题目
该实验室的错误逻辑 允许任意用户访问管理功能,管理功能本来仅对公司员工可用。要解决实验室问题,请访问管理面板并删除carlos
用户。
- 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/logic-flaws/examples/lab-logic-flaws-inconsistent-security-controls
bgColor: '#001350'
textColor: '#39d50c'
1
2
3
4
5
6
2
3
4
5
6
# 实操
根据题意,可得实验目标:
- 该实验室的 管理功能 中存在逻辑缺陷,能够允许任意用户 访问并使用 管理功能。
- 利用逻辑缺陷,访问站点的用户管理面板,然后删除 carlos 用户。
点击 “Access the lab” 进入实验室。

实验室首页如下。

在路径/admin
处存在一个管理界面,只允许身份为 DontWannaCry 用户登录。
(是身份,不是用户,直接注册 DontWannaCry 这个名称是没用的)

在注册页面,有这样一条信息:
邮箱@dontwannacry.com
代表内部员工。

先正常注册一个账户看看,使用邮箱attacker@a.exploit-XXX.exploit-server.net
。

在邮箱客户端中 点击注册链接。

在注册的过程中,产生了两个数据包。
第一个数据包,提交注册表单时发出。

第二个数据包,点击注册链接时发出。

注册成功之后,登录账户。
在账户页面,可以看到一个更改邮箱的功能,难道关键点在这?

启用浏览器代理,输入一个新的邮箱attacker@b.exploit-XXX.exploit-server.net
,然后点击 “Update email” 更新邮箱。

然后...邮箱它直接就改了...直接改了...直接...,没有验证旧邮箱,也没有验证新邮箱。

更改邮箱的请求数据包:

更改邮箱的时候不用校验,那直接修改为内部员工的邮箱即可。
更改邮箱之前,无法访问管理界面。

在账户页面更新邮箱为attacker@dontwannacry.com
。

直接更新成功,并且在右上角出现了 “Admin panel” ,点击进入管理面板。

删除 carlos 账户。

删除成功,实验完成。

# 修复建议
身份验证绕过漏洞2 - 任意修改邮箱
- 增加新邮箱校验,如果用户想修改邮箱为
xxx@a.com
,则向xxx@a.com
发送更新链接,点击邮件中的链接才允许更新。
在一堆网站上注册新账户,然后直接更改为老板的邮箱,再打开推送...(啊不是)
编辑 (opens new window)