Responsive image

HackMyVM - BaseME

11 julio 2021

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

Es una máquina Linux con una temática basada en base64. Se espera una máquina con una enumeración más compleja a la media.

# Dificultad
Enumeración Media
Escalada de privilegios Fácil

Enumeración


Como todas las máquinas de esta plataforma es necesario conocer la dirección IP de la máquina. Para ello utilizaré la herramienta ping-sweep con el modo de descubrimiento de sistema operativo para poder avanzar más rápido en la enumearción. El motivo de utilizar esta herramienta y no otra basada en el protocoo ARP se debe a que despliego las máquinas en una red privada que utilizo como laboratorio y distinta a la red local, por lo que un descubrimiento mediante ARP no detectará las máquinas.

Más adelante, será necesario cambiar de red la máquina del atacante para poder realizar una reverse shell ya que en modo NAT no es posible.

error loading image :(

La herramienta ha detectado 4 IP:

Una vez identificada la máquina objetivo se comienza con el escaneo de puertos. Se inicia un escaneo simple de los puertos WellKnow utilizando la herramienta nmap.

error loading image :(

El escaneo solo desvela los puertos HTTP y SSH abiertos. Se utiliza el navegador web para saber qué hay en el servicio HTTP.

error loading image :(

También, se obtiene todo el contenido de la página utilizando la herramienta curl. Desvelando un comentario con lo que parece ser un diccionario.

error loading image :(

El texto base64, al decodificarse, es un mensaje de lucas que nos dice que todo lo que necesitamos, incluida la contraseña, está en base64.

error loading image :(

A continuación se consulta el archivo robots.txt o más bien el archivo cm9ib3RzLnR4dAo=.

error loading image :(

error loading image :(

Es pronto para rendirse. La idea ahora es hacer fuzzing de los recursos más comunes. Sin embargo, primero será necesario codificar cada recurso del diccionario a utilizar en base64. Esto se hace con ayuda de la herramienta tobase64, una herramienta desarrollada específicamente para este propósito.

!/bin/bash

file=$1
file2=$2
lines=$(wc $file -l | cut -d ' ' -f 1)
touch file2

for ((c=0; c<=$lines; c++)); do
	line=$(cat $file | head -n $c | tail -n 1)
	b64=$(echo $line | base64)
	
	echo $b64 >> $file2
done

error loading image :(

Se realiza fuzzing con el diccionario codificado.

error loading image :(

Se encuentran dos resultados, que al decodificarse corresponden con los recursos: robots.txt e id_rsa.

error loading image :(

Ganar acceso


Se obtiene el id_rsa mediante la herramienta wget.

error loading image :(

No es sorpresa que la clave privada esté codificada en base64, será necesario decodificarla.

error loading image :(

La clave privada está protegida con contraseña, se intuye que la contraseña es alguna de las cadenas del comentario encontrado en el servicio HTTP.

Se crea un pequeño diccionario con estas cadenas codificadas en base64 y se prueban una a una hasta dar con la correcta.

error loading image :(

error loading image :(

Se obtiene la flag de user.

error loading image :(

Escalada de privilegios


La escalada de privilegios comienza consultando los permisos del usuario.

error loading image :(

Se observa que el usuario tiene permiso SUDO para el binario base64. Consultar la flag de root es tan simple como codificar la flag en base64 para inmediantamente decodificarla y poder verla en claro.

error loading image :(

Con esto concluye la resolución de la máquina BaseME.