Im Moment gibt es so viele Arten von Schwachstellen, dass Entwickler die elementaren völlig vergessen. Neulich gelang es mir, die Autorisierung in der neuen WOG-Anwendung (TOV "VOG RETAIL" - das zweitgrößte Tankstellennetz in der Ukraine) zu umgehen. Im Jahr 2017 fand ich genau die gleiche Sicherheitslücke in der Anwendung eines der Mobilfunkanbieter der Ukraine (auch der zweitgrößte). Identische Situationen - eine neue Anwendung und mangelnder Schutz vor roher Gewalt.
Vor nicht allzu langer Zeit erhielt ich eine Benachrichtigung - das Unternehmen hat eine neue Anwendung veröffentlicht und bietet an, sie zu installieren. Ich mochte ehrlich die Funktionalität der Anwendung - das Anzeigen von Boni auf dem Konto, für das Sie Kraftstoff kaufen können. Die Möglichkeit, eine Bankkarte anzubringen und Waren kontaktlos oder per QR-Code zu bezahlen. Das Profil zeigt auch meinen Namen und meine Kontaktdaten, eine vollständige Transaktionshistorie - eine Liste der Waren und deren Wert zum Zeitpunkt des Kaufs.
Die Autorisierung in der Anwendung ist einfacher geworden - jetzt müssen Sie nicht mehr die Nummer der Kundenkarte eingeben, sondern nur noch die Handynummer angeben. Selbst am Eingang hatte ich jedoch den Verdacht, dass jeder meine Daten einsehen konnte. Insbesondere habe ich mehr als fünf Mal einen Code eingegeben, der sich von dem unterscheidet, den ich per SMS erhalten habe. Warum? - Weil ich zuvor in einer ähnlichen Anwendung eines Mobilfunkbetreibers eine Sicherheitsanfälligkeit gefunden habe, die vollen Zugriff auf die Verwaltung des Kontos eines Abonnenten ermöglichte.
Durch Eingabe des falschen Codes konnte festgestellt werden, dass ein Schutz gegen rohe Gewalt höchstwahrscheinlich nicht besteht.
Ich hatte recht - die Anwendung hat keinen Schutz. Sie können auf jedes Konto zugreifen und außerdem Ihr Konto „entführen“ - mit einer anderen Nummer verknüpfen, das Geld anderer Personen ausgeben.
Ich hatte den Eindruck, dass Anwendungsentwickler völlig vergessen, dass der Netzwerkverkehr nicht schwer abzufangen ist, selbst bei https-Anfragen.
Persönlich verwende ich das Fiddler-Programm - dieses Tool ermöglicht es, den Datenverkehr zu vertreten, anzuzeigen oder zu ändern. Um in den Verbindungseigenschaften des Smartphones zusätzlich zu den Proxy-Einstellungen auf den Inhalt von https-Anforderungen zugreifen zu können, müssen Sie zusätzlich das vom Programm generierte vertrauenswürdige Zertifikat installieren.
Zunächst war ich mit dem Selbstwertgefühl der Entwickler der Anwendung zufrieden - die API, die die Anwendung verwendet, befindet sich in der Domäne
.appog4ever .wog.ua. Durch einfaches Durchgehen der URLs konnte ich herausfinden, dass
IIS 7.5 und
1C: Enterprise 8 live auf dem Server sind, sowie ein Bild aus dem Header (vielleicht haben die Machinarium-Fans die API geschrieben?).
Das Autorisierungsschema ist einfach: Eine Anforderung mit einer „Anforderung“ zum Senden eines Codes an SMS wird an eine der API-
Methoden gesendet. Und hier ist die erste Schwachstelle das Fehlen von Grenzen. Unter derselben Telefonnummer können Sie von einer IP-Adresse aus so viele SMS "bestellen", wie Sie möchten.
Später, in den Ausschreibungen des Unternehmens, fand ich
Informationen, dass bis zu 1.000.000 SMS pro Monat gesendet werden sollen (sie sind bereit, ein Jahr lang ~ 98.000 US-Dollar dafür auszugeben). Es stellt sich heraus, dass die Sicherheitsanfälligkeit zu Unternehmensverlusten von ca. 8.200 USD pro Tag führen kann, wenn 12 Anfragen pro Sekunde gesendet werden.
Es ist erwähnenswert, dass für die korrekte Verarbeitung von Anforderungen durch den Server eine
grundlegende Autorisierung erforderlich ist - dies ist eine der Schutzmethoden, die die Entwickler verwendet haben. Warum? Es ist nicht klar - ich sehe keinen Sinn darin - das Abfangen des
Logins / Passworts oder des erforderlichen http-Headers ist überhaupt kein Problem.
Nachdem der Benutzer eine SMS erhalten und den Code in die Anwendung eingegeben hat, sendet er eine
Anfrage , um die Zuverlässigkeit des Codes zu überprüfen und ein Token zu erhalten. Die nächste und kritischste Sicherheitslücke war hier - es gibt keinen Schutz gegen rohe Gewalt. Die Auswahl eines Codes, der aus 4 (!) Ziffern besteht, erfordert nicht viel Zeit.
Nachdem Sie das Token erhalten haben, können Sie andere API-Methoden verwenden. Eine davon ermöglicht es, den PIN-Code von der Kundenkarte zu ändern. Das Verfahren ist Standard - geben Sie die alte PIN ein, geben Sie eine neue ein. Ich möchte mich auf diese Methode konzentrieren, da der Entwickler hier eine andere Methode des nutzlosen "Schutzes" verwendet hat. Natürlich gab es auch keinen Schutz gegen rohe Gewalt, aber der alte Stift wurde in versteckter Form verschickt. Die Idee ist gut - nur das Sortieren der Kombinationen 0000-9999 schlägt fehl. Die Implementierung ist schlecht - anstelle des Codes wird ein MD5-Hash gesendet. Ohne Salzersatz oder irgendetwas anderes.
Ehrlich gesagt habe ich keine Ahnung, wie ich auf den Anwendungscode zugreifen soll und ob dies möglich ist - selbst der veraltete md5 würde mich aufhalten, wenn Salz verwendet würde.
Ich habe es auch geschafft, ein Token für ein "fremdes" Konto nicht nur brutal zu erzwingen, sondern es auch in die Anwendung zu verschieben. Ich habe ein kleines Skript auf node.js geschrieben, das den Datenverkehr überträgt und nur die Antworten der gettoken-Methode ersetzt.
Der Artikel wurde nach einem Gespräch mit dem "stellvertretenden Direktor der IT-Abteilung" des Unternehmens verfasst. Die Jungs reagierten zügig - ich konnte innerhalb von 24 Stunden Kontakte für die Kommunikation bekommen. Ich habe eine Beschreibung der Sicherheitslücken und eine Frage zum Vorhandensein von Bug Bounty gesendet.
Als Antwort erhielt ich einen Brief mit der Information, dass sie mich angeblich "entdeckt" haben - "
Wir haben Sie sofort gesehen (380958302 ---) und die Schlösser haben funktioniert ... Ich werde nicht über alle Schlösser berichten, aber viele von ihnen sind gestern erschienen. "
Was mich betrifft, sieht es eher nach Frost aus - denn als ich auf diesen Brief antwortete, „ist der
Witz, dass mir diese Nummer nicht bekannt ist. Ich habe auf Nummern 095866 getestet ... "
Im Gegensatz zum WOG-Unternehmen war der Leiter der Informationssicherheitsabteilung des Mobilfunkbetreibers viel gesprächiger und hat als Dankeschön ein Smartphone eingebaut =)