Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

Os servidores da Web hospedam os arquivos (páginas da Web, imagens, vídeos, formulários, etc.) que compõem seu aplicativo da Web e fornecem esses arquivos quando alguém visita seu site. Alguns servidores são mais avançados e também controlam quanto acesso os visitantes da web têm. Eles podem impedir que visitantes regulares acessem contas de outros usuários ou painéis administrativos. Embora os servidores da Web sejam eficientes no que fazem - e o fazem com bastante segurança - os invasores podem explorar erros que surgem de erro humano ou lógica falha em como um servidor atende aos arquivos que hospeda.

O que é um ataque LFI?

Um ataque de invasão de arquivo local (LFI) ocorre quando invasores exploram vulnerabilidades em como um servidor da Web armazena, atende, valida ou controla o acesso a seus arquivos. Essa vulnerabilidade é comum em sites baseados em PHP.

instagram viewer

Ao contrário de muitas formas de ataques cibernéticos em que os invasores dependem de malware para corromper um aplicativo, os invasores em LFIs dependem principalmente de truques inteligentes e linhas curtas de código. Isso raramente requer ferramentas sofisticadas ou scripts complexos; os ataques geralmente acontecem no navegador da web. O truque mais comum que os invasores usam é modificar a string de URL com código, caminhos de arquivo ou nomes de arquivo.

Como acontecem os ataques LFI?

Os ataques LFI geralmente acontecem em quatro estágios.

Primeiro, o invasor identifica um site PHP executando um aplicativo Web vulnerável, geralmente executando um código básico na URL do navegador para ver se o aplicativo Web (ou seja, o site) lida com o comando. Pense nisso como pressionar combinações de teclas em seu controlador de jogo para desbloquear um ovo de Páscoa - digamos, por exemplo, pressionar a tecla para baixo para entrar em túneis no Super Mario. Mas os comandos que os atacantes executam nos ataques LFI são mais consistentes do que verificar todos os túneis no Super Mario.

Um aplicativo ou servidor da Web que foi configurado incorretamente ou não validou as entradas executará o código malicioso. A partir daqui, o hacker pode obter o acesso e o privilégio de que precisa para ler arquivos vulneráveis ​​ou carregar arquivos maliciosos no servidor.

A maioria dos ataques LFI resulta no acesso do invasor a informações confidenciais. A possibilidade de fazer upload de malware raramente é bem-sucedida porque não há garantia de que o aplicativo da Web salvará o arquivo no mesmo servidor em que existe a vulnerabilidade LFI. Geralmente, esse é o caso se o aplicativo da Web estiver em um ambiente multiservidor.

Portanto, se a vulnerabilidade LFI existir no servidor que hospeda as imagens, mas não no servidor que armazena credenciais ou senhas de usuário, o invasor só teria acesso a arquivos de imagem nesse servidor vulnerável. Independentemente disso, eventos cibernéticos como o ataque ao LastPass mostram que os hackers podem causar estragos com o nível de acesso aparentemente mais insignificante.

Como prevenir ataques LFI

Os ataques LFI são bastante comuns, de acordo com o Projeto de segurança de aplicativos da Web abertos (OWASP). Compreensivelmente, os hackers favoreceriam esse ataque, pois, como W3Techs relatórios, quase oito em cada 10 sites executam PHP como uma linguagem de programação do lado do servidor - uma abundância de vítimas, por assim dizer. É possível prevenir um ataque LFI adotando as melhores práticas de segurança na web.

Lista de permissões de arquivos do servidor público

Os aplicativos da Web geralmente usam caminhos de arquivo como entradas de URL. Os hackers podem explorar esse sistema de arquivamento alterando a parte da URL que funciona como um caminho de arquivo. Por exemplo, um invasor pode alterar https://dummywebsite.com/?module=contact.php para https://dummywebsite.com/?module=/etc/passwd. Um servidor vulnerável com filtragem ruim e lógica defeituosa exibirá o conteúdo do arquivo armazenado no caminho /etc/passwd.

Obviamente, os hackers usam variações de nomes de arquivo comuns e combinações de caracteres de consulta para aumentar as chances de um ataque bem-sucedido. O objetivo é induzir o aplicativo da Web a executar um script ou exibir os arquivos em um servidor da Web.

Você pode bloquear essa vulnerabilidade criando uma lista de permissões de documentos públicos em seu servidor e instruindo o aplicativo da Web a desconsiderar as consultas de qualquer outro documento ou caminho de arquivo. Portanto, se um invasor tentar manipular o URL para solicitar ou executar códigos solicitando um privado, receberá uma página de erro.

Teste as vulnerabilidades com frequência

Você pode usar ferramentas de digitalização da web para localizar e corrigir vulnerabilidades que podem expor você a ataques LFI. Os scanners de aplicativos da Web são ferramentas automatizadas que rastreiam seu aplicativo como um invasor e o alertam sobre possíveis vulnerabilidades. Existem vários scanners da Web de código aberto, como OpenVAS e Wireshark, mas a maioria dos scanners de vulnerabilidade é um software proprietário e requer planos pagos para uso.

Mas, é claro, você não está obtendo um scanner da web apenas para ataques LFI. Essas ferramentas também procuram vulnerabilidades de segurança mais amplas, como inclusão de arquivo remoto, cross-site scripting, injeção de SQL e configurações de servidor insatisfatórias. Então, eles valem a pena.

Restringir os privilégios do visitante do site

Os hackers geralmente executam ataques LFI com sucesso porque os aplicativos da Web não conseguem compartimentalizar os privilégios do usuário e, ao fazer isso, permitem que os visitantes acessem arquivos que deveriam ser visíveis apenas para os administradores. Essa medida funciona como uma lista de permissões: configure seu aplicativo da web e servidor para que eles sirvam arquivos públicos e desconsiderem solicitações não autorizadas quando um visitante interage com o aplicativo da web. Isso é especialmente importante para consultas a caminhos de arquivo contendo arquivos confidenciais.

Para isso, pode ser necessário impedir que os caminhos de arquivo sejam modificados diretamente. O aplicativo da web só deve servir documentos de uma lista de caminhos codificados. Além disso, configure o aplicativo da Web para processar solicitações com concatenação de caminho dinâmico (as URLs devem conter caracteres alfanuméricos) em vez de funções base64 ou bin2hex.

Se você está pensando em colocar nomes de arquivos na lista negra, não faça isso. Os hackers geralmente têm uma lista crescente de nomes de arquivos que podem usar para executar um ataque LFI. Além disso, é praticamente impossível (e uma perda de tempo colossal) colocar na lista negra uma lista de fontes em constante crescimento de ataque.

Use um ambiente multi-servidor

Um ambiente multiservidor permite isolar documentos importantes e confidenciais de arquivos públicos, reduzindo assim o risco em caso de violação. Servidores dedicados são menos vulneráveis ​​a ataques LFI porque, embora trabalhem juntos, suas configurações diferem.

Além dessa segurança, múltiplos servidores também são confiáveis ​​(com menores riscos de indisponibilidade), rápidos e eficientes. É certo que usar um ambiente multiservidor não é econômico se o seu site for pequeno. Nesse caso, considere dividir o acesso de seu aplicativo da web aos dados entre um banco de dados para dados privados e um servidor para arquivos públicos.

Você deve se preocupar com ataques LFI?

Existe a possibilidade de um ataque LFI, especialmente se seu site for executado em PHP, mas você pode reduzir sua exposição configurando aplicativos e servidores da Web de acordo com as práticas recomendadas de segurança da Web.

Além disso, você deve considerar fazer verificações de segurança de rotina para encontrar vulnerabilidades. As coisas quebram o tempo todo, especialmente quando a arquitetura do site se torna complexa. As ferramentas de que você precisa para se proteger são automatizadas e muitas não exigem uma configuração elaborada ou conhecimento técnico avançado.