¿Cómo determinar si ViewState tiene MAC habilitado cuando se rastrea una página?

4

Estaba usando Burp Suite para hacer algunas pruebas de seguridad en un sitio y noté que cuando detecta ViewState, automáticamente te lo dirá Si tiene MAC habilitado.

Tengo curiosidad por saber si alguien conoce una forma programática de determinar si MAC está habilitado si está rastreando un sitio sin intentar modificar ViewState, enviarlo y ver si algo explota.

Por lo que puedo decir, Burp Suite está haciendo esto con solo mirar la solicitud (y no modificar / enviar).

    
pregunta Abe Miessler 24.07.2013 - 20:12
fuente

2 respuestas

4

El "ViewState" forma parte de la página, como un valor de campo oculto que se enviará de nuevo al servidor. Si el ViewState está protegido por un MAC , el valor de MAC es parte de él, por lo que es una cuestión de extraer el ViewState valor de la página, decodifíquelo y luego vea si hay un MAC o no. Burp hace justamente eso.

El formato de ViewState no está documentado públicamente (se supone que no debes jugar con él), pero ha sido ingeniería inversa .

    
respondido por el Thomas Pornin 24.07.2013 - 20:27
fuente
3

Los estados de vista son básicamente cadenas codificadas en BASE64. Entonces, lo que puede hacer es tratar de decodificarlos con un decodificador BASE64. Si está encriptado obtendrá un contenido binario que no es realmente legible. Si no se utiliza ningún cifrado, podrá ver el contenido. Por ejemplo, Fiddler2 puede ayudarlo a decodificar ViewStates en su navegador.

Ahora también existe la opción de usar un MAC:

  

Si el estado de vista tiene su MAC habilitado, entonces la seguridad de este   El sistema reside en el secreto del valor de la clave secreta. Este valor es   Siempre almacenado en el servidor, ya sea en memoria o en una configuración   Archivo (más sobre esto más adelante): nunca se escribe en la página. Sin   sabiendo la clave, no habría forma de que un atacante calcule un   hash de estado de vista válido.

de MSDN "Ver seguridad del estado" .

Puede verificar esto descodificando VIEWSTATE (si no está cifrado) y verifique si hay un hash de 20 bytes al final de la estructura de ViewState.

    
respondido por el Lucas Kauffman 24.07.2013 - 20:25
fuente

Lea otras preguntas en las etiquetas