HackMyVM Narcos — Linux


Para poder hacer uso de esta máquina primero debemos descargar el archivo y así poder desplegar el laboratorio.
Descargamos el archivo de la página https://hackmyvm.eu/machines/
Al momento de descargar esta máquina y descomprimir el archivo, en este caso observamos un archivo.
Para desplegar el laboratorio usaremos nuestro hipervisor favorito e iniciamos la máquina. En caso de no observar la IP de la máquina podemos emplear arp-scan
para ver la dirección IP en nuestra red que sería la 192.168.0.25
.
Realizamos un ping a la dirección IP y podemos validar que tenemos alcance.
Empezamos con un escaneo de puertos y podemos ver que tenemos 2 puertos.
Realizamos un escaneo más profundo de los puertos ya encontrado, pero no vemos más información.
Ingresamos la dirección IP en el navegador y podemos observar que se trata de una página de venta de estupefacientes que no está concluida.
Realizando un escaneo de subdirectorios vemos que tenemos uno llamado squirrelmail
que nos llama mucho la atención.
Al dirigirnos a esta podemos ver que nos lleva a un login y podemos observar que tenemos la versión 1.4.23
.
Buscando alguna vulnerabilidad de esta versión encontramos el siguiente CVE-2017-7692 explicado. En el siguiente link tenemos el exploit. Intentamos ejecutarlo, pero tenemos problemas y no nos está estableciendo conexión. Ya que no podemos continuar por este método, Seguimos listando alguna información extra, pero no podemos ver nada. Revisando nuestros pasos, se ve que al encender la máquina nos indica un dominio, puede que no se deba obtener de esta manera, pero no pude obtenerlo aplicando algunos comandos de consulta. Así que lo tome directamente de la máquina el cual era escobar.hmv
.
Como ya tenemos el dominio, agregamos a nuestro archivo hosts.
Cargamos la página web, pero no vemos nada diferente.
Ya que no cambia la página realizamos fuzzing para ver algún subdominio y encontramos uno llamado management
y este también agregamos al archivo hosts
.
Al dirigirnos a este subdominio vemos otro login, este de File Browser
.
Inspeccionando la página podemos ver que tenemos la versión 2.9.0
.
Probamos algunas credenciales por defecto, pero no vemos nada. Capturando con Burpsuite podemos ver como es la estructura, ya que no obtenemos alguna información adicional, realizaremos un ataque de fuerza bruta.
Probamos con hydra
, pero nos está dando problemas, por ello probamos con un script personalizado.
import requests
import json
url = "http://management.escobar.hmv/api/login"
headers = {
"Host": "management.escobar.hmv",
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0",
"Accept": "*/*",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate, br",
"Referer": "http://management.escobar.hmv/login?redirect=%2Ffiles%2Fstatic%2Fetc",
"Content-Type": "application/json",
"Origin": "http://management.escobar.hmv",
"Connection": "keep-alive"
}
usernames_file = "/home/gmatsy/Downloads/HackMyVM/medium/Narcos/rockyou-60.txt"
passwords_file = "/home/gmatsy/Downloads/HackMyVM/medium/Narcos/rockyou-60.txt"
with open(usernames_file, "r") as users, open(passwords_file, "r") as passwords:
usernames = users.read().splitlines()
passwords = passwords.read().splitlines()
for username in usernames:
for password in passwords:
data = {
"username": username,
"password": password,
"recaptcha": ""
}
response = requests.post(url, headers=headers, data=json.dumps(data))
if response.status_code == 200 :
print(f"Credenciales validas: {username}:{password}")
break
print("Ataque finalizado.")
Ejecutamos el script y podemos ver que tenemos las credenciales.
admin:gabriela
Ingresamos con las credenciales y revisando los archivos tenemos dos archivos xlsx
que descargaremos.
Tratamos de abrir el archivo login.xlsx
, pero no podemos, ya que está protegido por un password.
Para esta parte usaremos office2john
para extraer el hash y con john
podemos ver que tenemos el password.
Al abrir el archivo podemos ver que tenemos varias credenciales y un texto interesante.
Probamos las credenciales en el servicio de correo agregando el dominio, ninguna credencial funciona. Pero si probamos solo empleando el nombre podemos ver que todas las verdes son correctas.
pablo@escobar.hmv Il0ve$$$yeah!
carlos@escobar.hmv c4rl0$?
gonzalo@escobar.hmv m3d3ll1nr0ck5
Revisando varios de los mails podemos observar que Gonzalo le envía varios archivos a Carlos y el contenido es un sh
.
Descargamos estos archivos podemos ver que se tratan de un script.
Probamos enviando uno propio, que realice un wget
para ver si se refleja la ejecución del archivo.
Enviamos el archivo con el siguiente contenido e iniciamos un servidor antes de ejecutarlo y podemos observar que sí nos ejecuta el código archivo.
Con esto en mente, volveremos a enviar un correo similar, esta vez el contenido será un revershell y empezaremos el listener.
Volvemos a enviar el archivo con el mismo contenido para evitar algún problema.
Luego de unos segundos podemos observar que tenemos respuesta y estamos conectados como carlos
y tenemos la primera flag.
Para facilitar las cosas en este punto migraremos la shell porque en este caso nos ocurre que no podemos hacer uso de las flechas o subir y bajar al comando anterior. Para ello primero hacemos
script /dev/null -c bash
luego un ctrl+z, regresaremos a nuestra consola seguido de ello ingresaremos los siguientes comandos para recuperar la shell usamos stty
stty raw -echo; fg
reset xterm
para obtener más características usamos
export TERM=xterm
para la variable de entorno
echo $SHELL
y para pasar a bash usamos
export SHELL=/bin/bash
para establecer el tamaño adecuado de la consola ingresamos
stty rows 59 cols 236
de esta manera ya nos podemos mover con más libertad en la consola.
Revisando algunas credenciales no vemos mucha información así que volvemos a enviar otra conexión, pero esta vez lo realizamos con destino al mismo gonzalo
y pablo
para ver si establecemos conexión, pero no obtenemos una respuesta.
Revisando los mails podemos ver que tenemos entre los mensajes más viejos el siguiente mensaje.
Nos dirigimos a la ubicación que hace referencia y tenemos solo filebrowser
.
Buscando más información sobre filebrowser
podemos ver que tenemos el siguiente CVE donde nos da la idea de que podemos crear un usuario y usarlo para obtener información del usuario.
Al interceptar la petición con burpsuite podemos ver como se están enviando los datos.
Ingresamos como el usuario creado y podemos ver el contenido de acceso al contenido raíz.
Nos dirigimos a /etc/shadow
vemos que tenemos acceso al archivo, Intentamos romper el hash, pero no tenemos éxito.
Vamos a la carpeta root
y podemos observar que tenemos el flag, pero el objetivo es establecer conexión por ello realizando unas pruebas vemos que tenemos permisos para modificar y crear archivos.
Con esto en mente generaremos unas claves.
Nos dirigimos a la ruta del archivo root/.ssh/authorized_keys
en el cual agregamos el contenido de nuestra clave pública generada y guardamos.
Una vez hecho ello establecemos conexión y ya somos root. De esta manera culminando esta máquina.
Subscribe to my newsletter
Read articles from Gm4tsy directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
