Entrada

Write-up Agile [Medium] - Hack The Box

Write-up Agile [Medium] - Hack The Box

Publicación del write-up de sujeto a las guías generales de Hack The Box.

Write-up Agile [Medium] - Hack The Box


Mi perfil de Hack The Box: julianglez16

Enumeración

Puertos

Untitled.png

Directorios web

Untitled.png

Virtual hosts

Untitled.png

Tecnologías web

Untitled.png

Funcionalidad web

Untitled.png Untitled.png Untitled.png Untitled.png

Análisis con BurpSuite

Al añadir una contraseña se realiza una petición POST al servidor

Untitled.png

Una vez añadidas contraseñas, al hacer click en el botón Export se realizan dos peticiones GET consecutivas al servidor

Untitled.png Untitled.png

Explotación

Usuario

En la segunda petición GET de la función Export existe un LFI

Untitled.png

Desde dicho LFI se puede ver un directorio interesante en /app/app-testing. Al aplicar el LFI sobre dicho directorio salta un error pero en la respuesta HTML se puede ver un fichero interesante dentro del mismo.

Untitled.png Untitled.png Untitled.png

Se puede ver que existen cuatro endpoints susceptibles de un IDOR:

1
2
3
4
- /vault/edit_row/<id>
- /vault/row/<id>
- /vault/update/<id>
- /vault/delete/<id>

En el endpoint /vault/row/10 se encuentra nuestra contraseña

Untitled.png

Por lo que se intenta obtener alguna contraseña anteriormente almacenada desde el intruder de BurpSuite. En el número 8 debería (a mí no) aparecer las credenciales de un usuario para poder hacer SSH: corum:5db7caa1d13cc37c9fc2.

Captura obtenida de un writeup ajeno: Untitled.png

Root

Desde el usuario se encuentra un binario sospechoso con permisos SUID.

Untitled.png

Puertos abiertos

Untitled.png

Para averiguar qué servicio corresponde con cada puerto se usa el comando ps faux | grep [puerto]

Untitled.png

Se puede ver que en el puerto 41829 está corriendo un proceso de Google Chrome por lo que se puede hacer un tunel SSH para poder observarlo desde nuestra máquina local con el comando

1
ssh -L 5000:127.0.0.1:41289 corum@10.10.11.203

Explicación visual de lo que estamos realizando con el tunel SSH. El comando utilizado en este ejemplo sería ssh -L 8080:192.168.0.3:80 foo@192.168.0.2: Untitled.png

Untitled.png

Una vez creado el tunel ssh, desde Google Chrome en la URL chrome://inspect, se puede acceder a las herramientas de desarrollador y configurar un objetivo de red nuevo

Antes de configurar el puerto del tunel ssh: Untitled.png

Después de configurar el puerto del tunel ssh: Untitled.png

Tras configurar los ajustes de descubrimiento de red aparece un nuevo subdominio en el endpoint de S_uperPassword_

Untitled.png

Al darle a inspect se puede acceder a la página web de test. En el apartado de contraseñas se enceuntra la contraseña del usuario edwards. Con esta contraseña se puede acceder a la máquina con las credenciales edwards:xxxxxxxx.

Untitled.png

Una vez dentro del usuario edwards, con sudo -l se observan dos comandos que pueden ayudar a escalar privilegios hacia el usuario root.

Untitled.png

Con el comando sudoedit -u dev_admin /app/config_test.json se abre el siguiente fichero donde se observan credenciales de la base de datos mysql: superpasstester:xxxxxxxxx

Untitled.png

Con el comando sudoedit -u dev_admin /app/app-testing/tests/functional/creds.txt se abre el siguiente fichero donde se observan unas credenciales del usuario edwards de algún servicio desconocido: edwards:xxxxxxxxx

Untitled.png

Para comenzar la búsqueda de escalada de privilegios se utiliza la conexión al servidor mysql con las credenciales encontradas en el fichero config_test.json.

Untitled.png Untitled.png

No se obtiene demasiada información ya que estas contraseñas ya las hemos visto en la web desde Google Chrome por lo que se intenta hacer un cambio de usuario al usuario root con la contraseña encontrada en el otro fichero. Tampoco funciona.

El CVE-2023-22809 permite escalar privilegios a través de la variable EDITOR cuando se utiliza sudoedit con permisos de sudo.

Existe una tarea recurrente ejecutada desde el usuario root que activa el entorno virtual de la aplicación. Combinando la vulnerabilidad mencionada y este comportamiento se puede editar el fichero /app/venv/bin/activate para dar permisos de SUID a /bin/bash.

Tarea recurrente observada desde pspy64: Untitled.png Edición del fichero /app/venv/bin/activate: Untitled.png

Finalmente, esperar un tiempo y ejecutar bash -p para escalar privilegios hasta root.

Untitled.png

Esta entrada está licenciada bajo CC BY 4.0 por el autor.