Analizzando pagine web dinamiche di vari siti o ad esempio dei CMS (Wordpress, Drupal, Joomla) è possibile notare come gli sviluppatori ottimizzino il codice distribuendolo su più pagine.
In questo modo i programmatori evitano di creare file (ad esempio php) troppo grandi e di conseguenza meno chiari/flessibili.
Per incorporare il contenuto di una pagina php dentro l’altra, vengono utilizzate le funzioni:
include(‘pagina2.php’);
include_once(‘pagina2.php’);
require(‘pagina2.php’);
require_once(‘pagina2.php’);
Cosa può accadere se il nome della pagine inclusa viene richiamata col metodo GET o POST senza l’inserimento di adeguati filtri?
La risposta è semplice: è possibile leggere file di sistema o scaricare il codice sorgente degli applicativi, questa vulnerabilità viene chiamata LFI Local File Inclusion.
E’ importante precisare due punti per il corretto rilevamento della vulnerabilità:
I files a cui avrà accesso la pagina affetta dal bug, devono avere almeno i permessi in lettura per l’utente Apache (o l’utente di riferimento del demone http)
Il sistemista del web server non ha circoscritto l’area di lavoro dell’applicativo