Comme j'ai accidentellement découvert un possible réapprovisionnement sans fin d'un compte avec mon opérateur mobile américain

Afin d'éviter les abus, je n'indique pas le nom de l'opérateur.

Tout a commencé avec le fait que j'ai acheté à l'arrivée une carte SIM de l'opérateur avec le plan tarifaire Pay-as-you-go. Il s'agit du plan tarifaire le plus courant qui était populaire en Russie avant l'avènement des plans tarifaires forfaitaires, c'est-à-dire que vous payez pour chaque minute, message, mégaoctet, alors que vous avez un solde à reconstituer.

Partout où j'avais le Wi-Fi, la communication cellulaire était plutôt nécessaire pour les appels entrants et l'accès rare à l'Internet mobile. Cependant, le problème avec les opérateurs américains est que le solde de votre compte peut simplement expirer. Il a ensuite expiré au bout de 30 jours, c'est-à-dire que l'argent du compte a tout simplement grillé. Il pourrait être complètement transféré au mois suivant, mais pour cela, il était nécessaire d'effectuer au moins une reconstitution du compte. J'ai décidé de faire une recharge minimale pour rester en contact.

Je me suis connecté au compte sur le site Web de l'opérateur et j'ai essayé de faire un dépôt à partir d'une carte bancaire. Contrairement à la Russie, le montant n'a pas pu être saisi ici. On m'a proposé un choix de quelques montants seulement, le minimum est de 5 $. Je n'avais pas besoin de tant de choses, mais je payais cet argent tous les mois pour rester en contact. En conséquence, après quelques mois, plusieurs dizaines de dollars «inutiles» se sont accumulés sur le compte sans aucune chance de le dépenser.

En passant en quelque sorte par le point de vente de l'opérateur dans l'un des centres commerciaux, j'ai vu des cartes de recharge ordinaires (cartes à gratter). Ils étaient des mêmes dénominations que ceux proposés sur le site. Mais apparemment à cause de mon envie intuitive d'expériences, j'ai décidé d'acheter une telle carte, encore une fois pour 5 $. Lorsque le moment du paiement est venu, j'ai commencé à considérer la carte. Cela semble être le même principe qu'en Russie (quand ces cartes étaient encore populaires): vous pouvez simplement composer une commande avec un numéro de carte et l'activer, ou vous pouvez "flâner" dans le menu USSD (équipes de la catégorie * XXX #). Encore une fois, en raison d'un certain désir d'expérimenter, j'ai décidé de choisir un long chemin dans le menu. Parmi les options, il a été proposé de connaître le solde, d'activer la carte à gratter, de reconstituer le compte avec une carte bancaire.

En Russie, d'une manière ou d'une autre, je ne traitais que de la saisie de données de carte en ligne, donc payer avec une carte via un tel menu était intéressant pour moi (après tout, ces paiements étaient le sujet de mon diplôme), même si cela semblait dangereux (encore une fois en Russie, généralement peuvent être trouvés dans une fenêtre séparée de la banque acquéreuse, mais ne sont pas transférés au vendeur en clair), j'ai décidé d'essayer. Immédiatement, j'ai été surpris par l'offre de saisir le montant. Autrement dit, ils ne m'ont pas offert le choix standard des montants, comme partout ailleurs, mais ils ont suggéré que j'entre le montant. J'ai sélectionné 1 $, entré les détails de la carte dans les étapes suivantes et le paiement a été effectué. Comme vous pouvez le deviner, alors j'ai essayé d'entrer 0,01 $, cela a également réussi.

On pourrait être heureux de ne plus avoir à transférer inutilement 5 $ par mois sur mon solde, mais de ne dépenser que 1 centime et de terminer l'expérience. Mais après quelques heures, j'ai voulu revoir le compte sur le site Web de l'opérateur et les options de réapprovisionnement.

Alors. On me propose de remplir un formulaire avec les détails de la carte, le montant, etc. Je surveille à quoi ressemble cette demande POST avec la soumission du formulaire. Je copie, colle dans Postman, j'essaie de répéter la demande. Le serveur répond avec une erreur, il semble que certains jetons du formulaire soient épuisés.

Je décide de suivre la voie simple. On me propose de choisir le montant dans la liste déroulante. Bien sûr, c'est une sorte de select avec la liste d' option .

 <select class="selectpicker select form-control show-tick text field" title="Specify an amount.." id="billing_amount" name="billing_amount"> <option class="bs-title-option" value=""></option> <option value="REG10-5">$5</option> <option value="REG11-10">$10</option> <option value="REG12-30">$30</option> </select> 

Seule la value évidemment envoyée au serveur. Qu'est-ce que cela signifie 5, 10, 30 après un tiret, je comprends, c'est le montant de la reconstitution, mais que signifie la première valeur? Y a-t-il des constantes dans le code source ou la somme est-elle simplement extraite des données?

J'essaye. J'ai REG12-0.01 à l'un des points, REG12-0.01 les données de la carte, envoie-les. Un message apparaît: «Merci. Un montant de 0,01 $ a été crédité sur votre numéro prépayé. " Le même montant a été débité de la carte. Tout semble aller bien. Vous pouvez choisir n'importe quel montant, même si j'ai déjà découvert cette opportunité via l'USSD, pas de problème.

Mais voici le point le plus important. Je reçois un SMS au numéro: "30 $ ont été crédités sur votre compte". Le solde du compte est augmenté de ce montant.

Il y a eu de nombreuses publications de ce type avec divers services populaires sur ce site et il y en aura probablement encore plus. Dans le processus de développement de systèmes (surtout pas dans les entreprises à forte concentration informatique), il n'y a pratiquement pas de tests / contrôles de sécurité / vulnérabilité et il semble que la situation ne s'améliorera pas dans un avenir proche. Heureusement, aucune donnée utilisateur personnelle n'est affectée ici. Cette expérience peut difficilement être qualifiée de hack, en fait, l'envoi habituel du montant souhaité au serveur a lieu, au lieu de quoi la facturation de l'opérateur décide de reconstituer le solde d'un montant des milliers de fois supérieur à celui sélectionné.

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


All Articles