
PoC-Honeypot zur Erkennung von Exploit-Versuchen gegen CVE-2024-47177
Dieses Projekt implementiert einen Honeypot zum Erfassen von Ausnutzungsversuchen von Sicherheitslücken im CUPS (Common UNIX Printing System). Insbesondere ist es darauf ausgelegt, Ausnutzungsversuche im Zusammenhang mit CVE-2024-47177 zu überwachen. Diese Sicherheitslücke ermöglicht die Ausführung von Befehlen aus der Ferne über den Parameter FoomaticRIPCommandLine in PPD-Dateien. Wenn ein bösartiger Wert an diesen Parameter übergeben wird, kann dieser als benutzergesteuerter Befehl ausgeführt werden, was potenziell zu schwerwiegenden Sicherheitsverletzungen führen kann.
CUPS ist ein standardbasiertes, quelloffenes Drucksystem, das weit verbreitet in verschiedenen UNIX-ähnlichen Betriebssystemen eingesetzt wird. Das Paket cups-filters bietet wesentliche Backends, Filter und Hilfsprogramme für CUPS 2.x auf Nicht-Mac-OS-Systemen. Der kritische Fehler, der in CVE-2024-47177 ausgenutzt wird, ist die unsachgemäße Behandlung des FoomaticRIPCommandLine-Parameters, der zusammen mit anderen Logikfehlern, wie denen in CVE-2024-47176 beschrieben, verwendet werden kann, um beliebige Befehle auf dem Hostsystem auszuführen.
Dieser Honeypot ist darauf ausgelegt, Exploit-Versuche zu protokollieren, indem er eingehende Druckauftragsanfragen überwacht und auf verdächtige Attribute untersucht, wobei der Fokus insbesondere auf der printer-privacy-policy-uri liegt, die Befehle enthalten kann.
Dieses Projekt wurde inspiriert durch die erste Offenlegung von EvilSocket, die die Sicherheitsrisiken im Zusammenhang mit CUPS aufzeigt und einen umfassenden Überblick über die beteiligten Ausnutzungstechniken bietet.
Um diesen Honeypot auszuführen, stellen Sie sicher, dass die folgenden Abhängigkeiten installiert sind:
cups und subprocess (in Standard-Python-Installationen enthalten)Laden Sie die install.sh-Datei herunter und führen Sie sie aus:
curl -sSL https://raw.githubusercontent.com/referefref/cupspot-2024-47177/refs/heads/main/install.sh | bash
Um den Honeypot auszuführen, führen Sie den folgenden Befehl aus:
python3 cupspot.py <LOCAL_HOST> [TARGET_HOST]
#<LOCAL_HOST>: The local address where the honeypot will listen for incoming print requests.
#[TARGET_HOST]: (Optional) The IP address of a target host to which browsing packets will be sent.
#If omitted, the honeypot will run in passive mode.
Führen Sie den Honeypot aus und senden Sie Pakete an ein bestimmtes Ziel:
python3 cupspot.py 127.0.0.1 192.168.1.100
Oder führen Sie ihn im passiven Modus aus:
python3 cupspot.py 127.0.0.1