Entrada

BBLabs - DogShow | (Difficulty Medium) - XSS

Writeup del laboratorio de dificultad media DogShow de la página https://bugbountylabs.com/

BBLabs - DogShow | (Difficulty Medium) - XSS

TCP Scan

Realizo un escaneo de puertos TCP contra la dirección IP 172.17.0.2, puediendo observar que en el puerto 80 existe un servidor web HTTP Apache/2.4.62 y en el puerto 5000 un servidor web HTTP Werkzeug/3.1.3

1
2
rustscan -a  172.17.0.2 --ulimit 5000 -g
172.17.0.2 -> [80,5000]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
nmap -p80,5000 -sCV 172.17.0.2
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-25 18:16 CET
Stats: 0:00:06 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 0.00% done
Nmap scan report for 172.17.0.2 (172.17.0.2)
Host is up (0.000027s latency).

PORT     STATE SERVICE VERSION
80/tcp   open  http    Apache httpd 2.4.62 ((Debian))
|_http-server-header: Apache/2.4.62 (Debian)
|_http-title: P\xC3\xA1gina Vulnerable a XSS
5000/tcp open  http    Werkzeug httpd 3.1.3 (Python 3.11.2)
|_http-server-header: Werkzeug/3.1.3 Python/3.11.2
|_http-title: Dog Competition
MAC Address: 02:42:AC:11:00:02 (Unknown)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.38 seconds

Exploitation

80/TCP

Accedo a http://172.17.0.2/ pudiendo observar una página que permite insertar comentarios

image

Inserto un texto de prueba para comprobar y analizar el coportamiento de la página, pero veo que no se refleja en la pantalla directamente, analizando el código consigo ver que el comentario introducido se inserta en el title de una etiqueta <span>

image

image

Reflected XSS

Para inyectar código JavaScript es necesario escapar la etiqueta con "> indicandole a la web que la etiqueta anterior, es decir, la etiqueta <span> ya ha sido cerrada.

Payload
1
"><script>alert('xss')</script>

image

image

image

5000/TCP

Accedo a http://172.17.0.2:5000/ pudiendo observar una página de competición de perros, dispone de opción de registro y login

image

Me registro en la web como el usuario ju4ncaa, automáticamente me redirige al login, accedo como el usuario creado anteriomente

image

image

Una vez inicio sesión observo un formulario el cual permite introducir información básica sobre el perro con el que queremos competir

image

Voy a rellenar el formulario con datos simples para comprobar y analizar el comportamiento de la página, consigo observar que los datos introducidos son mostrados en la pantalla, analizando el código también observo que

image

image

HTML Injection

Intento inyectar una etiqueta HTML, por ejemplo, un título <h1> de forma sencilla, puediendo ver que soy capaz de alterar el texto y hacer que sea un titulo, consiguiendo realizar el HTML Injection de forma satisfactoria.

Payload
1
<h1>prueba</h1>

image

Stored XSS

Pudiendo haber realizado una inyección de código HTML lo suyo sería intentar inyectar código JavaScript, los valores que se van introduciendo en el formulario se almacenan en la web, por lo que si consigo inyectar código JavaScript cada vez que un usuario acceda a la página se le ejecutará el código

Payload
1
<script>alert('xss')</script>

image

image

image

Esta entrada está licenciada bajo CC BY 4.0 por el autor.