
SSH-Exploit für CVE-2024-6387 : RCE im OpenSSH-Server auf glibc-basierten Linux-Systemen
CVE-2024-6387 ist ein hypothetisches Beispiel, aber nehmen wir an, es handelt sich um eine reale Schwachstelle in der OpenSSH-Serverimplementierung. Diese Schwachstelle könnte einen Pufferüberlauf oder einen Speicherfehler beinhalten, der es entfernten Angreifern ermöglicht, beliebigen Code auf dem Server auszuführen. Hier ist eine allgemeine Erklärung, wie eine solche Schwachstelle ausgenutzt werden könnte:
Der bereitgestellte Python-Code ist ein Exploit, der die Schwachstelle CVE-2024-6387 ausnutzt. Hier ist eine detaillierte Aufschlüsselung der Schritte: Verbindungsaufbau: Stellt eine TCP-Verbindung zum Ziel-SSH-Server her.
def setup_connection(ip, port):
# ...
Pakete senden und empfangen: Kümmert sich um das Senden und Empfangen von Paketen an/vom SSH-Server.
def send_packet(sock, packet_type, data):
# ...
SSH-Versionsaustausch: Initiiert den SSH-Handshake durch Senden und Empfangen der SSH-Versionszeichenfolge.
def send_ssh_version(sock):
# ...
def receive_ssh_version(sock):
# ...
Schlüsselaustauschinit (KEX_INIT): Sendet und empfängt das Paket zur Initialisierung des Schlüsselaustauschs.
def send_kex_init(sock):
# ...
def receive_kex_init(sock):
# ...
SSH-Handshake durchführen: Kombiniert die obigen Schritte, um den SSH-Handshake abzuschließen.
def perform_ssh_handshake(sock):
# ...
Heap-Vorbereitung: Sendet eine Reihe von Paketen, um den Heap-Zustand auf dem Server zu manipulieren.
def prepare_heap(sock):
# ...
Gefälschte Dateistruktur: Erstellt gefälschte Dateistrukturen, um die Speicherfehler-Schwachstelle auszunutzen.
def create_fake_file_structure(data, glibc_base):
# ...
Parse-Zeit messen: Misst die Zeit, die der Server zum Analysieren bestimmter Pakete benötigt, um die zeitliche Abstimmung des endgültigen Exploits zu unterstützen.
def time_final_packet(sock):
# ...
Öffentliches Schlüsselpaket: Erstellt ein Paket, das die Exploit-Nutzlast einschließlich des Shellcodes enthält.
def create_public_key_packet(packet, size, glibc_base):
# ...
Race-Condition-Exploit: Versucht, die Race-Condition durch korrekte zeitliche Abstimmung des letzten Pakets auszunutzen.
def attempt_race_condition(sock, parsing_time, glibc_base):
# ...
Hauptfunktion: Koordiniert den gesamten Exploit-Prozess, einschließlich mehrerer Versuche mit verschiedenen glibc-Basen.
def main():
# ...
CVE-2024-6387 stellt eine schwerwiegende Schwachstelle in OpenSSH dar, die die Ausführung von remoteem Code ermöglicht. Das bereitgestellte Python-Skript nutzt diese Schwachstelle aus, indem es den Heap manipuliert und die Sendezeit von Paketen timet, um Speicherfehler zu verursachen, und letztlich den Shellcode des Angreifers auf dem Server ausführt. Das Skript demonstriert typische Exploit-Entwicklungstechniken, darunter Heap Spraying, Speicherkorruption und präzise Zeitsteuerung für Race-Conditions.