2FA/OTP bypass
Last updated
Last updated
La vulnérabilité a été découverte chez un fournisseur de télécommunication Philippen sur un interface web dédié à la vente de forfaits et téléphones. Le site en question demandait un OTP par SMS pour démarrer une transaction.
Cependant, la condition pour passer à l'étape suivante était validée côté frontend et utilisait la réponse HTTP pour déterminer si oui ou non le code OTP était valide. De cette manière, il était possible de rensigner un faux numéro de téléphone ainsi qu'un faux code OTP puis de remplacer le contenu de la réponse HTTP d'échec par un message de succès.
J'ai d'abord envoyé un code OTP vers un numéro valide afin d'analyser le comportement normal de l'application lors d'une validation réussie.
J'ai ensuite envoyé un code OTP à un numéro arbitraire puis entré un code invalide (000000) tout en interceptant la réponse HTTP.
Remarquant que le site attendait la réponse pour afficher le message d'erreur j'ai compris que la validation était probablement effectué en se basant sur la réponse HTTP.
J'ai dont remplacé les données JSON d'échec par celles d'un succès.
Une cela fait j'ai tout simplement désactivé l'interception et la vérification OTP a été contourné avec succès.
Les risques ici étaient limités à un risque d'usurpation d'identité principalement avec la possibilité d'effectuer des transactions avec le numéro de téléphone d'un autre individu.
En effet, il n'existait pas de comptes sur le site, il n'était donc pas possible de prendre le contrôle du compte de quelqu'un d'autre par ce procédé.