Introduction

Máquina boot2root fácil.
Getting the Flags
Reconocimiento Inicial
Comenzamos escaneando los puertos abiertos.

Hacemos un escaneo más en profundidad de dichos puertos.

Podemos ver que hay dos servidores web, además de un robots.txt en el primero, así que vamos a listar directorios en ambos puertos.
Primero en el puerto 80:

Y ahora en el puerto 8765:

Parece que la primera puede ser una página normal y la segunda un panel de administración o algo por el estilo. Vamos a meternos en el navegador a ver qué vemos.

Y ahora en la otra.

Profundización
Vamos a investigar un poco más a fondo las páginas encontradas.
Empezaremos con el puerto 80:

Lo único aparentemente interesante que hemos encontrado es que en una de las carpetas que obtuvimos en dirsearch, llamada custom/ hay dos carpetas, css y js. En css no había nada pero en js/ el archivo users.bak llama la atención.
Vamos a ver qué encontramos ahora en el panel de administración:
Explotación
Vamos con el archivo que habíamos encontrado (users.bak).

Parece que hemos encontrado una contraseña, pero está hasheada. Vamos a ver qué tipo de hash es:

Ahora que sabemos que es SHA-1, vamos a crackearlo.

Y así encontramos la contraseña.
Vamos a iniciar sesión en el panel con el usuario y la contraseña.

Parece que se pueden añadir comentarios, puede que haya algún tipo de vulnerabilidad de inyección aquí.
En el código de la página encontramos el siguiente comentario.

Parece que hay un usuario que se llama Barry y que en algún lugar tiene una clave para entrar por SSH. Si seguimos mirando el código podemos ver lo siguiente:

Si probamos a acceder a ese recurso, este se descarga. Vamos a leerlo.

Nada, básicamente nos hace perder el tiempo. Vamos a ver qué pasa si subimos un comentario.

Si no ponemos nada nos pide insertar código XML. Si ponemos "test", por ejemplo, no muestra nada pero no salta el error de antes.

Vamos a meter el archivo XML que hemos leído.

Vale, parece que se está procesando el XML por detrás.
Modificando la petición para inyectar una entidad XML, podemos conseguir leer archivos:

Ahora nos toca intentar leer la clave de barry, basándonos en el mensaje que encontramos antes en el comentario. Para asegurarnos de que se transmite correctamente, vamos a usar un filtro para convertirlo a base64 y que viaje por web sin problemas.

Ahora cogemos la string en base64, la decodeamos, le aplicamos los cambios de permiso y la usamos para entrar por SSH.

Parece que está protegida. Vamos a romperla con john.

Ahora que tenemos la passphrase iniciamos sesión:

Así leemos la primera flag.
Escalada de Privilegios
Vamos a mirar primero de todo los grupos e id de barry.

Nada muy interesante. Vamos a proceder con nuestra checklist de escalada de privilegios.

Este archivo no es un archivo común. De hecho parece un script personalizado. Vamos a ver si podemos leerlo.

El archivo llama a tail sin ruta absoluta, por lo que si podemos escribir el PATH o en el directorio, podemos realizar un hijacking de sesión.

Parece que se dan las condiciones. Ahora cuando el archivo se ejecute, llamará a tail y donde primero mirará será en /tmp, donde podemos escribir, por lo que vamos a crear el archivo tail en este directorio con el contenido:
#!/bin/bash /bin/bash

Ahora ejecutamos el archivo:

Y boom! Somos root. Ahora vamos a leer la flag.
Conclusión
Máquina facilita y bastante divertida. Hemos trabajado:
- Reconocimiento.
- Inyección XXE.
- Crackeo de contraseñas.
- PATH hijacking.
Viene bien practicar vulnerabilidades menos practicadas generalmente, como lo es el External XML Entity Injection.
