Proteggete il vostro sito Web contro gli attacchi path traversal

Parte prima

I Web server vengono generalmente configurati in modo da limitare
l’accesso pubblico a una specifica porzione del proprio file system, tipicamente
la directory denominata “Web document root”. Questa directory contiene i file
destinati all’accesso pubblico e tutti gli script necessari a fornire
funzionalità alle applicazioni Web. In un attacco path traversal, un intruso
manipola un URL in modo che il Web server esegua o riveli il contenuto di un
file ovunque questo si trovi sul server, compresi quelli esterni alla directory
“Web document root”. Gli attacchi path traversal sfruttano le sequenze di
caratteri speciali nei parametri dell’URL, i cookie e gli header nelle richieste
HTTP.

L’attacco path traversal fondamentale usa la sequenza di caratteri “../ ” per alterare la posizione delle risorse o di un documento richiesti tramite un’URL. Nonostante la maggior parte dei Web server impedisca questo metodo di uscita dalla directory “Web document root”, la codifica alternata delle “../ “, come la codifica Unicode, può eludere i filtri di sicurezza meno evoluti. Perciò, anche se un Web server limita correttamente i tentativi di attacco path traversal nel percorso dell’URL, qualsiasi applicazione che si avvale di un’interfaccia basata su HTTP è potenzialmente vulnerabile a tali attacchi. Per esempio, esaminiamo le due URL seguenti:

URL corretta:
HTTP://www.yourserver.com/scripts/database.cgi?report=quarter1.txt

URL di attacco:
HTTP://www.yourserver.com/scripts/database.cgi?pagina =../scripts/database.cgi%00txt

L’URL usata per l’attacco forza l’applicazione CGI a rivelare il codice sorgente del file database.cgi perché questo è interpretato come testo anziché come script eseguibile. L’attacker si avvale della sequenza di caratteri speciale “../ ” per spostarsi su una directory al di sopra di quella corrente ed entrare quindi nella directory /scripts. La sequenza “%00” è usata sia per eludere un semplice controllo sull’estensione del file sia per eliminare l’estensione stessa quando il file è letto ed elaborato dall’applicazione CGI. Questo esempio evidenzia l’importanza di un controllo costante e della “pulizia” di qualsiasi input fornibile dall’utente prima che questo possa essere processato da un Web server o da un’applicazione Web.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome