Pkgpoison
Introducción
Sección titulada «Introducción»Este documento presenta la resolución completa de la máquina Pkgpoison, desarrollada por RSA para la plataforma DockerLabs y clasificada con un nivel de dificultad fácil.
El análisis sigue una metodología progresiva que abarca desde el reconocimiento inicial hasta la escalada de privilegios, con el objetivo de comprender de forma estructurada las vulnerabilidades explotadas y el flujo completo de compromiso del sistema.
Los objetivos principales de este write-up son:
- Identificar los vectores de ataque expuestos desde el entorno inicial.
- Analizar los servicios disponibles y los archivos accesibles públicamente.
- Obtener acceso inicial mediante fuerza bruta tras el hallazgo de credenciales expuestas.
- Escalar privilegios desde un usuario estándar hasta root aprovechando configuraciones inseguras de binarios ejecutables mediante sudo.
La metodología se divide en las siguientes fases:
- Reconocimiento: Enumeración de puertos, análisis de rutas web accesibles y búsqueda de información expuesta.
- Explotación: Descubrimiento de credenciales, validación de accesos y obtención de una sesión interactiva dentro del sistema.
- Escalada de privilegios: Análisis de permisos, identificación de artefactos útiles y abuso de configuraciones SUDO relacionadas con
pip3.
Todas las acciones se realizaron dentro del entorno aislado proporcionado por DockerLabs.
Información General
Sección titulada «Información General»| Atributo | Valor |
|---|---|
| Nombre | Pkgpoison |
| Autor | RSA |
| Dificultad | Fácil |
| Fecha | 30/05/2025 |
| Plataforma | DockerLabs |
Paso 0 — Preparación y despliegue
Sección titulada «Paso 0 — Preparación y despliegue»Se descomprime el archivo de la máquina:
unzip "Pkgpoison.zip"Luego se despliega el contenedor utilizando el script proporcionado:
sudo bash auto_deploy.sh "Pkgpoison.tar"El script devuelve la IP interna asignada, que será utilizada a lo largo de todo el proceso.

Paso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Organización del entorno de trabajo
Sección titulada «1.1 Organización del entorno de trabajo»Para mantener un flujo de trabajo ordenado, se genera una estructura de directorios donde almacenar cada pieza de información:
mkdir -p Pkgpoison/{content,exploits,nmap,gobuster,scripts}cd Pkgpoison1.2 Escaneo de puertos
Sección titulada «1.2 Escaneo de puertos»Se inicia un reconocimiento de puertos completos mediante Nmap:
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsPuertos identificados:
- 22/tcp — SSH
- 80/tcp — HTTP

Estos puertos serán los vectores iniciales de análisis. SSH puede ser útil si logramos obtener credenciales, mientras que HTTP permite enumerar contenido accesible.
1.3 Enumeración Web (HTTP - puerto 80)
Sección titulada «1.3 Enumeración Web (HTTP - puerto 80)»Se realiza un primer análisis de rutas con Gobuster:
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
Entre los resultados se observan:
- /index.html — Página principal minimalista, sin funcionalidad útil para explotación.
- /hidden — Directorio sin permisos de lectura, lo cual sugiere la existencia de información sensible.
Para continuar la enumeración, se decide profundizar en otras rutas. Durante el análisis se detecta el directorio /notes, donde se encuentra un archivo note.txt:

El archivo contiene una nota que revela credenciales que deberían haber sido cambiadas, lo que sugiere un descuido administrativo:
Usuario: devContraseña: developer123Estas credenciales representan un punto de entrada potencial.
Paso 2 — Explotación (Acceso Inicial)
Sección titulada «Paso 2 — Explotación (Acceso Inicial)»Se intenta acceder por SSH con las credenciales encontradas, pero la contraseña ha sido modificada. Por ello se procede a realizar un ataque de fuerza bruta controlado con Hydra:
hydra -l dev -P rockyou.txt ssh://172.17.0.2 -t 64
Hydra encuentra una contraseña válida:
- Usuario: dev
- Contraseña: (detectada en el ataque)
Ahora se establece la conexión SSH:
ssh dev@172.17.0.2
Con esto obtenemos acceso al sistema como el usuario dev, lo que representa el acceso inicial.
Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 De Dev → Admin
Sección titulada «3.1 De Dev → Admin»Para continuar con la escalada, se buscan archivos pertenecientes al usuario admin:
find / -user admin 2>/dev/null
Dentro de los resultados destaca:
/opt/scripts/__pycache__/secret.cpython-38.pycAunque se trata de un archivo compilado (.pyc), es posible extraer su contenido.
Tras analizarlo, se identifica una contraseña en texto plano:
admin → p@$$w0r8321Con esta credencial se procede a cambiar al usuario admin:
su admin
Ahora contamos con un usuario con mayores permisos, lo que permite continuar la escalada.
3.2 De Admin → ROOT (abuso de pip3)
Sección titulada «3.2 De Admin → ROOT (abuso de pip3)»Al revisar los permisos sudo del usuario admin:

Se observa que puede ejecutar pip3 install como root sin necesidad de contraseña. Este es un vector de escalada muy conocido, ya que permite ejecutar scripts arbitrarios durante la instalación de un paquete.
Para explotarlo, se crea un paquete temporal:
TF=$(mktemp -d)echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')" > $TF/setup.pysudo pip3 install $TFAl ejecutarse, setup.py se corre con permisos de superusuario, otorgándonos una shell root.

Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»- Existencia de archivos sensibles accesibles públicamente en
/notes. - Uso de contraseñas débiles y credenciales expuestas en texto plano.
- Falta de rotación o actualización de contraseñas administrativas.
- Permisos excesivos en
sudo, permitiendo ejecutarpip3sin autenticación. - Almacenamiento inseguro de contraseñas dentro de archivos
.pyc.
Recomendaciones
Sección titulada «Recomendaciones»- Evitar almacenar credenciales en archivos accesibles desde el navegador.
- Implementar políticas estrictas de contraseñas fuertes y rotación periódica.
- Limitar permisos sudo únicamente a operaciones realmente necesarias.
- Configurar alertas para detectar archivos sensibles dentro del árbol web.
- Revisar y eliminar binarios, scripts o configuraciones que puedan ser explotadas para escalada de privilegios.