白帽故事 · 2024年5月29日

巧妙利用本地存储漏洞,轻松登录他人直播 App 账户

各位晚上好,今天来分享一位国外白帽小姐姐Kritika的分享,希望本文能为各位带来更多启发。

前言

首先,目标应用是一款社交直播应用,你可以使用自己的电话号码登录或注册账号。你需要输入指定的手机号码和验证码来创建账号,就是这么简单。

故事开始

白帽小姐姐的第一想法就是尝试修改响应包的方法来绕过这个验证机制。

首先,她使用手机号码创建账号,很快便收到了验证码,输入了正确的4位验证码后,白帽小姐姐开始在burp中抓取请求包,然后右键选择“Do Intercept -> Response To This Request”,响应包如下:

file

然后,她使用任意手机号码创建了另一个账号,输入了一个随机的4位验证码后再次在burp中截取请求包:

file

看起来,似乎需要‘受害用户’的详细信息:用户名、账号ID、主机名和端口才能绕过这个验证机制。

白帽小姐姐再次访问这个应用程序尝试寻找更多有用的信息,例如源代码页、 browser storage等。在Local Storage中,她发现账号信息,如用户名、账号ID等被存储。

从应用程序中进行账号登出,发现该账号的相关信息被删除,但随后那些字段被填充了一些新的随机数据。起初,白帽小姐姐以为这只是一些无关紧要的数据。

她使用‘无痕’窗口再次打开应用程序的网址链接(未登录状态),然后再次检查Local Storage,显示出一些新的数据。

白帽小姐姐发现了其它用户的用户名、账号ID、主机名和端口等信息,该应用程序在未经授权的情况下在Local Storage标签中泄露了其它用户的信息。

file

出于好奇,白帽小姐姐又去查看了在burpsuite中捕获到的响应信息,通过比较两个响应(一个是正确的OTP,另一个是错误的OTP)。然后使用local storage中找到的数据修改了错误OTP响应主体中的参数值(如“loginResult”: “LOGGED_IN”)。

原本以为无关紧要的数据,实际上却派上了大用场,成功登录了任何用户的账号。

file

这可能是因为服务器配置错误,才将一些随机其它用户数据推送到了Local storage中。

最终白帽小姐姐也顺利的获得了漏洞赏金奖励。

file

以上内容由骨哥翻译并再创作。白帽小姐姐的推:@Krit_Sec

原文:https://medium.com/@kritikasingh06/authentication-bypass-due-to-sensitive-data-exposure-in-local-storage-8a706c798800