I server web ospitano i file (pagine web, immagini, video, moduli, ecc.) che compongono la tua applicazione web e servono questi file quando qualcuno visita il tuo sito web. Alcuni server sono più avanzati e controllano anche quanto accesso hanno i visitatori web. Possono impedire ai visitatori abituali di accedere agli account o ai dashboard amministrativi di altri utenti. Anche se i server web sono efficienti in quello che fanno, e lo fanno in modo piuttosto sicuro, gli aggressori possono sfruttare gli errori che derivano da un errore umano o da una logica errata nel modo in cui un server serve i file che ospita.
Cos'è un attacco LFI?
Un attacco di intrusione di file locali (LFI) si verifica quando gli aggressori sfruttano le vulnerabilità nel modo in cui un server Web archivia, serve, convalida o controlla l'accesso ai suoi file. Questa vulnerabilità è comune ai siti Web basati su PHP.
A differenza di molte forme di attacchi informatici in cui gli aggressori si affidano al malware per corrompere un'applicazione, gli aggressori negli LFI si affidano principalmente a trucchi intelligenti e brevi righe di codice. Questo raramente richiede strumenti sofisticati o script complessi; gli attacchi si verificano in genere sul browser web. Il trucco più comune utilizzato dagli aggressori è la modifica della stringa dell'URL con codice, percorsi di file o nomi di file.
Come avvengono gli attacchi LFI?
Gli attacchi LFI si verificano in genere in quattro fasi.
Innanzitutto, l'attaccante identifica un sito Web PHP che esegue un'applicazione Web vulnerabile, in genere eseguendo un codice di base nell'URL del browser per vedere se l'applicazione Web (ovvero il sito) gestisce il comando. Pensa a come premere combinazioni di tasti sul tuo controller di gioco per sbloccare un uovo di Pasqua, ad esempio premendo il tasto giù per entrare nei tunnel in Super Mario. Ma i comandi che gli aggressori eseguono negli attacchi LFI sono più coerenti rispetto al controllo di ogni tunnel in Super Mario.
Un'applicazione Web o un server che è stato configurato in modo errato o non riesce a convalidare gli input eseguirà il codice dannoso. Da qui, l'hacker può ottenere l'accesso e i privilegi di cui ha bisogno per leggere file vulnerabili o caricare file dannosi sul server.
La maggior parte degli attacchi LFI porta l'attaccante ad accedere a informazioni sensibili. La possibilità di caricare malware raramente ha successo perché non vi è alcuna garanzia che l'applicazione Web salvi il file sullo stesso server in cui esiste la vulnerabilità LFI. Questo è spesso il caso se l'applicazione web si trova in un ambiente multi-server.
Quindi, se la vulnerabilità LFI esiste sul server che ospita le immagini ma non sul server che memorizza il dipendente credenziali o password utente, l'attaccante avrebbe accesso solo ai file immagine su quel server vulnerabile. Indipendentemente da ciò, gli eventi informatici come l'attacco a LastPass dimostrare che gli hacker possono provocare il caos con il livello di accesso apparentemente più insignificante.
Come prevenire gli attacchi LFI
Gli attacchi LFI sono abbastanza comuni, secondo il Aprire il progetto di sicurezza delle applicazioni Web (OWASP). Comprensibilmente, gli hacker favorirebbero questo attacco poiché, come W3Tech rapporti, quasi otto siti Web su 10 eseguono PHP come linguaggio di programmazione lato server: un'abbondanza di vittime, per così dire. È possibile prevenire un attacco LFI adottando le migliori pratiche di sicurezza web.
Autorizza i file del server pubblico
Le applicazioni Web utilizzano spesso percorsi di file come input URL. Gli hacker possono sfruttare questo sistema di archiviazione modificando la parte dell'URL che funge anche da percorso del file. Ad esempio, un utente malintenzionato può cambiare https://dummywebsite.com/?module=contact.php A https://dummywebsite.com/?module=/etc/passwd. Un server vulnerabile con filtri scadenti e logica errata visualizzerà il contenuto del file memorizzato nel percorso /etc/passwd.
Naturalmente, gli hacker utilizzano variazioni di nomi di file comuni e combinazioni di caratteri di query per aumentare le probabilità di un attacco riuscito. L'obiettivo è indurre l'applicazione Web a eseguire uno script o visualizzare i file su un server Web.
Puoi bloccare questa vulnerabilità creando una whitelist di documenti pubblici sul tuo server e indicando all'applicazione Web di ignorare le query per ogni altro documento o percorso di file. Pertanto, se un utente malintenzionato tenta di manipolare l'URL per richiedere o eseguire codici che richiedono un privato, riceverà invece una pagina di errore.
Testare frequentemente le vulnerabilità
Puoi usare strumenti di scansione web per trovare e correggere vulnerabilità che potrebbero esporvi ad attacchi LFI. Gli scanner di app Web sono strumenti automatizzati che eseguono la scansione della tua app come un utente malintenzionato e ti avvisano di potenziali vulnerabilità. Esistono diversi scanner web open source come OpenVAS e Wireshark, ma la maggior parte degli scanner di vulnerabilità sono software proprietari e richiedono piani a pagamento per essere utilizzati.
Ma, ovviamente, non ottieni uno scanner web solo per gli attacchi LFI. Questi strumenti cercano anche vulnerabilità di sicurezza più ampie come inclusione di file remoti, cross-site scripting, SQL injection e configurazioni del server inadeguate. Quindi, ne valgono la pena.
Limitare i privilegi dei visitatori del sito
Gli hacker spesso eseguono attacchi LFI con successo perché le applicazioni Web non riescono a compartimentare i privilegi degli utenti e, così facendo, consentono ai visitatori di accedere a file che dovrebbero essere visibili solo agli amministratori. Questa misura funziona come il whitelisting: configura la tua applicazione web e il tuo server in modo che servano file pubblici e ignorino le richieste non autorizzate quando un visitatore interagisce con l'app web. Ciò è particolarmente importante per le query sui percorsi dei file contenenti file sensibili.
A tal fine, potrebbe essere necessario impedire che i percorsi dei file vengano modificati direttamente. L'app Web deve servire solo documenti da un elenco di percorsi codificati. Inoltre, configura l'app Web per elaborare le richieste con la concatenazione dinamica del percorso (gli URL devono contenere caratteri alfanumerici) invece delle funzioni base64 o bin2hex.
Se stai pensando di inserire nella lista nera i nomi dei file, non farlo. Gli hacker di solito hanno un elenco crescente di nomi di file che possono utilizzare per eseguire un attacco LFI. Inoltre, è praticamente impossibile (e una colossale perdita di tempo) inserire nella blacklist un elenco di fonti in costante aumento di attacco.
Usa un ambiente multi-server
Un ambiente multi-server consente di isolare documenti importanti e sensibili dai file pubblici, riducendo così il rischio in caso di violazione. I server dedicati sono meno vulnerabili agli attacchi LFI perché, sebbene funzionino insieme, le loro configurazioni differiscono.
Oltre a questa sicurezza, più server sono anche affidabili (con minori rischi di downtime), veloci ed efficienti. Certo, l'utilizzo di un ambiente multi-server non è conveniente se il tuo sito web è piccolo. In tal caso, considera di suddividere l'accesso ai dati della tua applicazione web tra un database per i dati privati e un server per i file pubblici.
Dovresti essere preoccupato per gli attacchi LFI?
La possibilità di un attacco LFI esiste, specialmente se il tuo sito funziona su PHP, ma puoi ridurre la tua esposizione configurando le applicazioni web e i server secondo le migliori pratiche di sicurezza web.
Inoltre, dovresti considerare di eseguire controlli di sicurezza di routine per trovare vulnerabilità. Le cose si rompono continuamente, soprattutto quando l'architettura del sito diventa complessa. Gli strumenti di cui avrai bisogno per proteggerti sono automatizzati e molti non richiedono una configurazione elaborata o un know-how tecnico avanzato.