Vulnérabilités des détaillants - trois cas où OTP a pu être obtenu dans la demande

Lors de la saisie des comptes personnels de divers services, pour des raisons de sécurité, 2FA est souvent utilisé - en plus du nom d'utilisateur et du mot de passe, vous devez entrer un code unique.

Mais il s'est avéré que tout n'est pas si sûr, même avec une authentification à deux facteurs - au cours de la dernière année, j'ai trouvé trois (!) Services, lorsqu'un code de connexion unique, qui est envoyé au client par SMS, pouvait être consulté dans la demande elle-même.

Plus brièvement sur ce qu'il a menacé d'exemples spécifiques.

1. Un réseau populaire de stations-service, plus de 500 000 clients enregistrés.

Une demande lors de la saisie de la version web de votre compte personnel:
POST https://someazs.ua/ua/profile/auth/ Accept: application/json, text/javascript, */*; q=0.01 Accept-Encoding: gzip, deflate, br Accept-Language: ru,en-US;q=0.9,en;q=0.8,uk;q=0.7 Connection: keep-alive Content-Length: 408 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Cookie: PHPSESSID=6n3l2o90hfb020u9ag020u8ha1; usersomeazs_popupcoupons=1;... Host: someazs.ua Origin: https://someazs.ua Referer: https://someazs.ua/ua/login/ User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 X-Compress: null X-Requested-With: XMLHttpRequest data[phone_mask]: 951234567 data[phone]: 0951234567 




Réponse: {"Status":0,"Code":"7038","status":true,"step2":true}

Le code de SMS - 7038 - est visible simplement dans la réponse du serveur.

C'est-à-dire que, sur le site, lors de la saisie du compte personnel, la réponse contenait un code de connexion unique, qui est envoyé au client par SMS - vous pouvez vous connecter au compte de quelqu'un d'autre en spécifiant uniquement le numéro de téléphone du client et regarder l'OTP dans la demande elle-même.

Dans votre compte personnel sont disponibles: numéro de carte de fidélité, nom, solde (bonus en UAH, litre, café), historique des transactions, dans les paramètres - date de naissance, e-mail du client, etc.



Avec l'aide d'autres actions de nature non technique (par exemple, la sonnerie du client), avec une bonne chance, on pourrait utiliser l'argent / litres / café du client. Pourquoi est-ce que j'écris «avec bonne chance»? Lorsque j'ai parlé du problème, j'ai été informé que les règlements par les bonus d'autres personnes ne sont pas si faciles à effectuer, même si vous avez accès au compte, car il y a des contrôles supplémentaires. Mais ...

L'erreur a été corrigée rapidement, merci.



2. Un réseau de magasins sociaux (similaire à Fix-Price ), une application mobile (plus de 100 000 téléchargements)



Lors du suivi des demandes via Fiddler, j'ai remarqué ce qui suit. Lors de la saisie de l'application mobile, après saisie du numéro de téléphone et de la carte de fidélité, un code unique est envoyé au client.

Le problème est qu'il exécute une requête GET du formulaire:
 https://bulk.somesmssender.com/?sending_method=sms&from=someretailes&user=onviber4821&txt=%D0%9A%D0%BE%D0%B4+%D0%BF%D0%BE%D0%B4%D1%82%D0%B2%D0%B5%D1%80%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F%3A+1234&phone=380987654321&sign=42f66957a03090eb90556b0ef7fed2e1 


Le code à usage unique lui-même est visible directement dans cette demande: le texte du SMS envoyé est
 %D0%9A%D0%BE%D0%B4+%D0%BF%D0%BE%D0%B4%D1%82%D0%B2%D0%B5%D1%80%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F%3A+1234& 


Un simple rapport de conversion: Code + confirmation: +1234



C'est-à-dire dans l'application elle-même, vous pouvez voir quel code sera envoyé. Ici, vous pouvez également entrer dans les comptes d'autres personnes, déjà sans deuxième facteur.

Pour une raison quelconque, les clients de ce réseau sont les moins protégés contre la fraude, j'ai donc essayé à plusieurs reprises de transmettre des informations à l'entreprise. J'ai écrit trois fois en août à l'adresse indiquée sur la page de candidature sur le Play Market - je n'ai reçu aucune réponse, même automatique.

Plus tard, j'ai écrit à une entreprise dont ils utilisent le service de distribution SMS. Ils m'ont répondu qu'il était nécessaire de contacter le propriétaire de l'application mobile, car eux, ne peuvent pas influencer le développement et le transfert d'informations de cette société.

C'est vrai, mais j'ai supposé que le service de messagerie pouvait les affecter en tant que partenaire / client. De plus, la raison pour laquelle j'ai écrit au service de messagerie est que la demande GET que j'ai spécifiée est précisément leur développement, et la même situation peut très probablement être vécue par leurs autres clients. J'ai suggéré qu'il serait souhaitable que le service corrige la logique de distribution - de ne pas transmettre à la fois les numéros de téléphone des clients et le code à usage unique dans la demande - ils ne m'ont pas répondu.

Un peu sur la façon dont j'ai essayé de transmettre le problème autrement
Ensuite, sur le site Web du magasin, j'ai écrit à l'e-mail de contact, j'ai attendu - et encore rien. Mais comme je suis têtu, j'ai trouvé sur le même site tous les contacts possibles (boîtes mail générales et adresses personnelles) et je leur ai écrit - comme vous le savez, personne n'a répondu non plus.
Par conséquent, plus tard, je me suis tourné vers le chat et directement dans le chat, j'ai demandé s'ils avaient reçu mes lettres. Au début, ils ont répondu qu'ils ne voyaient pas, puis ils ont trouvé et promis qu'ils le donneraient.

Fait intéressant, en plus de l'absence de réaction à l'e-mail à l'adresse principale de l'application, après avoir bavardé, j'ai reçu des lettres. Dans l'un d'eux, j'ai vu comment ils m'ont amené dans le système: "Homme intelligent"



Attitude moyenne envers le client.

Lors de ma dernière vérification, il n'y avait aucun correctif d' Avrora .
Il n'y a pas eu non plus de corrections de la part du service de distribution, mais ici la situation est plus grave, donc je n'indique pas directement le nom du service.



3. Une application mobile pour stocker des cartes de réduction et effectuer des paiements mobiles (plus de 130 000 clients)

À l'entrée, vous devez saisir uniquement l'e-mail et le code. Dans ce cas, la requête est exécutée:

 POST http://api.somewallet.com/mobileclient.svc/getRegistrationCode HTTP/1.1 Content-Type: application/json; charset=UTF-8 Content-Length: 100 Host: api.somewallet.com Connection: Keep-Alive Accept-Encoding: gzip User-Agent: okhttp/3.12.3 {"request":{"Culture":"ru_RU","DeviceIdentifier":"4514825570005447","Identifier":"some@email"}} 

Voici la réponse:

 {"GetRegistrationCodeResult":{"ErrorMessage":{"Code":0,"LogReferenceId":0,"Message":"SUCCESS"},"Data":{"Code":"044912"}}} 


Ici, la réponse indique également le code à saisir (044912).

Une fois connecté, j'ai eu accès aux fonctions suivantes:

  • afficher les cartes de fidélité et les bonus sur celles-ci,
  • des coupons pour certains magasins,
  • coordonnées du client (numéros de téléphone et e-mail, date de naissance et nom)
  • définition, modification et suppression d'un code d'accès à 4 chiffres,
  • voir les cartes de paiement
  • recevoir un jeton de paiement (similaire au jeton de mon article précédent Comment conduire un taxi aux frais de quelqu'un d'autre ).

Ainsi, toutes les fonctions de l'application pourraient être accessibles à toute personne qui indique simplement l'adresse e-mail de l'utilisateur de cette application - vous n'avez pas besoin de trouver un code unique de l'utilisateur, car il est visible immédiatement lors de l'entrée. Le problème est identique aux deux autres.

Ils ont répondu à mon message, corrigé la vulnérabilité et les ont remerciés financièrement.



Nous pouvons dire que parfois, dans les services, vous pouvez contourner l'authentification à deux facteurs simplement en examinant les demandes d'autorisation. Et cela affecte à la fois les sites Web et les applications mobiles. Donc, la prochaine fois que vous développez ou testez des services avec un compte personnel, faites attention à cela.

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


All Articles