Posts Tagged ‘burp suite’

Seguridad sobre ViewState en ASP.net

|

ViewState es una forma de trasnmitir datos ofuscados desde los clientes a la aplicación web en ASP.net. Básisamente consiste en un campo oculto que contiene un chorro largo de datos aparentemente ilegibles. Es interesante porque está muy extendido su uso, no obstante este parámetro es creado por defecto en todas las aplicaciones ASP.net.

El uso habitual es permitir estado sobre http ya que el protocolo no lo contempla.
Desde el punto de vista de la seguridad es importante saber que los datos no se envían por defecto cifrados (aunque como veremos posteriormente pueden configurarse así) sino codificados en base64. Es aquí donde tenemos el primer punto de ataque desde el punto de vista de seguridad. Inspeccionar este parámetro puede proporcionarnos información sensible.

Para leer los datos podemos hacer tampering de parametros con cualquier proxy y descodificarlo en cualquier descodificador que soporte base64 (todos) aunque esta opción es un poco tediosa. Más de uno ya se ha pegado con esto antes y gracias a ello tenemos varias herramientas que nos permiten ver estos datos de manera sencilla, voy a nombrar dos:

1. Burp Suite. Esta gran herramienta ofrece entre otras muchas cosas la decodificación automática del ViewState, sin siquiera hacer nada, solo navegar a través del proxy, como podemos apreciar en la siguiente imágen:


Free Image Hosting at www.ImageShack.us

Como apreciamos en la imagen hay una pestaña dedicada al ViewState en la que podemos ver su contenido. Un detalle importante es que esta aplicación ya detecta si está activada la opción MAC enabled, que veremos a continuación.

2. ViewState Decoder. Este plugin para firefox nos permite ver los datos de manera integrada en el navegador, sin necesidad de proxys, como podemos ver en la siguiente imagen:


Free Image Hosting at www.ImageShack.us

Bien ya tenemos el primer punto de ataque, ver datos sensibles. Imaginemos por ejemplo que uno de esos datos es el precio de un artículo en una página de venta de libros. El segundo punto de ataque es modificar dicho parámetro para engañar a la aplicación. ¿Es esto posible? La respuesta es sí. Tan simple como interceptar el parámetro, descodificarlo, modificarlo, volverlo a codificar y enviarlo.

Leyendo esto podemos pensar que es un mecanismo tremendamente inseguro de transmisión de datos aunque en realidad no es así, primero porque tiene opciones para asegurarlo y segundo porque en esencia está pensado para trasmitir el estado de la página, opciones de idioma, etc y no datos sensibles.
De todas formas aplicando las opciones de seguridad sí pueden transmitirse datos de manera segura y cifrada, esas opciones son las siguientes:

1. ViewState MAC. Este sistema permite tras cada dato introducido en el parámetro añadir su firma hash. de esta manera si el servidor recibe un dato y su firma no coincide con el dato recibimos el siguiente error:


Free Image Hosting at www.ImageShack.us

ViewState MAC puede activarse con la opción EnableViewStateMac en el fichero de configuración.

2. Cifrado del ViewState. Es posible, su uso no está muy extendido pero la funcionalidad está disponible. Básicamente se realiza añadiendo el siguiente código al fichero de configuración:

<configuration>

   <system.web>

      <machineKey validation="3DES" />

   </system.web>

</configuration>

Para más información sobre el cifrado del ViewState os remito a la siguiente web de Microsoft.

En resumen, es un punto de ataque que debe inspeccionarse ante páginas en ASP. Lo primero es ver si los datos no están cifrados para ver sus contenidos y valorar si son sensibles o aportan información adicional sobre la aplicación. En caso afirmativo intentar la modificación de los mismos.