System HackMyVM (Easy - Linux)
Escaneo de puertos
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>nmap -sCV -p<PORTS> <IP>Info:
Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-20 02:59 EDT
Nmap scan report for 192.168.5.24
Host is up (0.00058s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5 (protocol 2.0)
| ssh-hostkey:
| 3072 27:71:24:58:d3:7c:b3:8a:7b:32:49:d1:c8:0b:4c:ba (RSA)
| 256 e2:30:67:38:7b:db:9a:86:21:01:3e:bf:0e:e7:4f:26 (ECDSA)
|_ 256 5d:78:c5:37:a8:58:dd:c4:b6:bd:ce:b5:ba:bf:53:dc (ED25519)
80/tcp open http nginx 1.18.0
|_http-server-header: nginx/1.18.0
|_http-title: HackMyVM Panel
MAC Address: 08:00:27:DE:FD:6B (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.19 secondsVeremos que hay un puerto 80 en el que si entramos veremos una pagina web alojada que contiene un panel de register probablemente para registrar un usuario, vamos a probar a registrar un usuario a ver que pasa.
Veremos que pone esto:
Pero no pasa nada mas, vamos abrir BurpSuite y capturar la peticion del registro a ver que esta pasando por dentro, pero si inspeccionamos el codigo antes confirmamos esto:
XXE (RCE)
Vemos que esta llamando a una funcion que tiene que ver con XML por lo que tiene toda la pinta de que podremos realizar un XXE, vamos a capturar la peticion.

Veremos que efectivamente esta utilizando XML por lo que vamos a probar a realizar un XXE a ver si se ejecuta codigo de forma remota para realizar un RCE.
Probaremos esta estructura tipica de un XXE.

Vemos que esta funcionando y estaremos leyendo el passwd de la maquina victima, por lo que vamos a probar a leer la id_rsa del usuario david que es el unico que vemos que esta registrado.
Info:
id_rsa
Veremos que ha funcionado, por lo que vamos a guardarlo en un archivo id_rsa y establecerle los permisos necesarios.
Ahora vamos a probar a conectarnos por SSH.
Si probamos esto veremos que no nos deja ya que no esta habilitado autenticarte mediante la clave privada por lo que vamos a realizar un poco de fuzzing en la home del usuario david a ver que entontramos.
Escalate user david
FFUF
Info:
Veremos que encontramos un archivo bastante interesantes llamado .viminfo vamos a ver que es y que contiene.
Si vemos que contiene veremos lo siguiente:
Vemos que en la ruta /usr/local/etc/mypass.txt hay algo de una password en este caso creemos que puede ser del usuario david por lo que vamos a comprobarlo.
Si lo leemos veremos esto:
Vamos a conectarnos por SSH a ver si funciona.
SSH
Metemos como contraseña h4ck3rd4v!d y veremos que estaremos dentro, por lo que leeremos la flag del usuario.
user.txt
Escalate Privileges
Si listamos la carpeta /opt veremos lo siguiente:
Vemos que hay un archivo .py vamos a ver que contiene:
Vemos varias cosas interesantes, por lo vemos hay una opcion en la que si detecta el programa que existe un archivo llamado suid.txt en la carpeta /tmp se establecen permisos de SUID a la bash de lo contrario no hace nada.
Pero aunque lo creemos el archivo no pasara nada, tambien podemos creer que se esta ejecutando un crontab ya que esto tiene pinta de que se esta ejecutando cada x tiempo.
Vamos a pasarnos el script pspy64 a la maquina victima mediante un servidor de python3 y en la maquina victima con wget.
Ahora en la maquina victima:
Una vez que nos lo hayamos pasado estableceremos permisos de ejecucion.
Ahora ejecutaremos dicho script.
Info:
Veremos que efectivamente se esta ejecutando por root una tarea programada de dicho archivo con python3.9 por lo que vamos a descargarnos linpeas.sh de esta forma para enumerar el sistema.
Info:
Veremos esta parte de aqui, en esta seccion vemos esta fila:
Vamos a listar dicha libreria de python.
Info:
Veremos que podemos sobreescribir el archivo y vimos anteriormente que el script que esta ejecutando root tiene importada dicha libreria, por lo que vamos hacer lo siguiente:
Ese fragmento de codigo lo meteremos la final del archivo de os.py, ahora solo tendremos que esperar a que se ejecute, esperado un rato vamos a listar la basha ver si funciono.
Info:
Veremos que si ha funcionado, por lo que haremos lo siguiente.
Info:
Con esto veremos que ya seremos root por lo que leeremos la flag de root.
root.txt
Last updated