Translator 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-06-16 03:17 EDT
Nmap scan report for 192.168.5.40
Host is up (0.00051s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5 (protocol 2.0)
| ssh-hostkey: 
|   3072 08:cf:50:b2:4f:41:43:c4:66:56:ce:96:b9:04:8c:77 (RSA)
|   256 40:b7:11:24:76:59:cd:e0:79:db:71:d1:39:29:d5:45 (ECDSA)
|_  256 44:64:ba:b8:52:4f:ca:00:dd:3e:c3:28:71:6f:77:76 (ED25519)
80/tcp open  http    nginx 1.18.0
|_http-server-header: nginx/1.18.0
|_http-title: Site doesn't have a title (text/html).
MAC Address: 08:00:27:38:EC:CC (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 6.93 seconds

Veremos que hay un puerto 80 en el que tiene alojada una pagina web, vamos a ver que contiene si entramos, estando dentro veremos una especie de traductor, en el cual si metemos una palabra nos lo traducira de la siguiente forma:

Info:

Vemos que el tipo de patron que esta utilizando para traducir es sustitución alfabética invertida o tambien conocido como Cifrado Atbash, lo que hace es invertir el abecedario dependiendo de la letra que pongamos, vamos a montarnos un script de python3 para traducirlo de mejor forma.

translate.py

Ahora si lo ejecutamos de esta forma:

Info:

Vemos que se esta traduciendo bien, vamos a probar a meter algo ya traducido, pero para intentar realizar un RCE a ver si se pudiera.

Si metemos directamente rw que es igual a id veremos lo siguiente:

Se esta traduciendo bien, pero como que se duplica, vamos a probar varios tipos de concatenacion, a ver si se pudiera concatenar y de alguna forma bypassear esto.

Info:

Por lo que vemos efectivamente se esta ejecutando el comando, por lo que vamos a realizarnos una reverse shell de esta forma.

Info:

Para hacerlo mas facil vamos a utilizar directamente el parametro que utiliza para traducir la pagina llamado hmv con curl.

Antes de enviar el comando, nos pondremos a la escucha:

Ahora si enviamos el comando y volvemos a donde tenemos la escucha veremos lo siguiente:

Veremos que ha funcionado, por lo que tendremos que sanitizar la shell.

Sanitización de shell (TTY)

Escalate user ocean

Si nos vamos a la siguiente ruta bastante interesante:

Veremos lo siguiente:

Vemos que hay un archivo que no hemos visto antes llamado hvxivg por lo que vamos a leerlo:

Vemos que es una frase codificada por el mismo codificado que estabamos utilizando antes, por lo que vamos a llevarlo a nuestro script a ver como lo traduce.

Info:

Vamos a probar dicha password con el usuario oceana ver si funciona.

Metemos como contraseña ayurv3d4 y veremos que somos dicho usuario, por lo que leeremos la flagdel usuario.

user.txt

Escalate user india

Si hacemos sudo -l veremos lo siguiente:

Vemos que podemos ejecutar el binario choom como el usuario india por lo que haremos lo siguiente:

Info:

Con esto veremos que seremos dicho usuario.

Escalate Privileges

Si hacemos sudo -l veremos lo siguiente:

Vemos que podemos ejecutar el binario trans como el usuario root por lo que haremos lo siguiente.

Info:

En toda esta informacion veremos un parametro bastante interesante que es el siguiente:

Como esto se esta ejecutando con root podemos aprobechar una vulnerabilidad con el binario man que se esta ejecutando si yo pongo el parametro -M por lo que vamos a realizar lo siguiente:

Info:

Con esto veremos que ya seremos root, por lo que leeremos la flag de root.

root.txt

Last updated