Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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
CVE-2017-8291 | Kitploit
Tools/GitHubGitHub/shun1403/cve-2017-8291
SchwachstellenanalyseExploitationWebanwendungs-ExploitationCTFLernen & BildungLabs & Praxis
GitHubshun1403/cve-2017-8291

CVE-2017-8291

Repository anzeigen
vor 1 JahrNoch 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-Befehlsausführung (GhostButt / CVE-2017-8291)

中文版本(Chinesische Version)

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

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 Sicherheitslücke ermöglicht es Angreifern, beliebige Befehle auf dem Zielsystem auszuführen.

Wenn PIL ein Bild verarbeitet, bestimmt es den Bildtyp anhand des Dateikopfs (Magic Bytes). Wenn es eine EPS-Datei erkennt (der Dateikopf beginnt mit %!PS), übergibt es die Datei an PIL/EpsImagePlugin.py zur Verarbeitung.

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

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)

Obwohl das -dSAFER-Flag gesetzt ist (Sicherheitsmodus), ermöglicht eine Sandbox-Bypass-Sicherheitslücke in GhostScript (GhostButt CVE-2017-8291) die Umgehung dieses Sicherheitsmechanismus, wodurch beliebige Befehle ausgeführt werden können.

Zum Zeitpunkt der Erstellung dieses Artikels ist selbst die neueste offizielle GhostScript-Version 9.21 noch von dieser Sicherheitslücke betroffen. Solange GhostScript also auf dem Betriebssystem installiert ist, ist PIL anfällig für die Befehlsausführung.

Referenzen:

  • Ausnutzen der Sicherheitslücke zur Befehlsausführung im Python-PIL-Modul
  • Details zu CVE-2017-8291
  • GhostScript-Sicherheitshinweis

Umgebungseinrichtung

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

root@kitploit:~
docker compose up -d

Nach dem Start rufen Sie http://your-ip:8000/ auf, um die Upload-Seite zu erreichen.

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 Dateikopfs und nicht anhand der Erweiterung bestimmt, kann die Prüfung der Dateierweiterung umgangen werden.

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

Ausnutzung der Sicherheitslücke

Tool herunterladen