HackMyVM Narcos — Linux

Gm4tsyGm4tsy
6 min read

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.

0
Subscribe to my newsletter

Read articles from Gm4tsy directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Gm4tsy
Gm4tsy