LFI (Local File Inclusion)

Abbiamo parlato tempo fa di RFI. (Remote File Inclusion). Adesso vediamo cos’è invece, una LFI. (Local File Inclusion). Così come suggerisce la traduzione in italiano, Inclusione di file locale, si tratta essenzialmente di una tecnica che ha lo scopo di includere, di iniettare un file, tramite form di upload e poi richiamarlo tramite script o pagine che includono dinamicamente delle altre pagine sul server “locale” (Quindi non permettono un include remoto [in quel caso si trattava di RFI]).


Quando si usa un’LFI, è solito iniettare una shell in php, per acquisire privilegi e disponibilità di movimento maggiori all’interno del sito bersaglio.
E’ scontato pensare che un form di upload per quanto mal programmato possa essere, non permetterà mai il caricamento di un file .php (per intenderci quindi, non sarà possibile caricare una shell php direttamente).

Entra in gioco qui edjpgcom, un piccolo tool, (presto disponibile nella nostra sezione download), che permette di mescolare nel codice che compone un’immagine jpg, del sorgente PHP. Quindi iniettiamo dentro la nostra immagine jpg –> la shell php.

Local File Inclusion

Quasi certamente eluderemo il controllo dell’estensione. Poichè adesso si tratta di un “quasi” normalissimo file jpg. Richiamando questa immagine da url per esempio: targethost.com/upload/shell_camuffata.jpg o aprendola non vedremo realmente l’immagine, semplicemente non ci verrà visualizzato alcun che, perchè ormai il file è compromesso dopo l’iniezione del sorgente php. Tuttavia ci sorprenderemo nel notare come un sistema di include dinamico che impieghi una linea di codice del genere, nella pagina X.php:

<?php Include($_GET[“pagina“]); ?>

Ci permetta di includere localmente la nostra immagine, in questo modo:

targethost.com/X.php?pagina=upload/shell_camuffata.jpg

E di conseguenza trovarci d’avanti alla nostra shell correttamente interpretata dal server.

Ho voluto dare un esempio pratico per far capire realmente come funziona il Local File Include. Con la premessa che questo articolo è per mettere in guardia i web master dai pericoli insiti nel codice e non ci riteniamo responsabili di qualsiasi uso inappropriato derivato dall’utilizzo di questa tecnica correlata ad eventuali bug.

Torna all'inizio