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
PIL-CVE-2017-8291 — PoC éducatif pour CVE-2017-8291 (GhostButt) démontrant l'exécution de commandes à distance via le traitement d'images EPS par Python PIL/Pillow avec contournement de la sandbox GhostScript. | Kitploit
Outils/GitHubGitHub/daniilorchikov/pil-cve-2017-8291
Analyse des VulnérabilitésExploitationExploitation d'Applications WebApprentissage et ÉducationExploitation de BinairesLabs et Pratique
GitHubdaniilorchikov/pil-cve-2017-8291

PIL-CVE-2017-8291

PoC éducatif pour CVE-2017-8291 (GhostButt) démontrant l'exécution de commandes à distance via le traitement d'images EPS par Python PIL/Pillow avec contournement de la sandbox GhostScript.

Voir le dépôt
10il y a 9 moisPas 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 commande à distance dans Python PIL/Pillow (GhostButt / CVE-2017-8291)

中文版本(Version chinoise)

Python PIL (Pillow) est une bibliothèque de traitement d'images très populaire pour Python. Elle prend en charge divers formats d'image et fournit de puissantes capacités 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 (octets magiques / 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 l'option -dSAFER soit définie (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 où ces lignes sont écrites, même la dernière version officielle de GhostScript, la 9.21, est toujours 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 commande du module Python PIL
  • Détails sur CVE-2017-8291
  • Avis de sécurité GhostScript

Configuration de l'environnement

Exécutez la commande suivante pour démarrer une application web vulnérable à 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éversement.

Exploitation de la vulnérabilité

Le fonctionnement normal de cette application permet aux utilisateurs de téléverser un fichier PNG. Le backend utilise PIL pour charger l'image et afficher ses dimensions. Cependant, nous pouvons exploiter cela en changeant l'extension d'un fichier EPS exécutable en PNG et en le téléversant. Étant donné que le backend détermine le type d'image en fonction de l'en-tête du fichier plutôt que de l'extension, le contrôle de l'extension de fichier peut être contourné.

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

Exploitation de la vulnérabilité

Télécharger l’outil