Cross Site Scripting

Empezaremos por la iso de Pentesterlab, realizaremos todos sus niveles de dificultad, dejando de cada uno de ellos una breve explicación. Empezamos!.

  • Pantalla inicial con todos los niveles:

InicioWebpentester.png

EJEMPLO 1:

Como vemos en la barra de direcciones o URL, tenemos un parámetro llamado name que nos dice que es igual a hacker.

EnunciadoEjercicio1-2.png

Utilizaremos esta entrada sustituyendo hacker por nuestro payload en javascript de XSS, quedando de esta manera:
http://……./example.php?name=<script>alert(“XSS”)</script>

SoluciónEjercicio1.png

Obtenemos el pop up del payload, por lo cual queda vulnerado el primer ejemplo de XSS.

EJEMPLO 2:

En este nivel tenemos la misma pantalla de inicio y para iniciar probé el payload del anterior ejercicio, siendo esto último infructuoso.
Para ver que había fallado inspeccioné el código fuente, parece ser que la palabra “script” estaba en blacklist.

Por lo tanto probamos otro payload que no tuviera la palabra script:
http://……./example.php?name=<img src=xss onerror=alert(1)>

Ejercicio2.PNG

EJEMPLO 3:

En este ejemplo tenemos las mismas restricciones que en el anterior nivel por lo cual utilizaremos el mismo payload anterior para bypassear las restricciones:
http://……./example.php?name=<img src=xss onerror=alert(1)>

Ejercicio3.PNG

EJEMPLO 4:

Aquí nos encontramos que nos devuelve un error por lo cual no podemos saber a ciencia cierta mediante el navegador que es lo que está fallando, sin embargo probando a ciegas payloads nos encontramos que el anterior también nos sirve:
http://……./example.php?name=<img src=xss onerror=alert(1)>

Ejercicio4.PNG

EJEMPLO 5:

Aquí directamente ya que el payload anterior nos funcionó bastante bien lo probé directamente obteniendo un error que tampoco nos permitía ver mediante el navegador que es lo que sucedía.

Después de un largo tiempo probando payloads encontré uno que pasaba la etiqueta de script encoded en base64 y fue a las mil maravillas:
http://……./example.php?name=<object data=data:text/html;base64,PHN2Zy9vbmxvYWQ9YWxlcnQoMik+></object>

Ejercicio5.PNG

EJEMPLO 6:

En este ejemplo nos encontramos con que el parámetro name, asigna una variable a$:

ejercicio6.1var a.PNG

Para explotar el código malicioso utilizaremos este payload:
http://……./example.php?name=’;alert(“XSS”);’;

ejercicio6.2.PNG

EJEMPLO 7 :

Al parecer en este ejemplo nos bloquean el uso de comillas dobles:

ejercicio7.1.PNG

Por lo tanto montaremos nuestro payload y sustituiremos estas por comillas simples:
http://……./example.php?name=’;alert(‘XSS’);’;

ejercicio7.2.PNG

EJEMPLO 8:

Aquí nos encontramos con un formulario que utiliza el método POST. Después de un tiempo intentando payloads me dirigí al código php del servidor a ver que función utilizaba y vi que usaba la función PHP_SELF.

Montamos el payload para explotar la vulnerabilidad:
http://192.168.1.48/xss/example8.php/%22%20onmouseover=%22alert(10)

ejercicio8.2.PNG

EJEMPLO 9:

Para este último ejercicio la almohadilla nos delata que es un simple DOM Based XSS, armamos nuestro payload:
http://192.168.1.48/xss/example9.php#<script>alert(1)</script>

Hasta aquí los XSS de Web for Pentester 😀

Deja un comentario