这张引起注意的照片在这里拍摄。帕帕·琼斯(Papa Jones)的比萨店在许多国家都是开放的,网站引擎几乎到处都不同。 但是,该发动机是在俄罗斯某地开发的,也用于波兰,吉尔吉斯斯坦和白俄罗斯的站点。 我们会考虑的。
例如,您可以在
俄罗斯的
移动网站上查看引擎本身。 为什么要移动? 由于
台式机甚至没有注册表,尽管这是通过订购时自动进行注册这一事实来解释的。 我曾经决定检查那里存在漏洞的情况。
由于选择应用程序是最简单的方法,因此我接受了。 令我惊讶的是,我发现该应用程序只是该站点的一个奇怪的包装器,尽管服务器可以清楚地区分请求中来自谁的请求。 事实证明,可以同时测试应用程序版本和移动版本。 唯一的区别是平台-mobSite字段是为移动站点传输的,而应用程序则通知系统和版本。
我立即获得了成功,因为我从恢复密码开始。 我建议看看这是怎么发生的。
首先,您需要在SMS中获取代码本身。 我们将在正文中请求带有JSON的链接:
POST https://www.papajohns.ru/api/auth/recovery/requestCode { "username": "+79", "transport": "sms", "lang": "ru", "version": "1.0.34", "platform": "Android" }
服务器响应:
{ "status": true }
奇怪的是,数据很少。 至少是一个标识符或会话,但要进一步看。
SMS上有一个四位数的代码(仅数字)。 我们不会发送该密码,因为更改密码会冻结两个星期的时间,但是我已经计划好了。 让我们尝试随机发送:
POST https://www.papajohns.ru/api/auth/recovery/updatePassword { "code": "1234", "password": "123456qwe", "transport": "sms", "version": "1.0.34", "platform": "Android" }
我印象深刻。 事实证明,当您请求SMS时,电话号码+代码会写入SMS中的数据库中,而当您请求通过代码进行恢复时,服务器会检查数据库中的代码,如果找到了代码,则将接收到的密码设置为数据库中的密码。
由于对代码枚举没有限制,因此情况变得越来越糟。 根据经验,我发现通过在10分钟内尝试该脚本可以确保设置密码。 而且,如果您要求从0000到9999恢复所有10,000个代码?
5月12日,我将所有详细信息直接报告给了网站开发人员(嗯,至少他向他们介绍了自己)。 6月19日,我对关闭该漏洞的进展产生了兴趣。 该脚本发出了约三百个请求,并站了起来。 检查开发人员的状态后,我发现如果服务器收到5个错误请求,则该服务器现在被IP阻止。 今天,我再次检查逻辑是否已更改,并准备报告:它没有更改。 服务器现在也变得无关紧要:我发送了3,000个请求没有太多困难,所以我相信所有10,000个请求都不会出现问题。
仅通过移动电话号码来公开所有存储地址的危险仍然很大。 重设密码后,银行卡将被删除。 我拿了1000点和披萨。 披萨很好吃,但我不会在那儿存放地址。