Da habe ich versehentlich eine mögliche endlose Auffüllung eines Kontos bei meinem amerikanischen Mobilfunkbetreiber entdeckt

Um Missbrauch zu verhindern, gebe ich nicht den Namen des Betreibers an.

Alles begann damit, dass ich bei der Ankunft eine SIM-Karte des Betreibers mit dem Tarif Pay-as-you-go gekauft habe. Dies ist der häufigste Tarifplan, der in Russland vor dem Aufkommen von Paket-Tarifplänen beliebt war. Das heißt, Sie zahlen für jede Minute, Nachricht und Megabyte, während Sie einen Saldo haben, der aufgefüllt werden muss.

Überall hatte ich Wi-Fi, und für eingehende Anrufe und den seltenen Zugang zum mobilen Internet war eher eine Mobilfunkkommunikation erforderlich. Das Problem bei amerikanischen Betreibern ist jedoch, dass Ihr Kontostand möglicherweise einfach abläuft. Dann ist es nach 30 Tagen abgelaufen, das heißt, das Geld auf dem Konto ist einfach ausgebrannt. Es konnte vollständig auf den nächsten Monat übertragen werden, aber dafür war es notwendig, zumindest eine gewisse Auffüllung des Kontos vorzunehmen. Ich entschied mich für eine minimale Aufladung, um in Kontakt zu bleiben.

Ich habe mich auf der Website des Betreibers in das Konto eingeloggt und versucht, eine Einzahlung von einer Bankkarte vorzunehmen. Im Gegensatz zu Russland konnte der Betrag hier nicht eingegeben werden. Mir wurde eine Auswahl von nur wenigen Beträgen angeboten, das Minimum beträgt 5 $. Ich brauchte nicht so viel, aber ich habe dieses Geld jeden Monat bezahlt, um in Kontakt zu bleiben. Infolgedessen sammelten sich nach einigen Monaten mehrere Dutzend Dollar auf dem Konto an, ohne die Chance zu haben, es jemals auszugeben.

Als ich irgendwie an der Verkaufsstelle des Betreibers in einem der Einkaufszentren vorbeikam, sah ich normale Aufladekarten (Rubbelkarten). Sie hatten die gleiche Stückelung, wie sie auf der Website zur Zahlung angeboten wurden. Aber anscheinend entschied ich mich aufgrund meines intuitiven Verlangens nach Experimenten, eine solche Karte wieder für 5 Dollar zu kaufen. Als die Zeit für die Zahlung gekommen war, begann ich über die Karte nachzudenken. Es scheint das gleiche Prinzip wie in Russland (als diese Karten noch beliebt waren): Sie können einfach einen Befehl mit einer Kartennummer wählen und aktivieren oder Sie können im USSD-Menü „wandern“ (Teams aus der Kategorie * XXX #). Aufgrund des Wunsches zu experimentieren entschied ich mich erneut, einen langen Weg aus dem Menü zu wählen. Unter den Optionen wurde vorgeschlagen, den Kontostand herauszufinden, die Rubbelkarte zu aktivieren und das Konto mit einer Bankkarte aufzufüllen.

In Russland habe ich mich irgendwie immer nur mit der Online-Eingabe von Kartendaten befasst, daher war das Bezahlen mit einer Karte über ein solches Menü für mich interessant (schließlich waren diese Zahlungen das Thema meines Diploms), obwohl es unsicher schien (normalerweise auch in Russland) kann in einem separaten Fenster der erwerbenden Bank gefunden werden, wird aber nicht im klaren an den Verkäufer übertragen), ich habe mich entschlossen, es zu versuchen. Ich war sofort überrascht von dem Angebot, den Betrag einzugeben. Das heißt, sie boten mir nicht wie überall die Standardauswahl an Beträgen an, aber sie schlugen vor, dass ich den Betrag eingebe. Ich habe $ 1 ausgewählt, die Kartendetails in den folgenden Schritten eingegeben und die Zahlung bestanden. Wie Sie sich vorstellen können, habe ich dann versucht, 0,01 USD einzugeben.

Man könnte froh sein, dass ich nicht mehr jeden Monat unnötig 5 Dollar auf mein Guthaben überweisen muss, sondern nur noch 1 Cent ausgeben und das Experiment abschließen muss. Nach ein paar Stunden wollte ich mir das Konto auf der Website des Betreibers und die Nachschuboptionen noch einmal ansehen.

Also. Mir wird angeboten, ein Formular mit Kartendetails, Betrag usw. auszufüllen. Ich verfolge, wie diese POST-Anfrage mit der Formularübermittlung aussieht. Ich kopiere, füge in Postman ein und versuche, die Anfrage zu wiederholen. Der Server antwortet mit einem Fehler. Es scheint, dass einige Token im Formular ausgehen.

Ich beschließe, den einfachen Weg zu gehen. Mir wird angeboten, den Betrag aus der Dropdown-Liste auszuwählen. Natürlich ist dies eine Art select mit der 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> 

Es value offensichtlich nur der value an den Server gesendet. Was bedeutet 5, 10, 30 nach einem Bindestrich, ich verstehe, dies ist die Menge an Nachschub, aber was bedeutet der erste Wert? Gibt es Konstanten im Quellcode oder wird die Summe einfach aus den Daten extrahiert?

Ich versuche es Ich REG12-0.01 an einem der Punkte, REG12-0.01 die Kartendaten ein und sende sie. Eine Meldung erscheint: „Danke. Der Ladebetrag von 0,01 USD wurde Ihrer Prepaid-Nummer gutgeschrieben. " Der gleiche Betrag wurde von der Karte abgebucht. Alles scheint in Ordnung zu sein. Sie können einen beliebigen Betrag auswählen, obwohl ich diese Möglichkeit bereits durch USSD entdeckt habe, kein Problem.

Aber hier ist der wichtigste Punkt. Ich erhalte eine SMS mit der Nummer: "Ihrem Konto wurden 30 US-Dollar gutgeschrieben". Der Kontostand erhöht sich um diesen Betrag.

Es gab viele solcher Veröffentlichungen mit verschiedenen populären Diensten auf dieser Site und es wird wahrscheinlich noch mehr geben. Bei der Entwicklung von Systemen (insbesondere nicht in Unternehmen mit einem strengen IT-Fokus) gibt es praktisch keine Tests / Kontrollen für Sicherheit / Schwachstelle, und es sieht so aus, als würde sich die Situation in naher Zukunft nicht verbessern. Glücklicherweise sind hier keine persönlichen Benutzerdaten betroffen. Dieses Experiment kann kaum als Hack bezeichnet werden. Tatsächlich findet das übliche Senden des gewünschten Betrags an den Server statt. Stattdessen entscheidet die Abrechnung des Betreibers, den Saldo um einen tausendfach größeren Betrag als den ausgewählten aufzufüllen.

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


All Articles