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
Outils/GitHubGitHub/shun1403/cve-2017-8291
Analyse des VulnérabilitésExploitationExploitation d'Applications WebCTFApprentissage et ÉducationLabs et Pratique
GitHubshun1403/cve-2017-8291

CVE-2017-8291

Laboratoire basé sur Docker démontrant l'exploitation de CVE-2017-8291 (GhostButt) via le traitement d'images EPS avec Python PIL/Pillow, avec une application web vulnérable et un exploit de preuve de concept.

Voir le dépôt
il y a 1 anPas 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

Exécution de commandes à distance via Python PIL/Pillow (GhostButt / CVE-2017-8291)

Version chinoise

Python PIL (Pillow) est une bibliothèque de traitement d'images populaire pour Python. Elle supporte divers formats d'image et offre des capacités puissantes de manipulation d'images.

Le module de traitement d'images Python PIL (Pillow) est affecté par la vulnérabilité GhostButt (CVE-2017-8291) car il appelle en interne GhostScript pour traiter les images EPS. Cette vulnérabilité permet aux attaquants d'exécuter des commandes arbitraires sur le système cible.

Lorsque PIL traite une image, il détermine le type d'image en fonction de l'en-tête du fichier (Magic Bytes). S'il identifie un fichier EPS (en-tête commençant par %!PS), il transmet le fichier à PIL/EpsImagePlugin.py pour traitement.

Dans ce module, PIL appelle la commande GhostScript du système (gs) pour traiter le fichier image :

root@kitploit:~
command = ["gs",
            "-q",                         # quiet mode
            "-g%dx%d" % size,             # set output geometry (pixels)
            "-r%fx%f" % res,              # set input DPI (dots per inch)
            "-dBATCH",                    # exit after processing
            "-dNOPAUSE",                  # don't pause between pages,
            "-dSAFER",                    # safe mode
            "-sDEVICE=ppmraw",            # ppm driver
            "-sOutputFile=%s" % outfile,  # output file
            "-c", "%d %d translate" % (-bbox[0], -bbox[1]),
                                            # adjust for image origin
            "-f", infile,                 # input file
            ]

# Code to check if GhostScript is installed is omitted
try:
    with open(os.devnull, 'w+b') as devnull:
        subprocess.check_call(command, stdin=devnull, stdout=devnull)
    im = Image.open(outfile)

Bien que le drapeau -dSAFER soit défini (mode sécurisé), une vulnérabilité de contournement du sandbox dans GhostScript (GhostButt CVE-2017-8291) permet de contourner ce mécanisme de sécurité, permettant l'exécution de commandes arbitraires.

À l'heure actuelle, même la dernière version officielle de GhostScript 9.21 est encore affectée par cette vulnérabilité. Par conséquent, tant que GhostScript est installé sur le système d'exploitation, PIL est vulnérable à l'exécution de commandes.

Références :

  • Exploitation de la vulnérabilité d'exécution de commandes du module Python PIL
  • Détails du CVE-2017-8291
  • Avis de sécurité GhostScript

Configuration de l'environnement

Exécutez la commande suivante pour lancer une application web vulnérable à la faille CVE-2017-8291 :

root@kitploit:~
docker compose up -d

Après le démarrage, visitez http://your-ip:8000/ pour accéder à la page de téléchargement.

Exploitation de la vulnérabilité

La fonctionnalité normale de cette application permet aux utilisateurs de télécharger un fichier PNG. Le backend utilise PIL pour charger l'image et afficher ses dimensions. Cependant, nous pouvons exploiter cette fonctionnalité en changeant l'extension d'un fichier EPS exécutable en PNG et en le téléchargeant. Comme le backend détermine le type d'image en fonction de l'en-tête du fichier plutôt que de l'extension, la vérification de l'extension de fichier peut être contournée.

Par exemple, nous pouvons télécharger poc.png, qui exécutera la commande touch /tmp/aaaaa sur le serveur. En modifiant la commande dans le POC pour une commande de shell inversé, nous pouvons obtenir un accès shell au serveur :

Vulnerability Exploitation

Télécharger l’outil