Skip to content

Picadilly

This content is not available in your language yet.

Este documento presenta la resolución completa de la máquina Picadilly, desarrollada por kaikoperez para la plataforma DockerLabs y clasificada como fácil.

El propósito es exponer un análisis claro, ordenado y técnicamente fundamentado que incluya:

  • Identificación de vectores de entrada.
  • Explotación mediante revisión de archivos sensibles y funcionalidades de la aplicación.
  • Obtención de acceso mediante subida controlada de archivos.
  • Escalada de privilegios a través del uso seguro de sudo.

La metodología se estructura en tres etapas principales:

  1. Reconocimiento: identificación de servicios expuestos y análisis del contenido web.
  2. Explotación: utilización de artefactos sensibles y vectores proporcionados por la aplicación.
  3. Escalada de privilegios: uso de permisos sudo para obtener acceso root.

Todas las pruebas se realizaron en el entorno aislado proporcionado por DockerLabs.


AtributoValor
NombrePicadilly
Autorkaikoperez
DificultadFácil
Fecha18/05/2024
PlataformaDockerLabs

Descomprimir la máquina:

Ventana de terminal
unzip "Picadilly.zip"

Iniciar el contenedor:

Ventana de terminal
sudo bash auto_deploy.sh "Picadilly.tar"

El script devuelve la IP interna, utilizada durante toda la auditoría:

IP asignada


Se crea un entorno estructurado para registrar hallazgos:

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

Se analiza el objetivo con un escaneo TCP completo:

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

Puertos detectados:

  • 80/tcp — HTTP
  • 443/tcp — HTTPS

Puertos abiertos

Enumeración con gobuster:

Ventana de terminal
gobuster dir \
-u http://172.18.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

Recurso identificado:

  • backup.txt

backup data

En este archivo se observan:

  • Un usuario válido.
  • Una contraseña cifrada mediante un cifrado César, según la pista del “emperador romano”.

Al decodificarla, se obtiene un par de credenciales funcionales.


La enumeración se repite contra el servicio HTTPS:

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

gobuster scan

Rutas encontradas:

  • index.php — formulario de subida de archivos index content

  • uploads/ — directorio accesible que lista archivos subidos.

La presencia de un formulario de subida sin filtros adecuados permite plantear un ataque mediante Web Shell.


Aprovechando la subida de archivos se carga una reverse shell en PHP.

Antes de ejecutarla, se activa un listener:

Ventana de terminal
nc -nlvp 443

Se sube la shell a través del formulario y se accede a ella visitando:

https://IP/uploads/shell.php

Reverse shell establecida:

revershell

En este punto se obtiene acceso como www-data.


Como parte del análisis previo, se descubrieron credenciales válidas en backup.txt. Utilizando:

Ventana de terminal
su mateo

se accede correctamente a la cuenta mateo.

mateo user


Se revisan los binarios permitidos mediante sudo:

Ventana de terminal
sudo -l

sudo -l

Se identifica que php puede ejecutarse como root sin contraseña.

Para elevar privilegios:

Ventana de terminal
sudo php -r "system('/bin/bash');"

Con ello se obtiene una shell privilegiada:

root


  1. Archivo sensible expuesto (backup.txt): contenía credenciales válidas y pistas directas para su recuperación.
  2. Subida de archivos sin restricciones: permitió ejecutar código arbitrario en el servidor.
  3. Listado del directorio uploads/: facilitó la localización y ejecución de la reverse shell.
  4. Permisos sudo excesivos: permitir a un usuario ejecutar php como root concede control absoluto del sistema.
  5. Configuración insegura en HTTPS: acceso sin validación estricta, permitiendo eludir advertencias mediante -k.

  1. Eliminar archivos sensibles del entorno de producción.

  2. Implementar validación estricta en formularios de subida:

    • Extensiones permitidas.
    • Análisis de contenido (MIME checking).
    • Ubicación no accesible directamente.
  3. Restringir el listado de directorios.

  4. Revisar configuraciones sudoers:

    • Evitar NOPASSWD excepto en casos muy específicos.
    • Evitar que lenguajes interpretados puedan ejecutarse como root.
  5. Aplicar buenas prácticas de seguridad web:

    • Deshabilitar directorios navegables.
    • Separar entornos de prueba y producción.
  6. Auditorías periódicas y hardening general del sistema.