Calcul de la pizzeria: Papa Jones, qui ne se soucie pas de la sécurité

image

La photo pour attirer l'attention est prise ici.

La pizzeria Papa Jones est ouverte dans de nombreux pays, le moteur du site est presque partout différent. Cependant, le moteur, qui a été développé quelque part en Russie, est également utilisé sur des sites pour la Pologne, le Kirghizistan et la Biélorussie. Nous allons l'examiner.

Vous pouvez voir le moteur lui-même sur un site mobile pour la Russie , par exemple. Pourquoi mobile? Parce que le bureau n'a même pas de formulaire d'inscription, bien que cela s'explique par le fait que l'inscription est automatique lors de la commande. J'ai décidé une fois de vérifier l'état des vulnérabilités.

Étant donné que la sélection des applications est le moyen le plus simple, je l'ai pris. À ma grande surprise, j'ai découvert que l'application n'est qu'un étrange wrapper pour le site, bien que le serveur puisse clairement distinguer également de qui provient la demande lors des demandes. Il s'est avéré possible de tester avec un succès égal à la fois l'application et la version mobile. La seule différence est que le champ plateforme - mobSite est transmis pour le site mobile, et les applications informent le système et la version.

J'ai tout de suite réussi, car j'ai commencé avec la récupération de mot de passe. Je suggère de voir comment cela se produit.

Vous devez d'abord obtenir le code lui-même par SMS. Nous demanderons le lien avec JSON dans le corps:

POST https://www.papajohns.ru/api/auth/recovery/requestCode { "username": "+79", "transport": "sms", "lang": "ru", "version": "1.0.34", "platform": "Android" } 

Le serveur répond:

 { "status": true } 

Étrange, il y a peu de données. Au moins un identifiant ou une session, mais regardez plus loin.

Un code à quatre chiffres est envoyé aux SMS (uniquement des chiffres). Nous ne l’enverrons pas, car la modification du mot de passe bloquera les points pendant deux semaines, mais j’avais des plans pour eux. Essayons d'envoyer au hasard:

 POST https://www.papajohns.ru/api/auth/recovery/updatePassword { "code": "1234", "password": "123456qwe", "transport": "sms", "version": "1.0.34", "platform": "Android" } 

J'étais très impressionné. Il s'est avéré que lorsque vous demandez SMS, le numéro de téléphone + code est écrit dans la base de données dans SMS, et lorsque vous demandez la récupération par code, le serveur vérifie le code dans la base de données et, si le code est trouvé, définit le mot de passe reçu dans la base de données.

La situation s'aggrave car il n'y a aucune restriction sur l'énumération du code. Empiriquement, j'ai découvert qu'en essayant en 10 minutes, le script est garanti pour définir un mot de passe. Et si vous demandez la récupération de tous les 10 000 codes de 0000 à 9999?

Le 12 mai, j'ai rapporté tous les détails directement au développeur du site (enfin, au moins, il s'est présenté à eux). Le 19 juin, je me suis intéressé à la façon dont les choses se passent avec la fermeture de la vulnérabilité. Le script a envoyé environ trois cents demandes et s'est levé. Après avoir vérifié l'état du développeur, j'ai découvert que le serveur bloquait maintenant par IP s'il recevait 5 requêtes incorrectes. Aujourd'hui, j'ai à nouveau vérifié si la logique a changé et je suis prêt à signaler: elle n'a pas changé. Le serveur est également indifférent maintenant: j'ai envoyé 3 000 demandes sans trop de difficulté, donc tous les 10 000, je crois, partiront sans problème.

Le danger de divulguer toutes les adresses enregistrées uniquement par la présence d'un numéro de téléphone mobile reste important. Les cartes bancaires sont supprimées lorsque le mot de passe est réinitialisé. J'ai 1000 points et une pizza. La pizza est délicieuse, mais je ne vais pas y stocker l'adresse.

Source: https://habr.com/ru/post/fr418611/


All Articles