Sicherheitslücken bei Einzelhändlern - drei Fälle, in denen OTP in der Anfrage abgerufen werden konnte

Bei der Eingabe persönlicher Konten verschiedener Dienste wird aus Sicherheitsgründen häufig 2FA verwendet. Zusätzlich zum Login und Passwort müssen Sie einen Einmalcode eingeben.

Aber wie sich herausstellte, ist selbst bei der Zwei-Faktor-Authentifizierung nicht alles so sicher - im letzten Jahr habe ich drei (!) Dienste gefunden, bei denen ein einmaliger Anmeldecode, der per SMS an den Client gesendet wird, in der Anfrage selbst angezeigt werden konnte.

Weiter kurz darüber, was es mit konkreten Beispielen bedrohte.

1. Ein beliebtes Tankstellennetz mit mehr als 500.000 registrierten Kunden.

Eine Anfrage bei der Eingabe der Webversion Ihres persönlichen Kontos:
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 




Antwort: {"Status":0,"Code":"7038","status":true,"step2":true}

Der Code aus SMS - 7038 - ist einfach in der Antwort des Servers sichtbar.

Das heißt, auf der Website enthielt die Antwort bei der Eingabe des persönlichen Kontos einen einmaligen Anmeldecode, der per SMS an den Kunden gesendet wird. Sie können sich bei einem anderen Konto anmelden, indem Sie nur die Telefonnummer des Kunden angeben und das OTP in der Anfrage selbst anzeigen.

In Ihrem persönlichen Konto sind verfügbar: Treuekartennummer, Name, Guthaben (Bonus in UAH, Liter, Kaffee), Transaktionsverlauf, in den Einstellungen - Geburtsdatum, Kunden-E-Mail usw.



Mit Hilfe weiterer nichttechnischer Maßnahmen (z. B. Kundenklingeln) könnte man mit etwas Glück Kundengeld / Liter / Kaffee verwenden. Warum schreibe ich "mit viel Glück"? Als ich über das Problem sprach, wurde ich informiert, dass die Abrechnung mit den Boni anderer Personen nicht so einfach ist, selbst wenn Sie Zugriff auf das Konto haben, da es zusätzliche Überprüfungen gibt. Dennoch…

Der Fehler wurde schnell behoben, danke.



2. Ein Netzwerk von Social Stores (ähnlich wie Fix-Price ), eine mobile Anwendung (mehr als 100.000 Downloads)



Beim Verfolgen von Anfragen über Fiddler fiel mir Folgendes auf. Bei der Eingabe der mobilen Anwendung wird nach Eingabe der Telefonnummer und der Kundenkarte ein einmaliger Code an den Kunden gesendet.

Das Problem ist, dass es eine GET-Anforderung des Formulars ausführt:
 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 


Der Einmalcode selbst ist direkt in dieser Anfrage sichtbar: Der Text der gesendeten SMS lautet
 %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& 


Ein einfacher Konvertierungsbericht: Code + Bestätigung: +1234



Das heißt, In der Anwendung selbst können Sie sehen, welcher Code gesendet wird. Hier können Sie auch Konten anderer Personen eingeben, bereits ohne einen zweiten Faktor.

Aus irgendeinem Grund sind die Kunden dieses Netzwerks am wenigsten vor Betrug geschützt, daher habe ich viele Male versucht, Informationen an das Unternehmen zu übermitteln. Ich habe im August dreimal an die Adresse geschrieben, die auf der Anwendungsseite im Play Market angegeben ist - ich habe keine einzige Antwort erhalten, auch keine automatische.

Später schrieb ich an eine Firma, deren SMS-Verteilungsdienst sie nutzen. Sie antworteten mir, dass es notwendig ist, den Eigentümer der mobilen Anwendung zu kontaktieren, da sie ihrerseits die Entwicklung und Übertragung von Informationen von diesem Unternehmen nicht beeinflussen können.

Dies ist wahr, aber ich ging davon aus, dass der Messaging-Dienst sie als Partner / Client beeinflussen könnte. Der Grund, warum ich an den Mailing-Service geschrieben habe, ist, dass die von mir angegebene GET-Anfrage genau deren Entwicklung ist und die gleiche Situation höchstwahrscheinlich von ihren anderen Kunden erlebt werden kann. Ich schlug vor, dass es für den Dienst wünschenswert wäre, die Verteilungslogik zu korrigieren - nicht sowohl die Telefonnummern der Kunden als auch den einmaligen Code in der Anfrage zu übertragen - sie antworteten mir nicht.

Ein wenig darüber, wie ich sonst versucht habe, das Problem zu vermitteln
Dann habe ich auf der Website des Geschäfts, die ich an die Kontakt-E-Mail geschrieben habe, gewartet - und wieder nichts. Da ich jedoch hartnäckig bin, habe ich auf derselben Website alle möglichen Kontakte (sowohl allgemeine Postfächer als auch persönliche Adressen) gefunden und ihnen geschrieben - wie Sie wissen, hat auch niemand geantwortet.
Deshalb habe ich mich später dem Chat zugewandt und direkt im Chat die Frage gestellt, ob sie meine Briefe erhalten haben. Zuerst antworteten sie, dass sie nicht sahen, dann fanden sie und versprachen, dass sie es geben würden.

Interessanterweise erhielt ich zusätzlich zu der fehlenden Reaktion auf die E-Mail an der Hauptadresse der Anwendung nach dem Chatten Briefe. In einem von ihnen sah ich, wie sie mich in das System brachten: "Cleverer Mann"



So lala Haltung gegenüber dem Kunden.

Als ich das letzte Mal nachgesehen habe, gab es keine Lösung von Avrora .
Es gab auch keine Korrekturen seitens des Vertriebsdienstes, aber hier ist die Situation ernster, so dass ich den Namen des Dienstes nicht direkt anzeige.



3. Eine mobile Anwendung zum Speichern von Rabattkarten und für mobile Zahlungen (mehr als 130.000 Kunden)

Am Eingang müssen Sie nur E-Mail und Code eingeben. In diesem Fall wird die Abfrage ausgeführt:

 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"}} 

Hier ist die Antwort:

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


Hier zeigt die Antwort auch den Code, der eingegeben werden muss (044912).

Nach dem Einloggen habe ich Zugriff auf folgende Funktionen:

  • Anzeigen von Kundenkarten und Boni darauf,
  • Gutscheine für bestimmte Geschäfte,
  • Kontaktinformationen zum Kunden (Telefonnummern und E-Mail, Geburtsdatum und Name)
  • Festlegen, Ändern und Löschen eines 4-stelligen Zugangscodes,
  • Zahlungskarten anzeigen
  • Empfangen eines Zahlungstokens (ähnlich dem Token aus meinem vorherigen Artikel Wie man ein Taxi auf Kosten eines anderen fährt ).

Somit können alle Funktionen der Anwendung für jeden zugänglich sein, der lediglich die E-Mail-Adresse des Benutzers dieser Anwendung angibt. Sie müssen keinen einmaligen Code vom Benutzer herausfinden, da dieser sofort nach der Eingabe sichtbar ist. Das Problem ist identisch mit den beiden anderen.

Sie antworteten auf meine Nachricht, behebten die Sicherheitslücke und dankten ihnen finanziell.



Wir können sagen, dass Sie in Diensten manchmal die Zwei-Faktor-Authentifizierung umgehen können, indem Sie sich nur die Autorisierungsanforderungen ansehen. Dies betrifft sowohl Websites als auch mobile Anwendungen. Beachten Sie dies, wenn Sie das nächste Mal Dienste mit einem persönlichen Konto entwickeln oder testen.

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


All Articles