
Eine einfache, auf C basierende Schwachstelle in den Webmin-Versionen 1.890 bis 1.920
Einführung:
Der Webmin-Exploit ist ein gezielter Exploit für den Webmin-Dienst, der auf älteren Versionen von Webmin ausgenutzt werden kann. Dieser Exploit verwendet verschiedene Techniken, um schädlichen Code auszuführen und unbefugten Zugriff auf das Zielsystem zu erlangen.
Er umfasst:
Die Verwendung von C- und Assembly-Code, um Befehle auf dem Zielsystem auszuführen.
Den Einsatz von Techniken wie Anti-Debugging, XOR-Entschlüsselung und Syscalls wie execve und prctl, um eine Reverse Shell zu starten.
Funktionen: Anti-Debugging: Verwendet den ptrace-Systemaufruf, um das Debugging des Exploits zu verhindern.
XOR-Entschlüsselung: Dekodiert verschlüsselte Strings wie kthreadd und /bin/sh im Speicher mithilfe von XOR-Verschlüsselung.
prctl-Syscall: Ändert den Prozessnamen in kthreadd, um den Exploit in der Prozessliste zu verbergen.
execve-Syscall: Führt die /bin/sh-Reverse-Shell auf dem Zielsystem aus, um vollständigen Systemzugriff zu erlangen.
Kombination aus C und Assembly: Dieser Exploit verbindet die Flexibilität von C mit der Leistungsfähigkeit der Assemblersprache für benutzerdefinierte Systemaufrufe.
Voraussetzungen: Betriebssystem: Linux oder eine beliebige Unix-basierte Distribution.
Erforderliche Bibliotheken:
libcurl zum Aufbau von Verbindungen zwischen Client und Server.
GCC zum Kompilieren des Exploits.
Die Bibliothek -lcurl, um die curl-Bibliothek in C zu laden.
Verwendung: Einrichten der Umgebung: Stellen Sie sicher, dass Sie über Root-Rechte verfügen, da einige Aktionen wie execve erhöhte Berechtigungen erfordern.
Installieren Sie die erforderlichen Bibliotheken:
sudo apt-get install libcurl4-openssl-dev
Kompilieren des Exploits: Laden Sie die Datei webmin_exploit.c auf Ihren Rechner herunter.
Kompilieren Sie den Exploit-Code mit GCC und der Option -no-pie, um PIE (Position Independent Executable) zu deaktivieren:
gcc -no-pie webmin_exploit.c -o webExploit -lcurl
Hinweis: Wenn Probleme im Zusammenhang mit PIE auftreten, stellen Sie sicher, dass Sie -no-pie wie oben gezeigt verwenden.
Ausführen des Exploits: Konfigurieren Sie die Exploit-Einstellungen: Ändern Sie die Ziel-URL, LHOST (lokaler Host) und LPORT (lokaler Port) im Code nach Bedarf.
Führen Sie den Exploit aus: Nach dem Kompilieren starten Sie den Exploit auf dem Zielrechner:
./webExploit Empfangen der Reverse Shell:
Sobald der Exploit erfolgreich ausgeführt wurde, sollte er eine Reverse-Shell-Verbindung zu Ihrem LHOST und LPORT (z. B. 192.168.0.174:4444) aufbauen.
Stellen Sie sicher, dass Sie mit Netcat oder einem ähnlichen Tool auf dem angegebenen Port lauschen:
nc -lvnp 4444
Technische Aufschlüsselung: Wichtige Anweisungen im Code: Anti-Debugging: Der ptrace-Systemaufruf wird verwendet, um zu verhindern, dass der Exploit mit Tools wie gdb debuggt wird. Dies erschwert es Analysten, den Exploit zurückzuentwickeln.
XOR-Entschlüsselung: Die Strings kthreadd und /bin/sh sind in der Binärdatei mit dem Schlüssel 0x41 (ASCII 'A') XOR-verschlüsselt. Diese Strings werden zur Laufzeit im Speicher entschlüsselt.
Syscalls:
prctl(PR_SET_NAME, "kthreadd"): Ändert den Prozessnamen in kthreadd, was dem Exploit hilft, der Erkennung zu entgehen.
execve("/bin/sh"): Führt eine Reverse Shell zu /bin/sh aus und gewährt dem Angreifer vollen Zugriff auf das System.
Kernanweisungen: mov: Lädt Werte in Register.
xor: Führt eine XOR-Operation auf den Daten aus.
syscall: Führt Systemaufrufe wie execve und prctl zum Starten einer Shell und zum Umbenennen von Prozessen aus.
lea: Lädt eine Adresse in ein Register.
Fehlerbehebung: Wenn während der Kompilierung Probleme auftreten, überprüfen Sie, ob Sie das Flag -no-pie verwenden, um Position Independent Executables (PIE) zu deaktivieren.
Wenn die Probleme weiterhin bestehen, stellen Sie sicher, dass Ihre Entwicklungsumgebung mit den erforderlichen Bibliotheken auf dem neuesten Stand ist.
Warnungen: Verwenden Sie diesen Exploit nur in Testumgebungen. Führen Sie diesen Exploit niemals auf Live-Systemen oder Systemen aus, für die Sie keine ausdrückliche Genehmigung zum Testen haben.
Deaktivieren Sie bei Bedarf Firewalls auf dem Zielrechner, um sicherzustellen, dass die Reverse Shell erfolgreich eine Verbindung herstellen kann.
Stellen Sie sicher, dass Sie mit Netcat oder einem ähnlichen Tool auf dem Port lauschen, um die Reverse-Shell-Verbindung zu empfangen.