XUT_ / MACHINES / THM

0044

Mustacchio

THMMACHINENONEEASY

Introduction

mustacchio

Máquina boot2root fácil.

Getting the Flags

Reconocimiento Inicial

Comenzamos escaneando los puertos abiertos.

mustacchio

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

mustacchio

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:

mustacchio

Y ahora en el puerto 8765:

mustacchio

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.

mustacchio

Y ahora en la otra.

mustacchio


Profundización

Vamos a investigar un poco más a fondo las páginas encontradas.

Empezaremos con el puerto 80:

mustacchio

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).

mustacchio

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

mustacchio

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

mustacchio

Y así encontramos la contraseña.

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

mustacchio

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.

mustacchio

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:

mustacchio

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

mustacchio

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

mustacchio

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.

mustacchio

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

mustacchio

Vale, parece que se está procesando el XML por detrás.

Modificando la petición para inyectar una entidad XML, podemos conseguir leer archivos:

mustacchio

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.

mustacchio

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

mustacchio

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

mustacchio

Ahora que tenemos la passphrase iniciamos sesión:

mustacchio

Así leemos la primera flag.


Escalada de Privilegios

Vamos a mirar primero de todo los grupos e id de barry.

mustacchio

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

mustacchio

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

mustacchio

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.

mustacchio

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:

bash
#!/bin/bash
/bin/bash

mustacchio

Ahora ejecutamos el archivo:

mustacchio

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.