Tecniche: Path Traversal

di: Luca Carettoni     06 Giugno 2007

Dopo gli approfondimenti dedicati ad alcune tecniche fondamentali di hacking (Buffer Overflow, SQL Injection, ecc.) è ora il momento di illustrare le tecniche di attacco e difesa per la vulnerabilità che va sotto il nome di Path Traversal. Questa tecnica è conosciuta anche come dot-dot-slash attack (../) oppure come directory traversal.

Gran parte delle applicazioni web gestiscono e utilizzano file residenti sul filesystem degli application server: se non viene implementato un corretto procedimento di validazione dell'input un aggressore può accedere a directory e file di cui non possiede i relativi permessi. Sfruttando con astuzia le problematiche di validazione dell'input, nel caso di chiamate a sistema che accedono a risorse del filesystem, è possibile che un aggressore riesca anche ad eseguire del codice arbitrario o comandi di sistema.

All'interno dei server sono spesso implementati meccanismi di autorizzazione per controllare l'accesso e la modifica di file e risorse. I web server, per esempio, confinano i file usabili dagli utenti all'interno di una "root directory" o "web document root" la quale è una directory fisica sul filesystem ma, agli occhi dell'utente, risulta come la prima directory della gerarchia a cui poter accedere.

La definizione dei permessi di lettura, scrittura ed esecuzione per utenti e gruppi viene gestita dall'amministratore utilizzando delle ACLs (Access Control Lists) implementate nel sistema operativo. In questo modo è possibile preservare l'accesso da parte di utenti malintenzionati verso file critici presenti sul server (es: /etc/passwd sui sistemi Unix) o l'esecuzione di comandi di sistema.

Poiché spesso gli sviluppatori utilizzano incautamente l'inclusione di file statici all'interno degli script server side usati per la generazione delle pagine dinamiche non è difficile riscontrare questo genere di problematica; gran parte delle attuali web application, per semplificare la gestione dei template grafici o il caricamento di testi statici, utilizzano direttive di include, require, import e così via

Bisogna subito evidenziare come questo genere di problematica non affligge solamente le applicazioni ma spesso anche i server web stessi: citiamo il caso di Microsoft IIS con il noto "%5c escape code".

In alcune vecchie versioni del noto web server di Microsoft è possibile sfruttare questa vulnerabilità per compromettere completamente il server, eseguendo comandi da remoto.

http://<IP>/scripts/..%5c../winnt/system32/cmd.exe?/c+dir+c:\

Effettuando questa semplice richiesta attraverso la barra degli indirizzi un eventuale aggressore, sfruttando directory traversal, riesce ad avviare la shell di sistema cmd.exe ed eseguire qualsiasi comando (in questo caso un innocuo dir c:). Il problema in questo caso è legato alla cattiva gestione dei codici di escape da parte del codice applicativo del server web che permette di richiamare risorse al di fuori della root directory; per precisione ricordiamo che il codice "%5c" rappresenta il carattere "\".

Guide Sicurezza

Guida SQL Injection con Sqlmap

Scopriamo se le nostre applicazioni web sono vulnerabili alle SQL...

Guida sicurezza applicazioni Web

Le tecniche di attacco più comuni, i metodi per verificare la...

Guida Sicurezza wireless

Quali sono i pericoli di sicurezza di una rete senza filo e quali...

Altre guide

Newsletter @Sicurezza

Ogni lunedì, direttamente nella tua e-mail: approfondimenti e bollettini su virus, vulnerabilità e sicurezza informatica.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Amministratore di Reti Windows Server 2008

20 Febbraio 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto