
Honeypot PoC pour détecter les tentatives d'exploitation de CVE-2024-47177
Ce projet implémente un honeypot pour capturer les tentatives d'exploitation de vulnérabilités dans CUPS (Common UNIX Printing System). Plus précisément, il est conçu pour surveiller les tentatives d'exploitation liées à CVE-2024-47177. Cette vulnérabilité permet l'exécution de commandes à distance via le paramètre FoomaticRIPCommandLine dans les fichiers PPD. Si une valeur malveillante est transmise à ce paramètre, elle peut être exécutée en tant que commande contrôlée par l'utilisateur, ce qui peut entraîner des failles de sécurité graves.
CUPS est un système d'impression open source basé sur des normes, largement utilisé sur divers systèmes d'exploitation de type UNIX. Le paquet cups-filters fournit des backends, des filtres et des utilitaires essentiels pour CUPS 2.x sur les systèmes non macOS. La faille critique exploitée dans CVE-2024-47177 est la gestion inappropriée du paramètre FoomaticRIPCommandLine, qui peut être utilisée conjointement avec d'autres bogues logiques, comme ceux décrits dans CVE-2024-47176, pour exécuter des commandes arbitraires sur le système hôte.
Ce honeypot est conçu pour enregistrer les tentatives d'exploitation en surveillant les requêtes de travaux d'impression entrantes et en les inspectant pour détecter des attributs suspects, en se concentrant spécifiquement sur printer-privacy-policy-uri qui peut contenir des commandes.
Ce projet s'inspire de la divulgation initiale par EvilSocket, qui met en évidence les risques de sécurité associés à CUPS et fournit un aperçu complet des techniques d'exploitation impliquées.
Pour exécuter ce honeypot, assurez-vous d'avoir les dépendances suivantes installées :
cups et subprocess (incluses dans les installations Python standard)Téléchargez et exécutez le fichier install.sh :
curl -sSL https://raw.githubusercontent.com/referefref/cupspot-2024-47177/refs/heads/main/install.sh | bash
Pour exécuter le honeypot, exécutez la commande suivante :
python3 cupspot.py <LOCAL_HOST> [TARGET_HOST]
#<LOCAL_HOST> : L'adresse locale sur laquelle le honeypot écoutera les requêtes d'impression entrantes.
#[TARGET_HOST] : (Facultatif) L'adresse IP d'un hôte cible auquel des paquets de navigation seront envoyés.
#Si omis, le honeypot fonctionnera en mode passif.
Exécutez le honeypot et envoyez des paquets à une cible spécifique :
python3 cupspot.py 127.0.0.1 192.168.1.100
Ou exécutez-le en mode passif :
python3 cupspot.py 127.0.0.1