MrBruh's Epic Blog Home Music

注意:这家本地公司的名称被礼貌地要求删除,因此已用 ChatGPT 建议的 KiwiServices 替换

Pwning 新西兰一家大型服务提供商

在 2025 年 2 月 19 日的晚上,我心血来潮,想要为世界做点好事,并继续磨练我的渗透测试技能。

首先,我浏览了 Google Play Store 上热门应用的列表,并在新西兰寻找一个“半”流行的应用。在滚动浏览了一些最受欢迎的应用后,我找到了它,KiwiServices。一个评分低于 4 星(可能表明开发匆忙)且下载量低于 10 万的应用。

我做了一些研究,发现该应用确实有负责任的披露政策,这一点让我很高兴能继续下去。

将该 App 下载到我的 root 过的(备用)手机上后,我将其连接到 HTTP Toolkit(感谢创作者 Tim 给予我免费的 pro 版本),并开始创建帐户的过程,以便测试该应用的不同功能。

当我输入我的电话号码来创建帐户时,我注意到它发出了一个外发的 HTTP 请求,以检查我是否已经有一个帐户。

https://kiwiservices.example.com/users?filter=["phone":"64123456789"]

你能发现潜在的问题吗?

是的,你和我想到的一样。如果我删除这个 filter,会发生什么?它会返回与我的帐户无关的用户详细信息,还是会出错?

实际上结果是两者都不是。请求在 30 秒后超时,没有返回任何数据。然而,这仍然非常奇怪,因为请求应该返回错误代码或某种响应。

我的下一个想法是,如果请求超时是因为它试图执行计算密集型任务,例如收集多个用户的详细信息并将其发送给我,那会怎么样。

经过一些反复试验,我终于设法使请求工作了。

https://kiwiservices.example.com/users?range=[1,1] // 请求第一个用户

这返回了一个 user[s] 列表,其中包含以下数据(已审查),看起来像是一个测试帐户。

[
{
"id": 1,
"email": "example@gmail.com",
"firstName": "John",
"lastName": "Smith",
"phone": "64123456789",
"dateOfBirth": "2000-01-01T00:00:00.000Z",
"firstSeen": "0000-00-00T00:00:00.000Z",
"lastLoggedIn": null,
"Card": null,
"isNew": 0,
"cognitoId": "00000000-0000-0000-0000-000000000000",
"CustomerId": null,
"LoyaltyId": null,
"LoyaltyCard": null,
"RewardsMemberId": null,
"RewardsCard": null,
"isActive": 1,
"referralCode": "",
"fcmToken": null,
"allowTransNotif": 1,
"allowPromoNotif": 1,
"isVip": 0,
"session_id": 0,
"giftcard_id": 0,
"site_id": []
}
]

此时,我确信他们的整个用户数据库都处于危险之中,因为恶意行为者可以通过使用大范围迭代来转储整个用户数据库。然而,当时是午夜,所以我决定第二天醒来后再报告它。

Day 2

第二天醒来后,我开始寻找某种联系方式,信息有点稀疏,但我设法找到了一个电话号码。与那里的人交谈后,他们说他们会与一位大人物谈谈,让他给我回电话。

大约 30 分钟后,一位大人物给我回了电话,我最终通过电子邮件向他们发送了一份漏洞报告,包括重现步骤。

过了一段时间后,我收到一封电子邮件,说他们设法重现了该问题,并且正在努力修复。我们还同意了 30 天的负责任披露期。

截至 3 月 22 日,他们已经修复了该漏洞,并且 30 天的披露期已经结束。

Timeline

19/02/2025 - 发现漏洞 20/02/2025 - 报告漏洞 11/03/2025 - 修复漏洞 22/03/2025 - 30 天负责任披露期结束 25/03/2025 - 发布文章 Made with Hugo Bear. Hosted by Privex.