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 — CVE-2017-8291 CTF avec docker et exemples | Kitploit
Outils/GitHubGitHub/hkcfs/pil-cve-2017-8291
Analyse des VulnérabilitésExploitationExploitation d'Applications WebCTFApprentissage et ÉducationLabs et Pratique
GitHubhkcfs/pil-cve-2017-8291

PIL-CVE-2017-8291

CVE-2017-8291 CTF avec docker et exemples

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

Vulnérabilité d'exécution de commande à distance dans Python PIL (GhostButt)

Le module PIL (Pillow) permettant de traiter des images en Python est affecté par la vulnérabilité GhostButt (CVE-2017-8291) car il appelle GhostScript en interne, ce qui entraîne une vulnérabilité d'exécution de commande à distance.

Résumé de la vulnérabilité

PIL détermine en interne le type d'image en fonction de l'en-tête du fichier (Magic Bytes). S'il s'agit d'un fichier EPS (l'en-tête est %!PS), il est transmis à PIL/EpsImagePlugin.py pour traitement.

Dans ce module, PIL appelle la commande système gs, c'est-à-dire GhostScript, pour traiter les fichiers 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
            ]

# Omit the code to determine whether GhostScript is installed
try:
    with open(os.devnull, 'w+b') as devnull:
        subprocess.check_call(command, stdin=devnull, stdout=devnull)
    im = Image.open(outfile)
Télécharger l’outil

Bien que -dSAFER, c'est-à-dire le mode sans échec, soit défini, en raison d'une vulnérabilité de contournement du sandbox dans GhostScript (GhostButt CVE-2017-8291), ce mode sans échec est contourné et des commandes arbitraires peuvent être exécutées.

De plus, à l'heure actuelle, la dernière version officielle de GhostScript 9.21 est encore affectée par cette vulnérabilité, on peut donc dire que tant que GhostScript est installé sur le système d'exploitation, notre PIL présente une vulnérabilité d'exécution de commande.

Test de la vulnérabilité

Environnement d'exploitation :

root@kitploit:~
docker-compose up -d

Après exécution, visitez http://your-ip:8000/ pour voir une page de téléversement. La fonction normale consiste à téléverser un fichier PNG ; le backend appelle PIL pour charger l'image et affiche la largeur et la hauteur. Mais nous pouvons modifier l'extension du fichier EPS contenant la commande exécutable en PNG pour le téléverser, car le backend détermine le type d'image en fonction de l'en-tête du fichier, la vérification de l'extension est donc ignorée.

Par exemple, si nous téléversons poc.png, nous pouvons exécuter touch /tmp/youhavebeenpwned. Modifiez la commande dans le POC en une commande de rebond pour obtenir un shell :