Responsive image

HackMyVM - T800

15 septiembre 2021

Esta máquina se encuentra en la plataforma HackMyVM y ha sido creada por el usuario sml.

Una máquina más compleja de lo habitual con una enumeración basada en metadatos y una escalada de privilegios a partir de una mala configuración de binarios.

# Dificultad
Acceso Fácil
Escalada de privilegios Media

Enumeración


La enumeración comienza descubriendo la dirección IP de la máquina objetivo esto se hacer mediante la herramienta ping-sweep. La realización de un barrido ping y no un barrido ARP es debido a que la máquina objetivo está en una red distinta a la máquina objetivo, ARP es un protocolo de nivel 2 (enlace) y sus paquetes no son capaces de atravesar redes (nivel 3).

error loading image :(

La herramienta ha detectado 4 IP:

Se obtienen dos posibles candidatos, en mi laboratorio tengo una Raspberry Pi como NAS y un servicio samba. Por lo que para identificar cual es cual se realiza un par de escaneos ARP rápidos. Así se identifica como la máquina objetivo la que tiene dirección 10.10.10.100

error loading image :(

Una vez identificada la máquina objetivo se comienza con el escaneo de puertos. Como es habitual para el escaneo se utiliza nmap y se divide en dos fases: la primera de un escaneo rápido de los 65535 puertos para detectar aquellos abiertos y la segunda para realizar una enumeración más exahustiva usando scripts básicos de los puertos abiertos.

error loading image :(

error loading image :(

Se detectan los puertos 80 y 800 abiertos con los servicios HTTP y SSH respectivamente. Es de extrañar que el servicio SSH se encuentre en el puerto 800.

Se utiliza whatweb para enumerar rápidamente la web y curl para detectar si existe un fichero robots.txt.

error loading image :(

En el fichero robots.txt se encuentra la ruta /sexy/*.jpg, por lo que será necesario un posterior fuzzing para encontrar imágenes ocultas.

A continuación se vuelve a utilizar curl para obtener el código html de la página principal encontrando al final del contenido un comentario con un potencial usuario.

error loading image :(

Consultando la web con el navegador se encuentra una imagen de nuestro todo poderoso y salvador Richard Stallman.

error loading image :(

A continuación, se realiza el fuzzing sobre la ruta encontrada en el fichero robots.txt.

error loading image :(

Se encuentra la imagen nudeslut.jpg.

error loading image :(

La imagen se descarga para consultar sus metadatos y comprobar si tiene algo de estego.

error loading image :(

En los metadatos se encuentra la contraseña de acceso: chmodxheart.


Ganar acceso


Una vez con las credenciales ruut:chomodxheart puede contectarse a la máquina a través del servicio SSH.

error loading image :(

Se consultna los usuarios del sistema y se encuentran 3 usuarios: root, ruut y superruut. Lo más seguro es que sea necesario escalar a superruut y de superruut a root.

error loading image :(

Ahora se consultan los permisos de ruut y se encuentran permisos suid para dos binarios extraños: conky y calife.

error loading image :(

Consultando el manual de los binarios para determinar en qué consisten y qué realizan.

error loading image :(

error loading image :(

Escalada de privilegios - Primera fase


Como el manual indica, el binario calife puede utilizarse para convertirse en root o en otro usuario. El vector para la escalada a superruut será este binario, para ello se ejecuta el binario y se indica el usuario al que se quiere escalar.

error loading image :(

En VIM se ejecuta una /bin/bash para conseguir una shell interactiva.

error loading image :(

Ya puede consultarse la flag de user.

error loading image :(

Ahora será necesario la escalada a root. Se vuelven a consultar los permisos

error loading image :(

Escalada de privilegios - Segunda fase


La escalada mediante el binario conky es la más compleja realizada hasta la fecha. Conky, como indicaba el manual, es un monitor del sistema por lo que la escalda deberá estar realionada con la exfiltración de algún archivo privilegiado como shadow o la clave privada de root.

Sin embargo, antes de iniciar con la escalada se generan un par de claves para conectarse como superruut mediante SSH sin proporcionar contraseña. Esto facilitará conectar como superruut sin tener que realizar todo el proceso de calife.

error loading image :(

Se incluye la clave pública generada en el arhcivo authorized_keys de superruut.

error loading image :(

Ya se puede conectar como superruut sin proporcionar contraseña.

error loading image :(

Ahora sí, se copia el archivo de configuración de conky en el la carpeta de superuut y se edita para mostrar información a través de la terminal.

error loading image :(

error loading image :(

También será necesario modificar los archivos de conky para que muestren la información deseada por la consola, en este caso se desea exfiltrar la clave privada de root (si existe).

error loading image :(

Se ejecuta conky y se realiza una nueva conexión mediante SSH para que se muestren los datos monitorizados por conky así como la clave privada de root en la terminal debería mostrarse la clave privada de root.

error loading image :(

error loading image :(

Se copia la clave privada y se realiza una conexión SSH como root y proporcionando la clave privada. No olvidar que es necesario asignar los permisos correctos a la clave privada antes de utilizarla.

error loading image :(

Por último se consulta la flag de root y se sube a la web de hack-my-vm.

error loading image :(