Gli attacchi Path traversal vengono chiamati anche Directory traversal e sono exploit http, ossia porzioni di codice, sequenze di comandi o pacchetti di dati che sfruttano le vulnerabilità di un sistema per alterarne il comportamento.
Nel caso specifico si tratta di un attacco che riguarda i web server e mira ad accedere ai dati archiviati al di fuori della directory principale (la directory di root), arrivando così non soltanto a dare agli hacker la possibilità di visualizzare i file e, in alcuni casi, persino di eseguire comandi. C’è però modo di arginare i rischi.
Indice degli argomenti
Gli attacchi Path traversal
Poiché un attacco Path traversal viene normalmente sferrato via browser, occorre considerare che vi sono esposti tutti i web server che accettano input non convalidati. Mediante una scansione dell’albero delle directory, i cyber criminali ottengono una mappa precisa dei percorsi dei file riuscendo a sapere così quali sono sottoposti a restrizioni e quali no.
Questo tipo di scansioni vengono effettuate con delle applicazioni per il rilevamento delle vulnerabilità, tool di tipo Dynamic Application Security Testing (Dast) che vanno eseguiti outbound e che segnalano vulnerabilità di vario tipo, tra cui quelle cross-site scripting, SQL Injection, Command injection, quelle conseguenti a configurazioni perfettibili e, non da ultimo, quelle Path traversal.
Ciò che accade in pratica è persino elementare e può essere riassunto in quattro passaggi:
- Un hacker identifica applicazioni web che non validano l’input degli utenti
- Invia una richiesta al server per ottenere un file legittimo e consultabile da qualsiasi utente, per esempio https://nomefile.com/?file=nomefile.php
- L’hacker modifica l’URL usando “../” per cambiare percorso nell’albero delle directory del web server
- Accede così a informazioni sensibili quali, per esempio, ai dati contenuti nel database passwd che è di proprietà di root, ma è leggibile da utenti con privilegi minori (https://nomefile.com/?file=../../../etc/passwd)
Laddove non c’è validazione dell’input degli utenti, un hacker può muoversi con una certa libertà nell’albero delle directory, anche solo per visualizzare ciò che può essere modificato da root oppure utenti con privilegi sudo (i privilegi di superutente per gli utenti non root). Può, per esempio, accedere al file /etc/hosts e ottenere informazioni necessarie a sferrare un attacco Local File Inclusion (LFI) o Remote File Inclusion (RFI) che meritano un approfondimento.
Gli attacchi LFI e FRI
Gli attacchi di tipo Local File Inclusion (LFI) permettono agli attaccanti di interferire con un’applicazione Web affinché, per esempio, esegua operazioni non desiderate o esponga dati, anche sensibili. Argomento che può essere compreso meglio con un esempio.
Attacco a Kaseya: il ruolo del supply chain risk e dei processi DevSecOps
In assenza di filtri e misure di protezione, è possibile scavalcare deboli protezioni cambiando un URL. Partendo da un URL pubblico, per esempio www.nomesito.com/?module=services.php che restituisce una pagina web sulla quale si illustrano i servizi forniti dall’azienda, lo si può modificare digitando sulla barra di ricerca del browser un percorso che, normalmente, dovrebbe essere protetto come, per esempio: www.nomesito.com/?module=/etc/passwd e accedere così al contenuto del file /etc/passwd nel quale sono archiviati i dati relativi a tutti gli account riconosciuti dal server o dal sito web.
Può sembrare una banalità, una falla che è ormai chiusa da anni ma non è così. Questi attacchi riguardano le applicazioni scritte in Php e, considerando che è tra i linguaggi più diffusi sul web, prendere queste vulnerabilità sottogamba è rischioso. Gli attacchi LFI e RFI insieme costituiscono circa un quinto di quelli al livello di app web (Dati 2020).
Mentre negli attacchi LFI si utilizza file locali per eseguire del codice malevole, negli attacchi Remote File Inclusion (RFI) viene incluso sul server un codice malevolo ospitato altrove.
Come prevenire gli attacchi Path traversal
Ci sono misure che stringono il campo di azione degli hacker.
- Gli sviluppatori devono adottare tecniche di convalidazione dell’input accettato dai browser. La convalida dell’input impedisce agli attaccanti di accedere a directory che dovrebbero essere precluse, ma anche di utilizzare tecniche di esecuzione di comandi che prevengono attacchi come quelli di tipo SQL Injection.
- Le applicazioni web devono utilizzare filtri per bloccare input sospetti. Questi filtri bloccano gli URL anomali, quelli che contengono comandi e quelli che contengono codice comunemente usato dagli hacker. Il mercato è densamente popolato di software che assolvono questo compito.
- Gli amministratori dovrebbero aggiornare i web server e il sistema operativo su cui sono installati.
All’interno di un’organizzazione sufficientemente dotata di risorse quindi, tipicamente, una grossa azienda, si può fare ancora di più, creando un algoritmo che impedisca il Path traversal occupandosi di:
- Assegnare le autorizzazioni appropriate lungo tutto l’albero delle directory.
- Impedire agli utenti diversi da quello autorizzato di accedere ai file di sistema o di eseguire comandi.
- Creare un percorso Document Root completamente qualificato e normalizzato, il quale, è formato da una stringa fissa di N caratteri che non possa essere sostituita da stringhe di caratteri diversi e che sia l’unica directory in grado di dare seguito alle richieste utente.
I web server andrebbero sottoposti a verifiche periodiche.
Nimbuspwn, le vulnerabilità che consentono di prendere il controllo dei sistemi Linux: i dettagli
Come testare un web server
Gli amministratori possono ricorrere a diversi strumenti che possono essere acquistati o prelevati online. Segnaliamo quelli dell’Open Worldwide Application Security Project (Owasp), ente no profit che unisce un notevole bagaglio di esperienza in diversi ambiti, anche nella security. Molti dei progetti sono prelevabili da GitHub.