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
Tools/GitHubGitHub/hkcfs/pil-cve-2017-8291
SchwachstellenanalyseExploitationWebanwendungs-ExploitationCTFLernen & BildungLabs & Praxis
GitHubhkcfs/pil-cve-2017-8291

PIL-CVE-2017-8291

CVE-2017-8291 CTF mit docker und Beispielen

Repository anzeigen
1vor 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

Schwachstelle zur Remote-Codeausführung in Python PIL (GhostButt)

Das PIL-Modul (Pillow) zur Bildverarbeitung in Python ist von der GhostButt-Schwachstelle (CVE-2017-8291) betroffen, da es intern GhostScript aufruft, was zu einer Schwachstelle zur Remote-Codeausführung führt.

Zusammenfassung der Schwachstelle

PIL bestimmt intern den Bildtyp anhand des Bild-Headers (Magic Bytes). Wenn festgestellt wird, dass es sich um eine EPS-Datei handelt (der Header ist %!PS), wird sie an PIL/EpsImagePlugin.py zur Verarbeitung übergeben.

In diesem Modul ruft PIL den systemeigenen gs-Befehl, also GhostScript, auf, um Bilddateien 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
            ]

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

Obwohl -dSAFER, also der sichere Modus, gesetzt ist, wird dieser sichere Modus aufgrund einer Sandbox-Bypass-Schwachstelle in GhostScript (GhostButt CVE-2017-8291) umgangen und beliebige Befehle können ausgeführt werden.

Darüber hinaus ist auch die derzeit neueste offizielle Version von GhostScript 9.21 noch von dieser Schwachstelle betroffen, sodass man sagen kann, dass unser PIL, solange GhostScript auf dem Betriebssystem installiert ist, eine Schwachstelle zur Befehlsausführung aufweist.

Test der Schwachstelle

Betriebsumgebung:

root@kitploit:~
docker-compose up -d

Nach dem Ausführen besuchen Sie http://your-ip:8000/, um eine Upload-Seite zu sehen. Die normale Funktion besteht darin, dass wir eine PNG-Datei hochladen, das Backend PIL aufruft, um das Bild zu laden, und die Länge und Breite ausgibt. Wir können jedoch die ausführbare Befehls-EPS-Dateiendung in PNG für den Upload ändern, da das Backend den Bildtyp anhand des Datei-Headers bestimmt, sodass die Endungsprüfung ignoriert wird.

Wenn wir beispielsweise poc.png hochladen, können wir touch /tmp/youhavebeenpwned ausführen. Ändern Sie den Befehl im POC in einen Reverse-Shell-Befehl, um eine Shell zu erhalten: