Cross Site Scripting (XSS) Reflejado en Mandiant Struts Forms

  • Posted on: 10 July 2015
  • By: ReYDeS

Estos simples formularios ilustran las diferentes maneras en las cuales se puede implementar la validación de entradas en aplicaciones Apache Struts.

Apache Struts es un framework MVC libre y open-source para crear aplicaciones web en Java elegantes y modernas. Favoreciendo la convención sobre la configuración, es ampliable utilizando una arquitectura de plugins, y se entrega con plugins soportando REST, AJAX y JSON.

Para la siguiente demostración se utilizará la versión de Mandiant Struts Forms 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 inicia la demostración utilizando el primer enlace de la lista. La cual es una versión del formulario vulnerable a Cross-Site Scripting Reflejado. Se procede a realizar una prueba manual utilizando un ejemplo clásico con la función “alert”.

En Zed Attack Proxy se puede visualizar el cuerpo de la respuesta devuelta por la Aplicación Web vulnerable el cual contiene el script de prueba insertado.

<script>alert('XSS!')</script>

Se procede a realizar una evaluación sobre la segunda versión del formulario, la cual utilizar una lista negra incompleta de validación de entradas para prevenir etiquetas “<script>”, pero sigue siendo vulnerable a tipos más sofisticados de Cross-Site Scripting Reflejado.

Se realiza la misma prueba utilizada en la versión anterior, y el mensaje devuelto por la aplicación indica una entrada inválida.

Entonces mediante una inferencia simple, si la etiqueta “<script>” está filtrada no se debe utilizar. Una alternativa será utilizar la etiqueta “<img src>” y la función de nombre “onmouseover”.

<IMG SRC=# onmouseover="alert('XSS!')">

Se visualiza la respuesta devuelta por la Aplicación Web utilizando ZAP, la cual incluye el código insertado.

La tercera y cuarta versión del formulario utilizan Struts ValidatorForm para implementar una lista blanca en el lado del servidor y adicionalmente en el lado del cliente respectivamente.

Fuentes:

http://sourceforge.net/projects/owaspbwa/
https://code.google.com/p/owaspbwa/source/browse/trunk/var/lib/tomcat6/w...
http://struts.apache.org/
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet

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