> For the complete documentation index, see [llms.txt](https://wiki.securiters.com/securiters-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.securiters.com/securiters-wiki/write-ups/proving-grounds/pwned1.md).

# Pwned1

<figure><img src="/files/LHzMBB8mVSExh6pW2uLn" alt=""><figcaption></figcaption></figure>

### Enumeración

#### Servicios abiertos

Comenzamos enumerando los servicios abiertos en la máquina objetivo.

```
nmap -p- --open --min-rate 500 -Pn -n -vvv 192.168.51.95
```

<figure><img src="/files/xrgZLv7cHFQ5a0BPUlEI" alt=""><figcaption></figcaption></figure>

La máquina Pwned1 tiene tres puertos abiertos: 21, 22 y 80. El siguiente paso será el escaneo en profundidad de los tres servicios descubiertos.

```
nmap -p22,80 -Pn -n -sVC -vvv 192.168.51.95
```

<figure><img src="/files/LNZ7GcKTKtV0Y8pNZoxd" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Sc5w7cmaT5AW4RsCQpI7" alt=""><figcaption></figcaption></figure>

Servicios abiertos:

* Puerto 21 -> FTP -> vsftpd 3.0.3
* Puerto 22 -> SSH -> OpenSSH 7.9
* Puerto 80 -> HTTP -> Apache httpd 2.4.38

#### Enumeración Web

En el puerto 80 se está ejecutando un servicio Web. Vamos a ver el contenido en el navegador y al mismo tiempo vamos a enumerar la existencia de directorios y archivos interesantes.&#x20;

<figure><img src="/files/L6A0NLYkHduscuftOMBD" alt=""><figcaption></figcaption></figure>

Vemos el mensaje de que han hackeado el sitio Web pero poca más información podemos extraer.&#x20;

```
feroxbuster -u http://192.168.51.95/ -s200,301 -x html,txt,php
```

<figure><img src="/files/3Sr8327oS7587AsOxNOT" alt=""><figcaption></figcaption></figure>

Obtenemos como resultado interesante la existencia de un archivo robots.txt. Veamos su contenido.

<figure><img src="/files/BGJts2WVdS2zcis2QxcA" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/tXtj8Z64ziD6EJZEjbLy" alt=""><figcaption></figcaption></figure>

Vemos dos directorios en el archivo robots.txt. Un directorio /nothing que no contiene información alguna y un directorio /hidden\_text donde obtenemos una lista, parece que de directorios. Vamos a descargarla para utilizarla con feroxbuster y volver a fuzzear el sitio Web.

```
feroxbuster -u http://192.168.51.95/ -s200,301 -x html,txt,php -w secret.dic
```

<figure><img src="/files/RdArPqPY2TehmkLMxmGp" alt=""><figcaption></figcaption></figure>

Obtenemos un resultado, /pwned.vuln/. Veamoslo.

<figure><img src="/files/gI8i49UCAzSqEWtqzjp2" alt=""><figcaption></figcaption></figure>

Llegamos a un formulario de inicio de sesión. Probamos varias credenciales por defecto sin obtener resultado alguno. Podemos ver el código fuente por si hubiese información interesante.&#x20;

<figure><img src="/files/9TjEsZpVSvTfIpFsGZKY" alt=""><figcaption><p>ftpuser:<em>B0ss_Pr</em>!<em>ncesS</em></p></figcaption></figure>

Tenemos unas posibles credenciales para un servicio FTP (recordamos que este servicio está disponible). Vamos a tratar de iniciar sesión en el servidor FTP.

<figure><img src="/files/GWouXDfN8P0uog86hTNA" alt=""><figcaption></figcaption></figure>

Login existoso en el servidor FTP. Dentro tenemos un directorio /share que contiene dos archivos, id\_rsa y note.txt. Vamos a descargar estos archivos en nuestra máquina de ataque.&#x20;

<figure><img src="/files/CVZxSXIGuYuLuVZSXV0o" alt=""><figcaption><p>Clave privada</p></figcaption></figure>

<figure><img src="/files/x0sgWHNWQlPq26HGm7b9" alt=""><figcaption><p>Posible nombre de usuario</p></figcaption></figure>

### Explotación

Durante la enumeración descubrimos un directorio abierto que contenia una clave privada y una nota donde se indicaba un posible nombre de usuario. Vamos a tratar de iniciar sesión utilizando el servicio SSH que se está ejecutando en el puerto 22.

```
chmod 600 id_rsa
ssh ariana@192.168.51.95 -i id_rsa
```

<figure><img src="/files/Cej9DJdmhq84UAwCkMuZ" alt=""><figcaption></figcaption></figure>

Una vez logramos vulnerar la máquina víctima, el siguiente paso será buscar la flag local.txt.

<figure><img src="/files/0HqlwdEo9Hqdu6iVFxCN" alt=""><figcaption></figcaption></figure>

### Pivotando de usuaria "ariana" a "selena"

Comenzamos realizando las diferentes enumeraciones que nos pueden permitir obtener privilegios "root". Obtenemos un resultado interesante ejecutando `sudo -l`

<figure><img src="/files/zKuAr73rrO9Gl4GZd2Rm" alt=""><figcaption></figcaption></figure>

Vamos a ejecutar este archivo que nos indica que podemos ejecutar como sudo sin contraseña.

`sudo -u selena /home/messenger.sh`

<figure><img src="/files/4rEBcuoVwXMx65nMjvBC" alt=""><figcaption></figcaption></figure>

```
selena
/bin/bash (para generar una shell)
id
python3 -c 'import pty; pty.spawn("/bin/bash")' (tty interactiva)
```

<figure><img src="/files/oSfMxS2fPL5A2sqdAqtG" alt=""><figcaption></figcaption></figure>

### Elevación de privilegios

Volvemos a enumerar posibles maneras de elevar privilegios. Lanzamo el comando "id" y listamos que la usuario "selena" pertenece al grupo "Docker". Posteriormente revisamos las imágenes de docker que tenemos disponibles y ejecutamos el comando que nos permitirá escalar privilegios con un shell como "root". &#x20;

```
id
docker images
```

<figure><img src="/files/l0w7wKcGmhImORHu9cUf" alt=""><figcaption></figcaption></figure>

Obtenemos una imagen de docker con un nombre un poco sospechoso, "privesc". Buscamos en [GTFOBins](https://gtfobins.github.io/gtfobins/docker/#shell) las posibles formas de elevar privilegios con las herramientas que tenemos hasta el momento.

<figure><img src="/files/ZJ2HHgc35GYP971D3Q88" alt=""><figcaption></figcaption></figure>

```
docker run -v /:/mnt --rm -it alpine chroot /mnt sh
```

<figure><img src="/files/MKguQSlQYNr1wxy60H3s" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/bIrucWdcMyHYzLyzf05Q" alt=""><figcaption></figcaption></figure>

Ya tendríamos finalizado el CTF Pwned1.

{% embed url="<https://www.youtube.com/watch?v=Ma6lCRZvGdw>" %}
