Cross Site Scripting (XSS) Reflejado en Simple ASP.NET Forms

  • Posted on: 14 July 2015
  • By: ReYDeS

Estos formularios son ejemplos de la utilización de Mono para ejecutar páginas ASP.NET. Mono es una plataforma de software diseñada para permitir a los desarrolladores crear fácilmente aplicaciones inter plataformas. Mono es una implementación open source del framework .NET de Microsoft basado en los estándares para C# y Common Language Runtime.

Para la siguiente demostración se utiliza la versión incluida en la más reciente versión de OWASP Broken Web Applicación Project.

Se ejecuta Zed Attack Proxy configurado con Firefox, para luego proceder a navegar la Aplicación Web vulnerable.

Se ingresa primero a la página simple ASP.NET la cual es vulnerable a un Cross Site Scripting Reflejado. Ingresado el nombre se procede a hacer clic en el botón de nombre “Submit”.

Zed Attack Proxy es capaz de encontrar este XSS Relejado mediante un Escaneo Activo. Donde el parámetro de nombre “name” es vulnerable.

Se realiza una prueba manual para verificar este hallazgo, insertando un sencillo código.

<script>alert("XSS!");</script>

El resultado es exitoso y es factible explotar satisfactoriamente un XSS Reflejado.

Se procede a ingresar a la página sencilla en ASP.NET la cual esta protegida por validación de peticiones ASP.NET.

Al realizar la misma prueba manual anteriormente realizada para insertar un script, se obtiene un mensaje del servidor en la aplicación “/mono”. El cual versa sobre un valor “Request.QueryString” potencialmente peligroso, el cual ha sido detectado desde el cliente.

A modo de ejemplo se procederá a utilizar la herramienta para realizar “Fuzzing”, la cual permitirá intentar diferentes “payloads” o cargas útiles relacionadas con XSS.

Seleccionar el valor enviado con el parámetro de nombre “name”. Hacer clic derecho y luego seleccionar la opción “Fuzz...”

Hacer clic en el botón de nombre “Payloads”. Luego clic en el botón de nombre “Add”. Seleccionar "File" en la opción “Type”. Para luego seleccionar utilizando el botón “Select...” el archivo conteniendo los “Payloads” XSS a evaluar. En esta caso particular el archivo de nombre “xss-rsnake.txt”.

Se procede a hacer clic en el botón de nombre “Add”. Luego en el botón “Ok”. Y finalmente clic en el botón de nombre “Start Fuzzer” para iniciar el proceso.

Según los resultados del Fuzzer, existen tres payloads con los cuales se ha podido explotar un XSS Reflejado.

getURL("javascript:alert('XSS')"
a="get";
\";alert('XSS');//

Al realizar una verificación manual de estos Payloads ninguno de ellos es satisfactorio. Esto se trataría de falsos positivos, pues ZAP indica la existencia de XSS, pero al realizar la verificación manual; aunque se incluye el “Payload” en la respuesta desde la aplicación web; estos "scripts" no son ejecutados por el navegador web.

Una prueba adicional utilizando la herramienta de Fuzzing incluida en ZAP, sería evaluar diferentes tipos de codificación para los caracteres enviados en los parámetros de las peticiones.

Fuentes:

http://sourceforge.net/projects/owaspbwa/
https://code.google.com/p/owaspbwa/wiki/UserGuide
https://github.com/zaproxy/zaproxy
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
http://sourceforge.net/p/owaspbwa/tickets/?limit=999&sort=_severity+asc

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/
Facebook: https://www.facebook.com/alonsoreydes
Youtube: https://www.youtube.com/c/AlonsoCaballero


Curso de Informática Forense