Resolución de A3 XSS Cross Site Scripting-Webgoat

En este artículo veremos cómo resolver los ejercicios XSS del apartado A3 de Webgoat de forma rápida y fácil
Teoria
¿Qué es XSS?
Cross-Site Scripting (también conocido como XSS) es una vulnerabilidad/falla que combina la aceptación de etiquetas HTML/script como entrada que se procesan en un navegador sin codificación ni sanitización Cross-Site Scripting (XSS) es el problema de seguridad de aplicaciones web más frecuente y pernicioso
Si bien existe una defensa sencilla y conocida para este ataque, aún existen muchos casos en la web. La cobertura de las soluciones también suele ser un problema. Hablaremos más sobre esta defensa en breve
Ejercicio 2
En este ejercicio tendremos que ir a la consola del navegador y mandar la petición (Muy fácil)


Ejercicio 7
En este apartado miraremos los campos disponibles averiguando qué campos son vulnerables o no

Después de un rato probando vemos que el campo la tarjeta de crédito es vulnerable
`<script>alert(“XSS Test")</script>'

Ejercicio 10
En el ejercicio 10 trata de XSS DOM, este XSS consiste en manipulando el DOM (Document Object Model). A diferencia del XSS clásico, el servidor no modifica la respuesta Todo ocurre del lado del cliente mediante JavaScript.

Nos meteremos en inspeccionar ya que este trata de buscar ficheros js, si miramos las pistas vemos que tenemos que buscar el GoatRoute.js

Dentro de ese archivo en el código vemos test… si miramos bien el código entendemos que donde pone ‘test/:param’: testRoute quiere decir que cualquier url que tenga el patrón test/param activará testRoute
Esto se puede verificar con


Una vez verificado que es vulnerable ya tendremos la ruta que es WebGoat/start.mvc#test

Ejercicio 11

Una vez encontrada la vulnerabilidad de antes usaremos el webgoat.customjs.phoneHome() para realizar la actividad 11
Tendremos que urlencodear el webgoat.customjs.phoneHome() con Burrp
<script>webgoat.customjs.phoneHome()<%2Fscript>
Una vez hecho lo pondremos en la url y tendremos que ver una respuesta como esta

Para luego mirar la consola y encontrar el número

Esta respuesta significa que JavaScript ejecutó la función que informa el progreso de su tarea al backend de WebGoat. Básicamente webgoat.customjs.phoneHome hara que en la consola nos aparezca un número aleatorio que tendremos que colocar en la respuesta.

Ejercicio 3 de Cross-Site Scripting (Storage)

En esta práctica consiste en XSS almacenado lo cual implica poder almacenar JavaScript como una carga útil con el webgoat.customjs.phoneHome para resolver este problema básicamente lanzaremos el en el chat
<script>webgoat.customjs.phoneHome()</script>
Una vez se publica el código java en la consola obtendremos la respuesta

Finalización
Espero que hayan aprendido mucho y que esta explicación les haya servido para entender mejor cómo funcionan las XSS. Muchas gracias por leer el artículo, y no olviden seguirme en Github 0x832 además iré subiendo resoluciones de máquinas de HTB, TryHackMe y más herramientas que vaya desarrollando.