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
CVE-2017-8291 — Laboratorio basado en Docker que demuestra la explotación de CVE-2017-8291 (GhostButt) mediante el procesamiento de imágenes EPS con Python PIL/Pillow, con una aplicación web vulnerable y exploit de prueba de concepto. | Kitploit
Herramientas/GitHubGitHub/shun1403/cve-2017-8291
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebCTFAprendizaje y EducaciónLabs y Práctica
GitHubshun1403/cve-2017-8291

CVE-2017-8291

Laboratorio basado en Docker que demuestra la explotación de CVE-2017-8291 (GhostButt) mediante el procesamiento de imágenes EPS con Python PIL/Pillow, con una aplicación web vulnerable y exploit de prueba de concepto.

Ver Repositorio
2hace 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

Python PIL/Pillow Ejecución Remota de Comandos (GhostButt / CVE-2017-8291)

中文版本(Chinese version)

Python PIL (Pillow) es una popular biblioteca de procesamiento de imágenes para Python. Soporta varios formatos de imagen y proporciona potentes capacidades de manipulación de imágenes.

El módulo de procesamiento de imágenes de Python PIL (Pillow) está afectado por la vulnerabilidad GhostButt (CVE-2017-8291) porque internamente llama a GhostScript para procesar imágenes EPS. Esta vulnerabilidad permite a los atacantes ejecutar comandos arbitrarios en el sistema objetivo.

Cuando PIL procesa una imagen, determina el tipo de imagen basándose en la cabecera del archivo (Magic Bytes). Si identifica un archivo EPS (cabecera que comienza con %!PS), lo pasa a PIL/EpsImagePlugin.py para su procesamiento.

En este módulo, PIL llama al comando GhostScript del sistema (gs) para procesar el archivo 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
            ]

# 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)

Aunque la opción -dSAFER está configurada (modo seguro), una vulnerabilidad de evasión del sandbox en GhostScript (GhostButt CVE-2017-8291) permite eludir este mecanismo de seguridad, habilitando la ejecución arbitraria de comandos.

A fecha de redacción de este documento, incluso la última versión oficial de GhostScript, la 9.21, sigue afectada por esta vulnerabilidad. Por lo tanto, mientras GhostScript esté instalado en el sistema operativo, PIL es vulnerable a la ejecución de comandos.

Referencias:

  • Exploiting Python PIL Module Command Execution Vulnerability
  • CVE-2017-8291 Details
  • GhostScript Security Advisory

Configuración del Entorno

Ejecute el siguiente comando para iniciar una aplicación web vulnerable a la vulnerabilidad CVE-2017-8291:

root@kitploit:~
docker compose up -d

Después de iniciarla, visite http://your-ip:8000/ para acceder a la página de subida.

Explotación de la Vulnerabilidad

La funcionalidad normal de esta aplicación permite a los usuarios subir un archivo PNG. El backend utiliza PIL para cargar la imagen y mostrar sus dimensiones. Sin embargo, podemos explotar esto cambiando la extensión de un archivo EPS ejecutable a PNG y subiéndolo. Dado que el backend determina el tipo de imagen basándose en la cabecera del archivo en lugar de la extensión, la comprobación de la extensión del archivo puede ser eludida.

Por ejemplo, podemos subir poc.png, que ejecutará el comando touch /tmp/aaaaa en el servidor. Modificando el comando en el POC a un comando de shell inversa, podemos obtener acceso de shell al servidor:

Explotación de la Vulnerabilidad

Descargar herramienta