Introduction

Una nueva startup tiene algunos problemas con su servidor web.
Getting the Flags
Reconocimiento Inicial
Comenzamos escaneando los puertos abiertos de la máquina.

Ahora hacemos un escaneo más en profundidad sobre el puerto que hemos encontrado abierto.

Vamos ahora a listar directorios en la página web.

Esto es todo lo que hemos encontrado. Vamos a ver cómo se ve la página web.

Es la página de configuración de un CMS llamado Fuel CMS con la versión 1.4, puede que más adelante nos sirva.
Vamos a ver ahora qué hay en los directorios/archivos que hemos encontrado con la enumeración web.

Vemos un composer, esto siempre viene bien para saber con qué se está trabajando, podemos ver PHP y también un framework, puede que más tarde desarrollemos sobre esto.

En el robots.txt nos encontramos con /fuel disallowed para las máquinas, vamos a ver qué hay en dicha ruta.

Un formulario de inicio de sesión, interesante. Vamos a seguir.

Profundización
Sabiendo todo lo que sabemos ahora, vamos a ver si existe alguna vulnerabilidad conocida para Fuel CMS 1.4.

Parece que sí. Vamos a mirar si hay alguna guía en GitHub.
Explotación
Parece que sí. Vamos a usarlo.

Ahora descargamos los requerimientos y lo ejecutamos.

Parece que funciona, vamos a mandarnos una reverse shell. Después de probar con varios encodings y que no funcionen he decidido guardar en mi máquina una reverse shell sencillita y subir el archivo.

Si vamos a la pestaña en escucha:

Si buscamos la flag la podemos leer.
Escalada de Privilegios
Primero vamos a estabilizar la shell:

Ahora vamos a buscar la manera de escalar privilegios. Empezaremos con la técnica más sencilla sudo -l.
Después de un rato y de no funcionar ninguna técnica de las que he probado, me acuerdo de que había un directorio deshabilitado en robots.txt que parecía que podía tener información valiosa, por tener un portal de login, así que dirijo mis esfuerzos hacia allí.

Vamos a ver qué encontramos. Para investigarlo más tranquilamente lo comparto conmigo mismo con:
scp -r fuel/ usuario@IP:/ruta

Una vez lo tengo aquí, vamos a mirar a ver qué hay. A primera vista el directorio /application/ llama la atención.

Dentro de /application/config hay varios archivos. Que no haya un .env me hace pensar que quizá haya credenciales hardcodeadas en database.php.

Efectivamente. Vamos a usarla para entrar a la base de datos.

Le decimos use fuel_schema y vamos a ver las tablas.

Parece que puede interesarnos fuel_users.

Efectivamente encontramos una contraseña. Vamos a dehashearla. Como las herramientas online no funcionan, vamos a mirar qué tipo de hash es:

Con esta información vamos a hashcat y realizamos el ataque:

Con esto ahora ya si podemos comenzar el crackeo del hash.

Como no sabemos cómo se generó el hash tocaría probar entre el 110 y el 120, aunque hemos acertado a la primera.
Ahora iniciamos sesión en el CMS.

LLegado a este punto estuve mucho rato intentando conseguir una reverse shell con permisos de administrador, sin darme cuenta que he tenido la contraseña de root desde antes de acceder a la base de datos.

Con la cuenta de root, solo nos queda listar y leer la flag.
Conclusión
Una máquina divertida en la que hemos trabajado:
- Enumeración
- Búsqueda de vulnerabilidades
- Ejecución de exploits
- Análisis de framework
A veces las cosas son más fáciles de lo que parecen. Estuve mucho tiempo teniendo la contraseña de root creyendo que sólo me valía para entrar a la base de datos, sin darme cuenta que literamente era la contraseña de root hahaha.
