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.
La herramienta ha detectado 4 IP:
- 10.10.10.1 - linux → Gateway
- 10.10.10.100 - linux → Raspberry Pi
- 10.10.10.101 - windows → Sistema anfitrión
- 10.10.10.102 - windows → Máquina objetivo
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.
El escaneo solo desvela los puertos HTTP y SSH abiertos. Se utiliza el navegador web para saber qué hay en el servicio HTTP.
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.
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.
A continuación se consulta el archivo robots.txt o más bien el archivo cm9ib3RzLnR4dAo=.
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
Se realiza fuzzing con el diccionario codificado.
Se encuentran dos resultados, que al decodificarse corresponden con los recursos: robots.txt e id_rsa.
Ganar acceso
Se obtiene el id_rsa mediante la herramienta wget.
No es sorpresa que la clave privada esté codificada en base64, será necesario decodificarla.
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.
Se obtiene la flag de user.
Escalada de privilegios
La escalada de privilegios comienza consultando los permisos del usuario.
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.
Con esto concluye la resolución de la máquina BaseME.