Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
PIL-CVE-2017-8291 — CVE-2017-8291 CTF con docker y ejemplos | Kitploit
Herramientas/GitHubGitHub/hkcfs/pil-cve-2017-8291
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebCTFAprendizaje y EducaciónLabs y Práctica
GitHubhkcfs/pil-cve-2017-8291

PIL-CVE-2017-8291

CVE-2017-8291 CTF con docker y ejemplos

Ver Repositorio
1hace 1 añoAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Vulnerabilidad de ejecución remota de comandos en Python PIL (GhostButt)

El módulo PIL (Pillow) para procesar imágenes en Python se ve afectado por la vulnerabilidad GhostButt (CVE-2017-8291) porque llama internamente a GhostScript, lo que resulta en una vulnerabilidad de ejecución remota de comandos.

Resumen de la vulnerabilidad

PIL determina internamente el tipo de imagen basándose en el encabezado de la imagen (Magic Bytes). Si se determina que es un archivo EPS (el encabezado es %!PS), se envía a PIL/EpsImagePlugin.py para su procesamiento.

En este módulo, PIL llama al comando gs del sistema, que es GhostScript, para procesar archivos de imagen:

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)
Descargar herramienta

Aunque se establece -dSAFER, es decir, el modo seguro, debido a una vulnerabilidad de omisión de sandbox en GhostScript (GhostButt CVE-2017-8291), este modo seguro se elude y se pueden ejecutar comandos arbitrarios.

Además, hasta ahora, la última versión oficial de GhostScript 9.21 todavía se ve afectada por esta vulnerabilidad, por lo que se puede decir que mientras GhostScript esté instalado en el sistema operativo, nuestro PIL tiene una vulnerabilidad de ejecución de comandos.

Prueba de vulnerabilidad

Entorno operativo:

root@kitploit:~
docker-compose up -d

Después de ejecutar, visita http://your-ip:8000/ para ver una página de carga. La función normal es que subimos un archivo PNG, el backend llama a PIL para cargar la imagen y genera el largo y ancho. Pero podemos cambiar la extensión del archivo EPS de comando ejecutable a PNG para subirlo, porque el backend determina el tipo de imagen basándose en el encabezado del archivo, por lo que la verificación de la extensión se ignora.

Por ejemplo, si subimos poc.png, podemos ejecutar touch /tmp/youhavebeenpwned. Cambia el comando en el POC a un comando de rebote para obtener una shell: