BBLabs - DogShow | (Difficulty Medium) - XSS
Writeup del laboratorio de dificultad media DogShow de la página https://bugbountylabs.com/
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
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>
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>
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
Me registro en la web como el usuario ju4ncaa, automáticamente me redirige al login, accedo como el usuario creado anteriomente
Una vez inicio sesión observo un formulario el cual permite introducir información básica sobre el perro con el que queremos competir
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
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>
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>