HackMyVM Number — 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.124
.
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.
Al realizar un escaneo más profundo no observamos algún dato relevante.
Ingresamos la dirección IP en el navegador y solo observamos el texto Good luck
.
Realizando el escaneo de subdirectorios vemos que tenemos 3 interesantes.
Buscando entre ellos tenemos que en robtos.txt
tiene un whoami.php
, pero al dirigirnos a este no vemos nada, en pin
y admin
observamos campos para ingresar información. En pin
ingresamos algunos números random, pero no tenemos alguna respuesta y admin
probamos algunas credenciales genéricas y algunas inyecciones, pero no vemos nada que nos revele algo.
Probaremos con el pin, para ello primero crearemos un diccionario.
Capturamos la petición y lo enviamos al repeater.
Con esta información podemos realizar un ataque de fuerza bruta y vemos el pin correcto.
Ingresamos el ping, pero solo vemos el siguiente mensaje.
Ya que tenemos el pin, pero no sabemos que hacer probaremos como si fuera el password de admin
y volvemos a capturar la petición, pero esta vez de admin
y repetimos lo mismo que con pin
.
Ejecutamos el ataque desde hydra
, pero no nos detecta nada lo cual es raro. Así que probamos haciéndolo empleando el siguiente código.
import requests
url = "http://192.168.0.125/admin/admincheck.php"
cookie = {"PHPSESSID": "t6d2vm1cmajpessipp16quqei9"}
usuarios_file = "rockyou-60.txt"
password = "4444"
headers = {
"Referer": "http://192.168.0.125/admin/",
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0",
}
with open(usuarios_file, "r") as f:
usuarios = [line.strip() for line in f]
for usuario in usuarios:
data = {"user": usuario, "password": password}
response = requests.post(url, data=data, headers=headers, cookies=cookie, allow_redirects=False)
if response.status_code == 302:
print(f"[+] Credenciales encontradas: {usuario}:{password}")
print(f"[➡] Redirige a: {response.headers.get('Location', 'Desconocido')}")
exit()
print("[+] Ataque finalizado")
De esta manera podemos observar las credenciales.
Una vez logueados con esas credenciales podemos ver que nos muestra un campo para ingresar una dirección IP, pero al ingresarla vemos que no acepta los puntos.
Al ingresar solo números vemos que si acepta y parece generar una revershell.
Ya que deben ser números, otra manera de representar una IP es mediando la conversión decimal
, esto lo podemos hacer en la siguiente página vermiip y luego ingresaríamos nuestra dirección IP.
Pero si enviamos y nos genera una conexión, no sabemos por qué puerto está intentando establecer conexión, para ello iniciamos tcpdump
y nos ponemos en escucha antes de enviar la dirección IP.
Luego enviamos la dirección IP y podemos observar el número de puerto que debemos habilitar.
Como ya sabemos el número de puerto empleando nc
comenzamos el servicio.
Volvemos a enviar la dirección IP y veremos que en nuestro listener ya tenemos acceso.
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 si tenemos algunos permisos básicos podemos observar que no tenemos alguno.
Revisando la carpeta de usuario solo tenemos a melon
, pero dentro de este usuario no vemos más información.
Probando algunas credenciales por defecto vemos que usando melon:melon
podemos acceder como melon
.
Ya como melon
realizamos un sudo -l
y podemos ver que tenemos el binario hping3
.
Al dirigirnos a la página de GTFOBins podemos observar que nos indican como emplear el binario para poder escalar.
Ingresamos el comando y podemos observar que somos root.
Realizando un id
validamos que somos root. De esta manera Culminamos 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
