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
PIL-CVE-2017-8291-study | Kitploit
Tools/GitHubGitHub/shun1403/pil-cve-2017-8291-study
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationLernen & BildungLabs & Praxis
GitHubshun1403/pil-cve-2017-8291-study

PIL-CVE-2017-8291-study

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

PIL-CVE-2017-8291

  • White Hat School, 3. Jahrgang, Klasse 13, Baek Seunghun (@shun1403) https://github.com/shun1403/PIL-CVE-2017-8291.git
  • Umgebung: Ubuntu Linux

Umgebung einrichten

  • Upgrade auf V2 mit sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • Falls bei der Ausführung Fehler auftreten, Docker mit den folgenden Befehlen zurücksetzen
  • sudo apt remove docker docker-engine docker.io containerd runc -y
  • sudo apt update
  • sudo apt install -y ca-certificates curl gnupg lsb-release
  • sudo mkdir -p /etc/apt/keyrings
  • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  • echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • sudo apt update
  • sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • docker compose version
  • Wenn die Versionsprüfung erfolgreich angezeigt wird, ist alles in Ordnung.

git clone

git clone https://github.com/vulhub/vulhub.git

  • Nach dem Klonen in den Pfad der gewünschten Schwachstelle wechseln

  • Hier: /vulhub/python/PIL-CVE-2017-8291

  • Die Übung wird anhand der folgenden yml-Datei durchgeführt

  • docker compose up -d : Befehl zum Erstellen des Containers und Ausführen im Hintergrund

  • Danach localhost:8000/ aufrufen und die Webseite mit Datei-Upload-Funktion prüfen image

  • Die manipulierte poc.png aus demselben Pfad hochladen

  • Nach dem Hochladen wird Folgendes angezeigt

  • image

  • Im Normalbetrieb würde nach dem Hochladen einer PNG-Datei die Breite und Höhe des Bildes ausgegeben werden. Da das Backend den Bildtyp jedoch anhand des Dateikopfes bestimmt, kann eine EPS-Datei mit ausführbaren Befehlen – unter Ignorieren der Dateierweiterung – in eine PNG-Datei umbenannt und hochgeladen werden.

  • Dadurch wird beim Hochladen der poc.png-Datei die Ausführung des Befehls 'tocuh /tmp/aaaaa' möglich; wenn der Befehl in der POC-Datei durch einen Reverse-Shell-Befehl ersetzt wird, kann eine Shell erlangt werden.

  • Nach dem Hochladen der Datei kann man sich in den Docker-Container begeben und in /tmp prüfen, dass die Datei aaaaa durch den Befehl erstellt wurde.

root@kitploit:~
command = ["gs",
            "-q",                         # 조용한 모드(출력 최소화)
            "-g%dx%d" % size,             # 출력 이미지 크기 설정 (픽셀 단위)
            "-r%fx%f" % res,              # 입력 이미지 해상도(DPI) 설정
            "-dBATCH",                    # 작업 완료 후 자동 종료
            "-dNOPAUSE",                  # 페이지 간 일시 정지 없이 연속 실행
            "-dSAFER",                    # 안전 모드 활성화
            "-sDEVICE=ppmraw",             # 출력 디바이스를 ppmraw로 설정
            "-sOutputFile=%s" % outfile,   # 출력 파일 경로 지정
            "-c", "%d %d translate" % (-bbox[0], -bbox[1]), 
                                            # 이미지 원점을 보정 (이동)
            "-f", infile,                  # 입력 파일 지정
          ]

Code zur Prüfung der GhostScript-Installation ausgelassen

root@kitploit:~
try:
    with open(os.devnull, 'w+b') as devnull:
        subprocess.check_call(command, stdin=devnull, stdout=devnull)
    im = Image.open(outfile)

Ergebnis

image

Fazit

Die Schwachstelle trat in der Python Imaging Library (PIL) auf und wurde unter CVE-2017-8291 behandelt. Die Schwachstelle entsteht dadurch, dass PIL den Bildtyp anhand des Dateikopfes und nicht anhand der Dateierweiterung bestimmt. Dadurch kann eine tatsächliche EPS-Datei, deren Erweiterung lediglich in PNG geändert wurde, hochgeladen werden; der Server ruft dabei GhostScript auf, wodurch in der Datei eingebettete beliebige Befehle ausgeführt werden können.

Im Projektverlauf wurde die manipulierte poc.png-Datei hochgeladen und die Erstellung der Datei /tmp/aaaaa im Server bestätigt. Damit wurde reproduziert, dass die Schwachstelle tatsächlich zu einer Befehlsausführung (RCE, Remote Code Execution) führen kann. Darüber hinaus zeigt sich, dass die Schwachstelle die ursprünglich vorgesehene Bildverarbeitungsfunktion ausnutzen und zu fortgeschrittenen Angriffen wie einer Reverse Shell ausgebaut werden kann.

Tool herunterladen