Geschichte einer NICHT-Sicherheitslücke

Vor einiger Zeit hatte ich die Gelegenheit, mit den Einstellungen eines normalen Routers zu experimentieren. Tatsache ist, dass ich am ersten April gezwungen war, meine Kameraden von der Universität zu spielen. Die Universität hatte ein Wi-Fi-Netzwerk. Ich habe beschlossen, ein gefälschtes Netzwerk auf meinem Router aufzubauen (einen Namen, ein Passwort und die MAC-Adresse eines der legitimen Zugangspunkte festzulegen) und meinen eigenen DNS-Webserver auf dem Laptop zu starten. Jeder, der versehentlich eine Verbindung zu meinem Netzwerk hergestellt und versucht hat, auf eine Website zuzugreifen, sollte mit einem Aprilscherz-Bild auf meine Seite weitergeleitet werden. Aber die Geschichte handelt nicht davon. Als ich mich in den Einstellungen des Routers umgesehen habe, habe ich einen interessanten Fehler gefunden. Ich werde Ihnen heute davon erzählen.

Bild

In der Einrichtungsphase war der Router mit dem Internet verbunden. Aus irgendeinem Grund haben mit Wi-Fi verbundene Geräte kein Internet empfangen. Ich muss verstehen. Im Bedienfeld des Routers befand sich eine Registerkarte mit der Möglichkeit, das Ping-Dienstprogramm zu verwenden, sodass Telnet nicht aktiviert werden kann (ich hoffe, alle Leser verstehen die Gefahr, dass Telnet nach außen offen ist?). Das Formular sah folgendermaßen aus:



Diese Funktion wird wie folgt implementiert. Das Router-Programm empfängt vom Benutzer eine Zeichenfolge, die die Adresse enthält, und ersetzt dann den Ping-Befehl durch die Aufrufzeichenfolge:

ping -c < > <> 

Wie gut überprüft der Router die Zeichenfolge mit der Adresse? Es war diese Frage, die in meinem Kopf auftauchte. Dann habe ich das kaufmännische Und und den Befehl ls ersetzt . Ich habe folgendes:



Für die im Tank


Auf UNIX-Systemen können wir bash zwingen, einen Befehl im Hintergrund auszuführen und danach ein kaufmännisches Und zu ersetzen. Gleichzeitig können wir einen Befehl nach dem kaufmännischen Und ersetzen, der gleichzeitig mit dem ersten ausgeführt wird. Was ich in diesem Fall verwendet habe. Durch Ersetzen von "8.8.8.8 & ls" erhielt ich "ping -c 3 8.8.8.8 & ls". Der Router führte die Befehle ping und ls gleichzeitig aus. Dann brachte das Ergebnis.

Wenn dieser Fehler an anderer Stelle erlaubt wäre, würde er zu einer sehr ernsthaften Bedrohung werden. Schließlich würde eine solche Sicherheitsanfälligkeit einem Angreifer helfen, den Router zu zwingen, einen Befehl auszuführen, oder sogar die vollständige Kontrolle über das Gerät zu erlangen. Solche Schwachstellen werden als CWE-78 (OS Command Injection) klassifiziert.

Ich saß nicht still und beeilte mich, dem Hersteller über den gefundenen Fehler zu schreiben. Ich habe das Modell des Routers, die Firmware-Version und das Skript zum Abspielen des Fehlers ausführlich beschrieben. Auf die ich eine interessante Antwort erhalten habe:

Bild
Übersetzung (wörtlich)

Könnten Sie die Hardwareversion auf dem unteren Etikett des Produkts überprüfen?
Wir haben keine Rev. Px. Kennen Sie die Quelle oder den Ort des Kaufs dieses Geräts?
Wie sich herausstellte, haben sie nicht darüber nachgedacht, was ich aus Russland schreibe. Dieses Modell des Routers wurde nur in unserem Land vertrieben. Die Korrespondenz endete mit dem Senden einer neuen Firmware an mich, die alle Mängel der vorherigen beseitigte und viele Funktionen hinzufügte, aber aus irgendeinem Grund nicht gemeinfrei war.

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


All Articles