
dlink vulnerability thing in python and rust
einfach so
CVE-2024-10914 ist eine kürzlich entdeckte Schwachstelle mit einem kritischen Score von 9.8, die einige D-Link Router betrifft. Da diese Router ihr End-of-Life (EOL) erreicht haben, weigert sich D-Link, diese Schwachstelle zu patchen, mit der Begründung „Hör auf arm zu sein und kauf einfach einen neuen Router“.
Die anfälligen Geräte legen einen HTTP-Endpunkt offen, normalerweise unter /cgi-bin/account_mgr.cgi?cmd=cgi_user_add&name=<user_input>. Aufgrund unzureichender Bereinigung – anstatt die Eingabe streng zu begrenzen oder zu validieren (nur alphanumerische Zeichen zuzulassen) – erlaubt die Anwendung die Injektion beliebiger Zeichen, einschließlich Sonderzeichen, die für Befehlszeilenoperationen verwendet werden, was eine beliebige Codeausführung ermöglicht.
Durch Einfügen von Shell-Metazeichen (wie ; | & oder $(command)) in das Namensfeld kann jeder problemlos Shell-Befehle ausführen. Zum Beispiel:
...name=admin'; echo 'get pwned bozo'; #
All diese Skripte tun nichts anderes, als eine Anfrage zu senden, bei der der name-Parameter auf den gewünschten auszuführenden Code geändert wird.
Es gibt ein ziemlich gutes Video von Fireship, das es detaillierter erklärt: https://www.youtube.com/watch?v=52v6gKPA4TM
Zuerst benötigst du ein anfälliges Gerät. Einige Modelle sind:
Ich rate dringend davon ab, dieses Skript ohne Zustimmung gegen jemand anderen einzusetzen. Bitte führe solche Aktionen nur durch, wenn dir der Router gehört oder du die Zustimmung des Besitzers hast.
cargo run -- -u http://<device ip address>
cargo run
pip install -r requirements.txt
python main.py -u http://<device ip address>
python main.py
folge dann den Anweisungen
Ich habe nicht den ursprünglichen Code geschrieben, das hat verylazytech getan. Ich habe ihn nur nach rust und python portiert, weil zum Teufel auch nicht. Natürlich geht die gesamte Anerkennung an ihn und alle anderen, die an der Entdeckung dieses Exploits beteiligt waren.