【网络安全 | 漏洞挖掘】如何通过竞态条件发现账户接管漏洞

未经许可,不得转载。

背景

目标应用允许用户创建项目。这些项目中包含多个用户角色,每个角色权限不同(如所有者、管理员、成员管理者等)。用户可通过接受邀请来加入项目,而只有项目所有者才能通过输入邮箱将项目所有权转移给其他用户。这是你需要了解的所有背景信息。

正文

在探索应用时,我发现了两种转移项目所有权的方式:

1、目标用户A尚未加入项目,向A转移项目所有权时,会发送邀请,用户A接受邀请后才能获得项目所有权。
2、目标用户A已经是该项目成员时,所有权会立即转移到A。

很有意思,对吧?但该如何利用这种行为呢?毕竟,只有项目所有者才能发起转移操作。

在测试过程中,我注意到以下几点:

1、可以通过拦截编辑成员权限的请求,并在请求体中添加 email 参数,来修改待定邀请用户的邮箱。
2、已激活用户的邮箱:在任何情况下都无法修改。

待定用户的邮箱究竟在什么时候变得不可更改?是在点击邀请链接后?还是注册完成后?亦或是在登录并接受邀请后?

通过大量测试和账户创建,我发现了转折点:受邀用户的邮箱在接受邀请并从“待定”状态切换为“激活”状态后才会变为不可更改。

设置竞态条件

有趣的部分来了:如果我在接受邀请的同时修改受邀用户的邮箱会发生什么?

为了测试这一点,我采取了以下步骤:

1、向一个新邮箱发送邀请。
2、打开邀请链接并开始创建账户,但停留在接受表单界面。

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值