sábado, junio 20, 2015

Trace Viewer: Error de traza en servidores Microsoft IIS

Como ya os he contado en varios artículos, llevo un tiempo jugando con la configuración de los mensajes de error en los servidores web. Jugar con el QueryString y aprender de la información que somos capaces de obtener de ellos puede ser muy valioso. Trucos para detectar el tipo de WAF que se está utilizando o que permitan descubrir bugs en los servidores web pueden facilitar el proceso completo de una auditoría. En el caso concreto de Microsoft IIS, hace no mucho tiempo estuve jugando con Request Filtering, para forzar errores que ayudaran a localizar las versiones del servidor que estaban detrás de los sitios y ayer estuve jugando otro rato con los ya antiguos Errores de Traza.

Figura 1: Trace Viewer: Error de traza en servidores web Microsoft IIS

En los servidores Microsoft IIS con tecnología .NET, existe la posibilidad de activar la traza de aplicaciones web para poder estudiar cómo se está comportando el servidor en cada petición. Esta traza, por defecto, está habilitada en la configuración del sistema para que solo pueda utilizarse desde la máquina local. Esto se puede comprobar solicitando el acceso a la traza de las últimas peticiones, mediante una llamada al recurso trace.axd, que dará acceso a Trace Viewer.

Figura 2: Error en intento de acceso remoto a Trace Viewer

Como se puede ver en la imagen, cuando el recurso está configurado correctamente, no se puede acceder al mismo, y se obtiene un error. Cuando esto sucede puede ser que veamos un error como el anterior - que tampoco significa que esté bien configurado el sitio ya que muestra los errores personalizados y eso no debería ser así en un sitio en producción - indicándonos que la traza solo está habilitada para conexiones locales. Esto se configura en el archivo web.config con una entrada como la siguiente:
<configuration>
<system .web=""> <trace enabled="true" localonly="false"> </trace> </system> </configuration>

Por desgracia, en algunos casos, o bien por un fallo en la configuración de Web.Config o bien porque se ha cometido un error en Machine.Config, estos quedan habilitados para consulta remota. Machine.Config es como el fichero Web.Config pero a nivel de servidor completo, y como la configuración se hereda, si se toca este fichero afecta a todos los sitios del servidor web Microsoft IIS. Esto habilitaría Trace Viewer para conexiones remotas, tal y como se puede ver en la siguiente imagen.

Figura 3: Trace Viewer habilitado para acceso remoto en una web

Con Trace Viewer no solo se ve la lista de las últimas peticiones, sino que de cada una de ellas se puede obtener información relativa a todos los detalles, que van desde el identificador de la sesión, las direcciones IP de las conexiones hasta datos más sensibles.

Figura 4: Detalles de una petición en Trace Viewer

Por supuesto, si en la petición que se haya realizado al servidor van parámetros por GET o por POST, si van cookies de sesión, usuarios, contraseñas o si va información sensible en el HTTP Referer o el USER-Agent, todos estos datos están accesibles vía Trace Viewer.

Figura 4: Rutas locales, información de clientes, etcétera en una traza

Una cosa curiosa es que, si el sitio web utiliza Https, toda la información va cifrada contra el servidor Microsoft IIS, pero una vez realizada la petición y guardada la traza, todos los datos van descifrados, por lo que se puede acceder a los datos sin preocuparse de ninguna capa de cifrado. Cuida que tu trace.axd esté bien configurado en tu servidor Microsoft IIS.

Saludos Malignos!

2 comentarios:

  1. Como se puede evitar que este archivo este accesible ?

    ResponderEliminar
  2. En la última captura no ocultas bien los datos.

    Saludos.

    ResponderEliminar