Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2025-4138_tarfile_filter_bypass — CVE-2025-4138 - Python Scrittura arbitraria di file al di fuori della directory di estrazione | Kitploit
Strumenti/GitHubGitHub/thefizzyfish/cve-2025-4138_tarfile_filter_bypass
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebCTFPenetration Testing
GitHubthefizzyfish/cve-2025-4138_tarfile_filter_bypass

CVE-2025-4138_tarfile_filter_bypass

CVE-2025-4138 - Python Scrittura arbitraria di file al di fuori della directory di estrazione

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
36 mesi faNon ancora revisionato

CVE-2025-4138 — Bypass del filtro filter="data" di Python tarfile

Scrittura arbitraria di file al di fuori della directory di estrazione tramite una catena di symlink PATH_MAX.

Versioni interessate

  • Python 3.12.0 – 3.12.10
  • Python 3.13.0 – 3.13.3
  • Corretto in 3.12.11 / 3.13.4

Crediti:

Segnalazione: Caleb Brown (Google)

Come funziona

Il filtro dati tarfile di Python valida le destinazioni dei symlink usando os.path.realpath(). Quando il percorso risolto supera PATH_MAX (4096 byte su Linux), realpath() smette silenziosamente di risolvere e aggiunge i componenti rimanenti — incluso ../ — come stringhe letterali. Il filtro vede un percorso sicuro; il kernel esegue l'attraversamento reale.

L'exploit costruisce un tar in quattro fasi:

  1. Catena di symlink — 16 livelli di directory lunghe (247 caratteri ciascuna) con brevi alias di symlink (a→ddd..., b→ddd...). Porta il percorso risolto a ~3968 byte.
  2. Symlink pivot — ../ × 16 alla fine della catena. realpath() va in overflow e non riesce a risolverlo. Il kernel risale fino alla radice di estrazione.
  3. Symlink di fuga — Passa attraverso il pivot, sale fino a /, e scende fino alla directory di destinazione.
  4. File payload — Scritto attraverso il symlink di fuga nel percorso di destinazione come root.

Utilizzo

Per aggiungere/sostituire authorized_keys per l'utente root

Crea la chiave SSH in /tmp

root@kitploit:~
ssh-keygen -t ed25519 -f /tmp/key -N ""

Crea il file evil.tar

root@kitploit:~
python3 CVE-2025-4138_tarfile_filter_bypass.py \
    -o evil.tar \
    -t /root/.ssh/authorized_keys \
    -p /tmp/key.pub \
    -m 0600
FlagDescrizione

Riferimenti

  • NVD — CVE-2025-4138
  • GHSA-hgqp-3mmf-7h8f

Solo per test di sicurezza autorizzati e utilizzo in CTF.

Scarica lo strumento
-o
Percorso del tar di output
-tPercorso assoluto del file da scrivere sul target
-pFile locale da usare come contenuto del payload
-mPermessi ottali del file (predefinito: 0644)