StellarJwt
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 StellarJwt, desarrollada por Alv-fh para la plataforma DockerLabs y clasificada como fácil.
El propósito es ofrecer un análisis detallado y comprensible que permita entender la lógica detrás de cada fase del proceso de explotación, desde el reconocimiento inicial hasta la obtención del acceso root.
El enfoque metodológico se basa en tres etapas:
- Reconocimiento: identificación de servicios expuestos, recursos accesibles y posibles puntos de entrada.
- Explotación: validación de vulnerabilidades, obtención de credenciales y acceso inicial al sistema.
- Escalada de privilegios: abuso de configuraciones
sudoy binarios privilegiados para alcanzar privilegios administrativos.
Todas las pruebas se realizaron en un entorno controlado y aislado proporcionado por DockerLabs, garantizando que las acciones no afecten sistemas reales.
Información General
Sección titulada «Información General»| Atributo | Valor |
|---|---|
| Nombre | StellarJwt |
| Autor | Alv-fh |
| Dificultad | Fácil |
| Fecha | 25/10/2024 |
| Plataforma | DockerLabs |
Paso 0 — Preparación y despliegue
Sección titulada «Paso 0 — Preparación y despliegue»Se descomprime la máquina proporcionada:
unzip "StellarJwt.zip"Luego se inicia el contenedor con el script de despliegue automático:
sudo bash auto_deploy.sh "StellarJwt.tar"El script devuelve la IP interna, la cual será utilizada en todas las fases siguientes.

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 ordenado y facilitar la documentación, se crea una estructura de carpetas:
mkdir -p StellarJwt/{content,exploits,nmap,gobuster,scripts}cd StellarJwt1.2 Escaneo de puertos
Sección titulada «1.2 Escaneo de puertos»Se realiza un escaneo completo de puertos con Nmap para identificar servicios activos:
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsPuertos detectados:
- 22/tcp — SSH
- 80/tcp — HTTP

La presencia del servicio HTTP sugiere que el vector de ataque inicial probablemente se encuentre en la aplicación web.
1.3 Enumeración Web (HTTP - puerto 80)
Sección titulada «1.3 Enumeración Web (HTTP - puerto 80)»Se procede con la búsqueda de directorios y archivos accesibles usando Gobuster:
gobuster dir \ -u http://172.17.0.2/ \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt \ -x php,html,txt,js \ -t 200
Resultados de interés:
- /index.html — Página principal que muestra un sitio de la NASA aparentemente alterado.

- /universe — Página secundaria con una imagen de galaxia.
En el index aparece una pista clave:
“¿Qué astrónomo alemán descubrió Neptuno?”
La respuesta es Johann Gottfried Galle.
Al revisar el código fuente de la página /universe, se encuentra un token JWT comentado en el HTML.

Al decodificar este token en jwt.io, se obtiene el siguiente contenido:

El JWT revela un usuario llamado neptuno, lo que constituye una posible credencial.
Paso 2 — Explotación (Acceso Inicial)
Sección titulada «Paso 2 — Explotación (Acceso Inicial)»Con la información obtenida, se infiere que el usuario neptuno podría tener una contraseña relacionada con la pista previa. Se prueba la conexión SSH con el usuario y el apellido del astrónomo como contraseña:
ssh neptuno@172.18.0.2# Contraseña: GottfriedEl acceso resulta exitoso:

Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 De Neptuno → Nasa
Sección titulada «3.1 De Neptuno → Nasa»En el directorio personal del usuario neptuno, se encuentra un archivo interesante:
ls -lacat .carta_a_la_NASA.txt
El mensaje sugiere que existe otro usuario llamado nasa, e indica dos pistas:
- El año de fundación de la NASA.
- El nombre de su fundador.
Con base en esto, se puede deducir la contraseña correspondiente y cambiar al usuario nasa:
su nasa3.2 De Nasa → Elite (socat)
Sección titulada «3.2 De Nasa → Elite (socat)»Listando los permisos sudo del usuario nasa:
sudo -l
El usuario puede ejecutar el binario socat con privilegios del usuario elite. Esto permite escalar mediante la ejecución interactiva de una shell:
sudo -u elite socat stdin exec:/bin/bashAcceso obtenido como elite:

3.3 De Elite → Root (chown)
Sección titulada «3.3 De Elite → Root (chown)»Volviendo a listar los permisos sudo:
sudo -l
El usuario elite puede ejecutar el comando chown como root, lo que permite modificar la propiedad de archivos críticos del sistema.
Aprovechando esto, se cambia la propiedad del archivo /etc/passwd, eliminando la protección de contraseña para el usuario root:
sudo chown elite:elite /etc/sudo chown elite:elite /etc/passwdsed 's/root:x:/root::/' /etc/passwd > /tmp/passwdcat /tmp/passwd > /etc/passwdsuFinalmente, se obtiene acceso como root:

Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»| Tipo de fallo | Descripción | Riesgo |
|---|---|---|
| Exposición de información sensible | El JWT con datos de usuario estaba expuesto en el código fuente. | Alto |
| Uso de contraseñas predecibles | Las credenciales estaban basadas en pistas triviales y públicas. | Alto |
Configuración insegura de sudo | Permisos excesivos en binarios como socat y chown. | Crítico |
| Permisos de archivos sensibles | /etc/passwd modificable mediante abuso de chown. | Crítico |
Recomendaciones
Sección titulada «Recomendaciones»-
Evitar exposición de tokens o credenciales en código fuente. Los JWT deben almacenarse de forma segura y con firmas válidas.
-
Fortalecer políticas de contraseñas. Usar contraseñas aleatorias y no relacionadas con información pública.
-
Revisar configuraciones de sudo. Limitar la ejecución de binarios privilegiados solo a usuarios administrativos.
-
Proteger archivos del sistema. Asegurar permisos correctos en
/etc/passwdy otros archivos críticos. -
Auditar el sistema periódicamente. Detectar configuraciones inseguras antes de que sean explotadas.