
Plum - Writeup
Plum es una máquina de Proving Grounds de dificultad media. Es una buena máquina para afianzar conceptos para la OSCP.
Reconocimiento Link to Reconocimiento
Empezaremos escaneando los puertos abiertos de la máquina cuya IP es 192.168.213.28 con nmap.
12345678sudo nmap -sS -p- --open -Pn -oN tcp_scan_192.168.213.28.txt 192.168.213.28
Nmap scan report for 192.168.213.28
Host is up (0.18s latency).
Not shown: 64510 closed tcp ports (reset), 1023 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Ahora enumeramos los servicios que corren en estos puertos:
1234567891011121314sudo nmap --privileged -p22,80 -sCV -Pn -oN scan_192.168.213.28.txt 192.168.213.28
Nmap scan report for 192.168.213.28
Host is up (0.033s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
| 3072 c9:c3:da:15:28:3b:f1:f8:9a:36:df:4d:36:6b:a7:44 (RSA)
| 256 26:03:2b:f6:da:90:1d:1b:ec:8d:8f:8d:1e:7e:3d:6b (ECDSA)
|_ 256 fb:43:b2:b0:19:2f:d3:f6:bc:aa:60:67:ab:c1:af:37 (ED25519)
80/tcp open http Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: PluXml - Blog or CMS, XML powered !
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Como se puede observar, la máquina tiene el puerto 80 abierto con el servicio http y el puerto 22 con ssh.
Escaneamos el puerto 80 con whatweb para obtener más información.
12whatweb http://192.168.213.28/
http://192.168.213.28/ [200 OK] Apache[2.4.56], Cookies[PHPSESSID], Country[RESERVED][ZZ], HTML5, HTTPServer[Debian Linux][Apache/2.4.56 (Debian)], HttpOnly[PHPSESSID], IP[192.168.213.28], PoweredBy[ ], Title[PluXml - Blog or CMS, XML powered !]
Como podemos observar, se detecta un CMS llamado PluXml.
Si entramos a la página web podremos encontrar lo siguiente:

Si nos movemos a la parte inferior de la aplicación, podremos ver un link en el footer que pone Administration. Si hacemos hovering podemos ver lo siguiente.

Si clickamos en el link, se nos redirige a una página de admin.

Si probamos con las credenciales admin:admin accedemos como usuario administrador.

Explotación Link to Explotación
Como es un CMS de php, podemos intentar modificar los archivos para poder subir una reverse shell y poder ganar acceso a la máquina.
En la sección Themes, podemos modificar el código php de diferentes vistas.

Para la reverse shell, usé la página web revshells.com. Elegí el payload de PHP Monkey Pentest.

Como resultado, copié el código y lo pegué en la vista home.php del CMS. Al ponerme en escucha y al entrar a la página web /index.php obtuve la reverse shell.
La flag local.txt la podremos encontrar en /var/www.

Escalada de privilegios Link to Escalada de privilegios
Si vemos los puertos que usa la máquina:
1234567www-data@plum:/var/www$ netstat -putnoa
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name Timer
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - off (0.00/0/0)
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN - off (0.00/0/0)
tcp 0 292 192.168.225.28:41402 192.168.45.248:443 ESTABLISHED 1121/sh on (0.24/0/0)
tcp6 0 0 192.168.225.28:80 192.168.45.248:44798 ESTABLISHED - keepalive (7041.40/0/0)
Como podemos observar, el puerto 25 está abierto en local. Este puerto se suele usar par el correo electrónico SMTP. Esto nos puede hacer pensar de que existan correos electrónicos en la máquina que podamos enumerar.
Si investigamos en /var/mail/www-data que corresponde a nuestro usuario actual, podremos ver lo siguiente.

Podremos ver las credenciales root:6s8kaZZNaZZYBMfh2YEW.
Si usamos esta contraseña para cambiar al usuario root, conseguiremos escalar privilegios.

Conclusión Link to Conclusión
Con esto concluye la máquina Plum. Si quieres más writeups de máquinas para la OSCP accede aquí: máquinas para la OSCP.
Plum - Writeup
© YatoDev | CC BY-SA 4.0
