Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
PIL-CVE-2017-8291 — Bildungs-PoC für CVE-2017-8291 (GhostButt), das die Fernausführung von Befehlen über die EPS-Bildverarbeitung von Python PIL/Pillow mit Umgehung der GhostScript-Sandbox demonstriert. | Kitploit
Tools/GitHubGitHub/daniilorchikov/pil-cve-2017-8291
SchwachstellenanalyseExploitationWebanwendungs-ExploitationLernen & BildungBinary-ExploitationLabs & Praxis
GitHubdaniilorchikov/pil-cve-2017-8291

PIL-CVE-2017-8291

Bildungs-PoC für CVE-2017-8291 (GhostButt), das die Fernausführung von Befehlen über die EPS-Bildverarbeitung von Python PIL/Pillow mit Umgehung der GhostScript-Sandbox demonstriert.

Repository anzeigen
17vor 10 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Python PIL/Pillow Remote Command Execution (GhostButt / CVE-2017-8291)

Chinesische Version (Chinese version)

Python PIL (Pillow) ist eine beliebte Bildverarbeitungsbibliothek für Python. Sie unterstützt verschiedene Bildformate und bietet leistungsstarke Bildbearbeitungsfunktionen.

Das Python-Bildverarbeitungsmodul PIL (Pillow) ist von der GhostButt-Sicherheitslücke (CVE-2017-8291) betroffen, da es intern GhostScript zur Verarbeitung von EPS-Bildern aufruft. Diese Schwachstelle ermöglicht es Angreifern, beliebige Befehle auf dem Zielsystem auszuführen.

Wenn PIL ein Bild verarbeitet, bestimmt es den Bildtyp anhand des Dateikopfes (Magic Bytes). Handelt es sich um eine EPS-Datei (Kopf beginnt mit %!PS), wird die Datei an PIL/EpsImagePlugin.py zur Verarbeitung übergeben.

In diesem Modul ruft PIL den systemeigenen GhostScript-Befehl (gs) auf, um die Bilddatei zu verarbeiten:

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)

Obwohl das Flag -dSAFER gesetzt ist (Safe Mode), ermöglicht eine Sandbox-Umgehungslücke in GhostScript (GhostButt CVE-2017-8291) die Umgehung dieser Sicherheitsmaßnahme, was die Ausführung beliebiger Befehle erlaubt.

Zum Zeitpunkt dieses Schreibens ist selbst die neueste offizielle GhostScript-Version 9.21 noch von dieser Sicherheitslücke betroffen. Daher ist PIL solang anfällig für Befehlseinschleusung, wie GhostScript auf dem Betriebssystem installiert ist.

Referenzen:

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

Umgebungseinrichtung

Führen Sie den folgenden Befehl aus, um eine Webanwendung zu starten, die anfällig für die CVE-2017-8291-Sicherheitslücke ist:

docker compose up -d

Nach dem Start besuchen Sie http://your-ip:8000/, um zur Upload-Seite zu gelangen.

Ausnutzung der Sicherheitslücke

Die normale Funktionalität dieser Anwendung erlaubt es Benutzern, eine PNG-Datei hochzuladen. Das Backend verwendet PIL, um das Bild zu laden und seine Abmessungen auszugeben. Wir können dies jedoch ausnutzen, indem wir die Erweiterung einer ausführbaren EPS-Datei in PNG ändern und sie hochladen. Da das Backend den Bildtyp anhand des Dateikopfes und nicht der Erweiterung bestimmt, kann die Dateierweiterungsprüfung umgangen werden.

Beispielsweise können wir poc.png hochladen, das auf dem Server den Befehl touch /tmp/aaaaa ausführt. Indem wir den Befehl im POC in einen Reverse-Shell-Befehl ändern, können wir Shell-Zugriff auf den Server erhalten:

Vulnerability Exploitation

Tool herunterladen