O que são inclusão de arquivo e execução de código arbitrário? - MalCare

Publicados: 2023-04-13

Inclusão de arquivo e execução de código arbitrário: no início deste mês, um site de passagens aéreas criado em WordPress foi hackeado, deixando expostos os dados pessoais de centenas de milhares de visitantes. Em uma postagem anterior sobre por que os hackers hackeam , discutimos todas as razões pelas quais os hackers hackeam, incluindo roubo de dados, envio de e-mails de spam, eles podem até usar técnicas de black hat SEO para classificar seus próprios produtos (leitura recomendada – pharma hack) , etc.

Aprender como os hackers invadem um site é a chave para evitá-los, e é por isso que listamos os ataques de hackers mais comuns feitos em sites do WordPress em um artigo anterior.

Quando falamos sobre ataques de hackers comuns, é muito provável que você pense em ataques de força bruta. Mas você sabia que a inclusão de arquivos e a execução arbitrária de código também é um dos ataques de hackers mais comuns feitos nos sites do WordPress. Neste post vamos nos aprofundar um pouco mais sobre esses ataques com o objetivo de entendê-los em detalhes.

Para entender como funcionam esses ataques, a primeira coisa que você deve saber é que envolve arquivos PHP.Você deve estar se perguntando por quê? É porque os ataques de inclusão de arquivo e execução de código arbitrário envolvem o uso de arquivos PHP.

Mas o que é um arquivo PHP? Pense em um armário de cozinha. Dentro do armário, há uma série de itens como açúcar, sal, temperos, utensílios, etc. Cada um desses itens tem uma função para servir na cozinha.Um arquivo PHP é um gabinete e os códigos dentro dos arquivos são os itens que permitem a execução de determinadas funções desejadas pelo hacker.Esta é a razão pela qual os hackers preferem fazer upload de um arquivo PHP em vez de qualquer outro arquivo, como um arquivo JPEG ou PDF. Arquivos JPEG e PDF não são executáveis, ou seja, hackers não podem usar esses arquivos para executar qualquer função. Pode-se apenas lê-los (ou seja, visualizá-los). Eles não podem ser usados ​​para fazer alterações em um site invadido.

Um hacker que carregou um arquivo PHP no servidor do seu site pode usá-lo para fazer qualquer coisa em seu site. E é por isso que os arquivos PHP são usados ​​para executar ataques de inclusão de arquivo e execução de código arbitrário.

O que é um ataque de inclusão de arquivo?

A melhor maneira de entender um ataque complexo a um site como esse é exemplificar um cenário real. Digamos que você administre um site para sua instituição e o site se chame college.com. Você permite que alguns alunos acessem o site para que possam postar fotos tiradas durante um evento recente da faculdade. Alguém usa indevidamente o acesso que você deu e carrega um arquivo PHP malicioso (chamado hack.php) no site. O objetivo é obter o controle dos sites da faculdade. Quando o aluno carrega o arquivo PHP malicioso, por padrão, ele é armazenado na pasta Upload.Qualquer pessoa que conheça a estrutura básica do WordPresssabe para onde vai um arquivo carregado.

Inclusão de arquivo e execução de código arbitrário
Qualquer upload que não seja um tema ou plug-in é armazenado na pasta Upload. Quem conhece a estrutura do WordPress sabe onde fica a pasta Upload. Para quem não sabe, é aqui que está localizada a pasta Upload. Abra o Gerenciador de Arquivos no Web Hosting cPanel e vá para Public_html > wp-content > uploads.

O arquivo age como uma porta permitindo que o hacker interaja com o arquivo remotamente. Observe que o hacker ainda não tem controle sobre o site, ele apenas tem uma janela para comunicação. Para facilitar o entendimento, imagine que a pessoa A queira ir para um país onde não é permitido. Então ele envia um agente, a pessoa B. A pessoa A é o hacker, o país representa o site da faculdade e a pessoa B é o arquivo hack.php.

Arquivos PHP carregados no site da faculdade —-> O arquivo é armazenado no servidor do site

A pessoa B é treinada apenas em algumas coisas e só pode fazer muito. Portanto, a pessoa A precisa instruí-la sobre o que fazer a seguir. Na mesma linha, o arquivo PHP cria uma janela de comunicação e aguarda mais comandos do hacker.

Vamos supor que o hack.php seja criado de forma a permitir o upload de mais arquivos para o site. O hacker cria um arquivo (chamado control.php) que ele enviará usando hack.php que já está presente no servidor do site. O novo arquivo – control.php permitirá que o hacker tenha acesso total ao site. Ele usa a janela fornecida pelo arquivo hack.php para carregar o arquivo control.php no site.Este processo de upload do arquivo control.php usando um arquivo (hack.php) que já está presente no servidor do site é chamado de Inclusão de Arquivo Local .

Um ótimo exemplo de Execução de arquivo local é a vulnerabilidade observada no plug-in WordPress Easy Forms for MailChimp (v 6.0.5.5) . Usando o plug-in MailChimp, os proprietários de sites podem adicionar diferentes tipos de formulários ao site WordPress. Uma vulnerabilidade permitia que hackers carregassem um arquivo PHP em um servidor de site usando o formulário MailChimp.Depois que o arquivo é armazenado no servidor do site, os hackers conseguem se comunicar com eles e executar códigos que permitem controlar o servidor ou danificar o site de várias maneiras.

Aqui está um cenário: o site da faculdade tem um firewall instalado e, portanto, o hacker não pode carregar o control.php. Embora ele não possa carregar outro arquivo separado, ele pode 'incluir' um arquivo. Isso significa que ele pode inserir um arquivo dentro do arquivo hack.php que já está presente no servidor do site da faculdade. Se o hacker conseguisse carregar o arquivo control.php, o servidor do site leria o arquivo e executaria o código interno que permitiria ao hacker fazer o que quisesse. Mas como ele não pode carregar o arquivo, ele terá que encontrar outras maneiras de fazer o servidor ler o arquivo control.php. Um caminho criado por um hacker está disponível online e o servidor do site da faculdade deve ser capaz de lê-lo. Portanto, o hacker cria um caminho e os disponibiliza online para que o servidor do site da faculdade possa lê-lo. O servidor então começa a executar o código adquirido do caminho e, como o código é escrito de forma a permitir ao hacker o controle total do site, o hack agora controla o site da faculdade. Esse processo de fazer o servidor ler um arquivo remoto é chamado de inclusão de arquivo remoto.

Inclusão de arquivo e execução de código arbitrário
Um exemplo que demonstra como ocorreu o ataque TimThumb

O caso de vulnerabilidade TimThumb é um exemplo popular de inclusão de arquivo remoto. TimThumb era um plugin do WordPress que permitia a fácil edição de imagens em um site WordPress. Ele permitia que qualquer pessoa usasse imagens obtidas de sites de compartilhamento de imagens como imgur.com e flickr.com. TimThumb reconhece imgur como um site válido (ou lista de permissões). Os hackers que se aproveitam desse critério criam arquivos com URLs que mencionam um site válido como http://www.imgur.com.badsite.com.Quando eles carregam um arquivo malicioso com um URL como o que mencionamos acima, o plug-in é levado a acreditar que o arquivo vem de um site válido.E permite carregar um arquivo malicioso no servidor do site. Todo esse processo de incluir um arquivo malicioso de fora do servidor do site aproveitando uma vulnerabilidade em um plugin é a Inclusão Remota de Arquivos. Depois que o arquivo PHP malicioso é armazenado no servidor do site, os hackers podem se comunicar com ele para executar as ações desejadas.

O que é um ataque de execução de código arbitrário?

Agora que sabemos o que é inclusão remota e local de arquivos, vamos seguir em frente e tentar entender o que é Execução Arbitrária de Código. A inclusão de arquivo e a inclusão de código arbitrário estão inter-relacionadas. Em qualquer caso de inclusão de arquivos, o objetivo dos hackers é executar um código arbitrário no site. Vamos voltar ao exemplo de inclusão de arquivo local onde o hacker carregou um hack.php no site da faculdade e depois carregou control.php com a ajuda de hack.php.A frase Arbitrary Code Execution é uma descrição da capacidade de um hacker de executar qualquer comando de sua escolha em um site invadido.Assim que os arquivos PHP (hack.php e control.php) estiverem no servidor do site, o hacker pode executar qualquer código que desejar. Esse processo de execução de qualquer código dos arquivos que ele carregou é chamado de execução de código arbitrário.
Os hacks são complexos. Neste post, tentamos explicar da forma mais simples, mas se houver uma parte que não faz sentido para você, pedimos aos nossos leitores que nos escrevam . No próximo post, discutiremos outro ataque de hack comum em um site WordPress chamado Cross-Site Scripting (XSS). Dê uma olhada.