声明:本文为博主原创文章,文章中所涉及的技术、思路和工具仅供学习交流使用,使用者必须遵守《网络安全法》等相关法律,严禁将本文知识用于任何未授权的非法活动,否则后果自行承担,与作者无关。未经作者授权,禁止任何形式的转载。
一、漏洞原理
根据题目的描述,如果用户的邮箱地址是carlos@ginandjuice.shop,那么他将拥有管理员的权限(admin privileges)。这道题的目的就是让已知的wiener用户绑定carlos@ginandjuice.shop邮箱。
二、漏洞证明
1、在邮箱客户端上,我们只能看到以@exploit-<YOUR-EXPLOIT-SERVER-ID>.exploit-server.net为后缀的邮件。对于我来说,我只能看到以@exploit-0a9b00020371845982af73bb01fb0081.exploit-server.net结尾的邮件,如下图:

2、当我们连续修改两次邮箱地址时,此时在邮箱客户端上,可以看到两封更新邮件,但是只有最近的更新链接是有效的,如下图:

这个现象给了我们一个提示:该系统在同一时刻只保存最近的一次邮箱更新申请,也可以理解为只保存了最近一次要修改的邮箱地址。
3、我们把修改邮箱的http请求发送至Repeater模块,放入一个组中,并复制出另一个同样的请求,如下图:

第一个请求,我们正常修改邮箱地址,后缀是exploit-0a9b00020371845982af73bb01fb0081.exploit-server.net。

第二个请求,我们把邮箱地址修改为题目指定的carlos@ginandjuice.shop。
4、选择“Send group in parallel(single-packet attack)”,此时会同时发起两个修改邮箱地址的请求。如果系统要给wiener用户生成邮箱更新链接时,从数据库读到的最新邮箱地址是carlos@ginandjuice.shop,那么我们就可以在客户端上看到一封把地址修改为carlos@ginandjuice.shop的邮件,如下图:

当然,如果看不到这个攻击效果,我们也不用做其他的额外处理,仅需要再次发起攻击,直到成功即可。
5、点击邮箱中的地址更新链接,然后访问“Admin Panel”,删除用户carlos。
三、漏洞思考
1、在实际的系统中,同一时刻只保留一个最新的待修改邮箱几乎没有。但是,这道题的思路适用于多个用户争用/共用同一处资源的其他场景中。
网硕互联帮助中心





评论前必须登录!
注册