Il Local File Disclousure/ Download (o più semplicemente LFD), è un tipo di attacco simile al LFI( Local File Inclusion), con la differenza che i file vengono letti e non inclusi.

Un esempio di codice PHP afflitto da LFD potrebbe essere questo:

La funzione readfile() serve a leggere il contenuto di un file e, in questo modo, leggerà il contenuto del file dichiarato nella variabile $pagina.

Cosa può farci un attaccante con questo codice?

Potrebbe fare una richiesta del tipo:

http://www.informaticalab.com/test.php?pagina=../../../../../../etc/passwd

In questo modo, il contenuto di etc/passwd verrà stampato nella pagina (ma non incluso).
Local File Disclousure/Download
Alcune funzioni che possono permette questo attacco:

  • file_get_contents : Legge l’ intero file in una stringa
  • readfile : Mostra il contenuto di un file
  • file : Legge l”intero file in un’ array
  • fopen : Apre un file o un URL
  • highlight_file : Evidenzia il codice contenuto in un file seguendo i colori stabiliti nel php.ini (sintassi per PHP).
  • show_source : come highlight_file

Per fixare questo bug, basta disinibire l’ uso di caratteri speciali nelle variabili, o fixare il punto (e possibilmente anche le slash).