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
Directorios web
Virtual hosts
Tecnologías web
Funcionalidad web
Análisis con BurpSuite
Al añadir una contraseña se realiza una petición POST al servidor
Una vez añadidas contraseñas, al hacer click en el botón Export se realizan dos peticiones GET consecutivas al servidor
Explotación
Usuario
En la segunda petición GET de la función Export existe un LFI
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.
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
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: .png)
Root
Desde el usuario se encuentra un binario sospechoso con permisos SUID.
Puertos abiertos
Para averiguar qué servicio corresponde con cada puerto se usa el comando ps faux | grep [puerto]
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: .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: .png)
Después de configurar el puerto del tunel ssh: .png)
Tras configurar los ajustes de descubrimiento de red aparece un nuevo subdominio en el endpoint de S_uperPassword_
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.
Una vez dentro del usuario edwards, con sudo -l se observan dos comandos que pueden ayudar a escalar privilegios hacia el usuario root.
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
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
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.
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:
Edición del fichero /app/venv/bin/activate: .png)
Finalmente, esperar un tiempo y ejecutar bash -p para escalar privilegios hasta root.


.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)