Can You Hack Me?

Buenas hacker, bienvenido a un nuevo post!

En esta ocasión, vamos a estar resolviendo la máquina Can You Hack Me? de la plataforma The Hackers Labs.

Reconocimiento

Comenzamos lanzando una traza ICMP a la máquina objetivo para comprobar que tengamos conectividad.

Vemos que responde al envío de nuestro paquete, verificando de esta manera que tenemos conectividad. Por otra parte, confirmamos que estamos frente a una máquina Linux basandonos en el TTL (Time To Live) 64.

Enumeración inicial

Realizamos un escaneo con nmap para descubrir que puertos TCP se encuentran abiertos en la máquina víctima.

nmap -sS -p- --open --min-rate 5000 -Pn -n 192.168.1.18 -oG open_ports -vvv

Lanzamos una serie de script básicos de enumeración propios de nmap, para conocer la versión y servicio que esta corriendo bajo los puertos.

nmap -sCV -p 192.168.1.18 -oN services_scan -vvv

Explotación

Agregamos el dominio canyouhackme.thl a nuestro archivo hosts.

echo '192.168.1.18 canyouhackme.thl' >> /etc/hosts

Antes de visualizar el sitio desde el navegador, hacemos un reconocimiento con la herramienta whatweb para conocer que tencnologías esta utilizando el sitio web.

Vemos que esta corriendo un sistema operativo Ubuntu y el servidor web Apache en su versión 2.4.58.

Si accemos desde nuestro navegador al sitio web, nos encontramos con lo siguiente:

Mirando el código fuente del sitio web, nos encontramos un comentario en el código Javascript que hace mención a un posible nombre de usuario juan.

Teniendo un posible nombre de usuario y conociendo en base a nuestro escaneo que el puerto 22 (SSH) esta abierto, podemos intentar realizar un ataque de fuerza bruta utilizando la herramienta hydra.

Genial, tenemos las credenciales del usuario juan.

Nos conectamos por ssh y obtenemos la flag.

Escalación de privilegios

Si realizamos una enumeración básica del sistema, encontramos que el usuario pertenece al grupo docker. Haciendo una busqueda rápida en GTFOBins encontramos que existe una forma de escalar nuestros privilegios.

docker run -v /:/mnt --rm -it alpine chroot /mnt bash
  • docker run: Lanza un nuevo contenedor basado en una imagen de Docker.

  • -v /:/mnt: Monta el sistema de archivos raíz del host (/) dentro del contenedor en el directorio /mnt. Esto permite al contenedor acceder al sistema de archivos del host.

  • --rm: Elimina automáticamente el contenedor cuando finaliza su ejecución, limpiando los recursos usados.

  • -it: Ejecuta el contenedor de manera interactiva (-i mantiene el flujo de entrada abierto, y -t asigna una pseudo-terminal).

  • alpine: Usa la imagen ligera de Alpine Linux para crear el contenedor.

  • chroot /mnt: Cambia la raíz del sistema de archivos dentro del contenedor al directorio /mnt, que está montado en el sistema de archivos del host.

  • bash: Inicia el shell bash dentro del nuevo entorno del contenedor.

En pocas palabras, este comando monta el sistema de archivos del host dentro de un contenedor de Alpine y cambia el entorno raíz del contenedor a ese sistema de archivos, permitiendo ejecutar el shell bash con acceso al host.

Vemos que al conectarnos al contenedor ya nos otorga la flag de root.

Pero aún podemos ganar acceso como root al sistema principal. Para ello, agregamos nuestra clave publica ssh de nuestro Kali a el archivo authorized_keys.

Accedemos por ssh al sistema principal.

De esta forma, concluimos la resolución de la máquina Can You Hack Me.

Espero que los conceptos hayan quedado claros. Como siempre, en caso de tener alguna duda te invito a realizar nuevamente la máquina para afianzar tus conocimientos.

¡Gracias por leer!

Happy Hacking!

Última actualización