miércoles, 28 de septiembre de 2011

Full Path Disclosure en USVN

Se le dice "Full Path Disclosure" a un error frecuente en muchas aplicaciones web que permite ver el "path" completo de algún recurso de la web dentro del servidor. Por ejemplo si la URL de una web es:

http://www.example.com/index.php

Con un FPD, podríamos saber que el path de "index.php" es:

/home/pepito/htdocs/www.example.com/index.php

Seguro dirás ¿Y qué con eso? Pues nada, no es una vulnerabilidad crítica pero si que puede ser de mucha utilidad al momento de explotar otras vulns de más riesgo como LFI o SQLi.

Bien, pero vamos a lo que trata este post...

Hace poco me pidieron levantar un servidor controlador de versiones con "subversion". Eso es básicamente un repositorio de software que ayuda a gestionar un proyecto de desarrollo. Pues bien, para hacer más sencilla la administración del subversion, se me ocurrió configurarle una interfaz web y buscando encontré USVN. USVN es un proyecto open source que sirve para eso mismo, para administrar un subversion. Es fácil de instalar, esta escrito en PHP, es bastante intuitivo y bueno... quedó bien.

Terminada la instalación, me puse a jugar un poco con el USVN a ver que encontraba y el FPD salto al poco tiempo...

Al ingresar a USVN, lo primero que vemos es el login.

Fig. 1 - Login de USVN.

Si nos fijamos en la URL aparece "/usvn/login/" El FPD se consigue al reemplazar "login" por algo como "dksjfksd" en la URL.

Fig. 2 - Full Path Disclosure en USVN.

Esto sucede por que USVN trata de buscar un controlador llamado "fsafs", que obviamente no existe, de modo que se lanza una excepción que muestra la traza del error como se puede ver en el código del index.php.

Fig. 3 - USVN index.php

Seguramente ese for que muestra la traza del error está ahí para hacer debuging del sistema. Pero en un entorno de producción esto ya no es necesario y además, como hemos visto, representa un problema de seguridad. Por lo que sería recomendable borrar todo lo que aparece entre las etiquetas <body> y </body> y colocar ahí un mensaje de error genérico. Algo así:

Fig. 4 - index.php de USVN modificado.

Buscando con google, se pueden encontrar muchas páginas en internet que usan USVN:

Fig. 5 - Buscando webs con USVN en Google.

He revisado algunas cuantas y con todas se consigue el Full Path Disclosure. Así que por lo visto, no muchos tienen presente este problema.

Para terminar, decir que el ejemplo de este post se hizo con la ultima versión de USVN 1.0.1. En versiones anteriores, el FPD también es posible pero no reemplazando "login" en la URL sino aumentando una cadena rara después. Ejm:

http://www.example.com/usvn/login/sdfsdaf/


Es todo por ahora...

Saludos.

2 comentarios:

  1. Lo haz reportado a exploit-db??

    ResponderEliminar
  2. Ummm... nop xD

    Lo enviaré a ver que me dicen ;)

    Saludos.

    ResponderEliminar