Explotando vulnerabilidades LFI y Directory Transversal en un sitio web

unprotectedUna vulnerabilidad LFI o Directory Transversal puede comprometer todo un servidor, no solo la cuenta del sitio que tiene la vulnerabilidad. Estas vulnerabilidades ocurren cuando se parsea una variable y el contenido de ésta es incluido o leído directamente, ya sea usando una función “include”, “fread”, “file”, etc.

Son vulnerabilidades muy comunes y comprometen a todo el servidor, si un atacante con las capacidades necesarias puede obtener acceso al servidor hatsa ganar root.

Les voy a mostrar cómo hacerlo y el impacto que puede llegar a tener.
El sitio elegido es el de la “Ilustre Municipalidad de Castro”, sitio hecho en ASP puaj.

Antes de publicar todo esto, me di el trabajo de comunicarlo a los encagrados del sitio web sin obtener respuesta, por lo que asumo que no les interesa la seguridad y asi como yo, cualquier persona podría hacerle algo al sitio web o al servidor, asi que me di la libertad de tomar este sitio como ejemplo didactico.

Paso a paso

Navegamos el sitio buscando alguna vulnerabilidad, fijandonos en los links, formularios, etc. Si nos damos cuenta, situando el cursor sobre el menu de la izquierda podemos ver enlaces del tipo https://www.municastro.cl/<seccion>?Seccion=<archivo a incluir> por ejemplo https://www.municastro.cl/Cultura.asp?Seccion=cultura_resena_historica.htm lo que a simple vista parece ser vulnerable a LFI cambiando el valor de la variable “Seccion”. Probemos, cambiemos cultura_resena_historica.htm por cualquier texto:

municastro1

Nos mostrará un mensaje como el siguiente:

municastro2Eso confirma nuestra teoría de que lo que hace el sistema es incluir directamente el archivo cuyo nombre es pasado mediante la variable Seccion, entonces empezamos a probar e intentamos incluir el mismo archivo Cultura.asp

municastro3

Nos mostrarámunicastro4

Lo que claramente es el código fuente del fichero Cultura.asp. Para verlo un poco más claro podemos presionar control+u (en FF, para ver el código fuente) donde podremos ver

municastro5

¿Se dieron cuenta? Hay un fichero que se incluye llamado conMuniCastro.inc, en el que, según yo, están los datos de conexion a la base de datos. Comprobemos mi teoría:

municastro6

municastro7

En la última linea de la imágen, podemos ver como el  usuario y la password quedan a la vista de todos. Ahora lo único que queda, es buscar otros sitios alojados en el mismo servidor y empezar a incluir sus archivos para ver su código fuente e ir intentando ingresar por ftp, cpanel, etc hasta ganar algún tipo de acceso más privilegiado.

6 comentarios

  1. noooo que feo!, no podes colocar los nombres de los archivos que incluís en el HTML! bajisimo!. Osea aparte del error serio LFI, incluir los nombres demuestra una ignorancia total del tema.

  2. Zerial

    julio 21, 2009 a las 10:56 am

    @d3m4s1@d0v1v0: Asi es! Ignorancia total del tema. Además, cuando intento “ayudarlos”, enviandole correos y buscando la forma de contactarlos, ellos no responden.
    Lamentablemente este tipo de fallas es muy comun y muy recurrente en sitios web.

    Cuando la programacion cae en manos de ignorantes ….. ese es el resultado.

  3. No puede ser esto, no puede ser el nivel de seguridad de estos tipos de sitios, voy a seguir tus pasos y publicar noticas de este tipo en mi blog.

    Saludos Zerial.

  4. Mal por los programadores… habrán pagado y hoy no les quieren ayudar a solventar las cosas?

    Creo que ya estas agarrando vicio encontrando vulnerabilidades 😉

    Como dice Panic, dan ganas de publicar tambien este tipo de cosas… yo espero publicar otro sitio que di aviso desde enero, me respondieron me dieron las gracias… pero siguen sin hacer nada, asi que, si ellos no se preocupan, porque tenemos que preocuparnos nosotros para publicar las cosas? Todo sea para poner ejemplos “didacticos”.

    Saludos!

  5. Zerial

    julio 21, 2009 a las 8:49 pm

    @Cisko: Asi es! todo sea por fines educativos.

  6. Que onda esto no lo sabia de LFI en ASP esta bueno un buen tema

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Esto sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.