¿Cómo omitir la validación de solicitud de .Net 4.5 para un ataque XSS?

6

.Net tiene una función llamada validación de solicitud que detecta entradas maliciosas y bloquea la solicitud.

Por su naturaleza, la validación de solicitudes no es una ciencia precisa. OWASP recomienda solo confiar en la validación de la solicitud como defensa en profundidad, no como un límite de seguridad.

Estoy actualizando un curso de capacitación en seguridad .net, y me gusta incluir un ejemplo de por qué no debería confiar en la validación de solicitudes. Claro, podría decirles a los alumnos que "no lo hagan", pero un ejemplo es muy poderoso.

Encontré que la validación de solicitud en .Net 4.5 se ha ajustado y mis métodos anteriores de omitirla ya no funcionan. ¿Existen formas públicamente conocidas de omitir la validación de solicitud de .Net 4.5 para XSS? El enlace más reciente que encontré fue this .

    
pregunta paj28 26.01.2015 - 13:44
fuente

3 respuestas

8

Hay una serie de lugares en los que se puede omitir la validación de la Solicitud, dependiendo de la arquitectura y la función de la aplicación que se esté revisando, por lo que es probable que Microsoft no recomiende confiar en ella.

  • Los datos que ingresan a la aplicación a través de otro canal (por ejemplo, una API) no se verán afectados por la validación de la solicitud y, por lo tanto, podrían causar problemas de XSS si esos datos se procesan sin ningún control adicional.
  • La validación de solicitudes solo ayuda realmente cuando los datos se colocan en un contexto HTML, donde se colocan en un contexto de JavaScript, por ejemplo, no ofrece una buena protección.
  • La validación de la solicitud no cubre todos los datos enviados desde el cliente. Por ejemplo, si la aplicación procesa datos de los encabezados HTTP del usuario (por ejemplo, el agente del usuario), puede hacer que el sitio sea vulnerable a XSS.
  • Los datos pueden ingresar a la aplicación a través de áreas como la carga de archivos, que de nuevo no siempre activará la validación de la solicitud.

Actualizar Otro que podría omitir la Validación de la Solicitud es el uso de ciertos caracteres Unicode en lugar de los bloqueados. En algunos casos, el servidor MS SQL convertirá estos caracteres en el equivalente ASCII cuando los datos se guarden en la base de datos. Esto puede permitir que una aplicación ASP.Net sea vulnerable a XSS incluso con un vector HTML. por ejemplo

< script > alerta (1) </script>

si se guarda y devuelve, podría resultar en xss.

    
respondido por el Rоry McCune 26.01.2015 - 20:51
fuente
4

Si el contexto de la página del XSS es una etiqueta en un atributo de entrada, por ejemplo,

<input type="text" name="address" value="<xsshere>"/>

Entonces, la siguiente carga útil funciona:

" onfocus="alert(1)" autofocus="
    
respondido por el paj28 26.01.2015 - 21:26
fuente
2

Observaría que si está utilizando los proveedores de enlace predeterminados en ASP.net MVC y su JSON de publicación en un controlador, el JSON publicado no activará ninguna validación de solicitud, incluso cuando haya contenido "peligroso".

Esto podría demostrarse de forma relativamente trivial con un simple formulario de ASP.net que se publica de manera estándar y activará la validación. Tomar los mismos datos publicados y publicarlos en la misma acción que JSON a través de fiddler (por ejemplo) no daría lugar a la misma validación.

Ejemplo observado aquí:

enlace

Y también comentó en el sitio de OWASP a solicitud de validación:

enlace

  

Existen derivaciones conocidas y documentadas (como las solicitudes JSON) que   No se abordará en futuras versiones, y la validación de la solicitud.   La función ya no se proporciona en ASP.NET vNext.

    
respondido por el Paddy 09.08.2017 - 15:23
fuente

Lea otras preguntas en las etiquetas