0

Vulnerabilidades PHP

Érika Santos
Érika Santos

A popularidade da linguagem PHP na Web motivou atacantes a compreender como explorar, por exemplo, funções, e entradas (inputs). A lista do que pode ser explorado sobre um alvo é ainda maior que isso.

Algumas versões do PHP foram declaradamente marcadas como inseguras. Fazem parte da lista, por exemplo, as versões 5.6, 7.0, 7.1 e 7.2. Tais versões não recebem suporte de segurança e podem ser expostas a vulnerabilidades não corrigidas.

E não só Apache, mas vulnerabilidades também foram encontradas no PHP 7 com Nginx e php-fpm habilitado.

Não foi fornecido texto alternativo para esta imagem

Confira a lista atualizada de versões não suportadas: https://www.php.net/eol.php

Entre as funções exploradas, estão exec, eval e shell_exec.

Por que se preocupar com isso?

Alguns motivos:

  1. RCE

O atacante injeta código de uma determinada linguagem em uma aplicação, para que seja interpretado pelo servidor.

No caso da linguagem PHP, um exemplo de trecho de código seria:

<?php system($_GET['comando']); ?>.

Se bem-sucedido, esse tipo de ataque permite a execução de comandos para exploração de arquivos, diretórios e muito mais.

Por isso é muito importante verificar atualizações, efetuar as configurações corretas e definir procedimentos de segurança. Seria desastroso perder ou mesmo ter informações vazadas.

Utilizando a função shell_exec: <?php echo shell_exec('cd / && ls && cat flag_dacc60f2348d.txt '); ?>.

Para quem tem familiaridade com Linux é fácil notar que cd muda de diretório, ls lista, arquivos ou diretórios e cat exibe o conteúdo de um arquivo.

Um dos softwares mais populares para explorar essa vulnerabilidade é o BurpSuite. Há uma versão profissional, e outra, gratuita.

Não foi fornecido texto alternativo para esta imagem

2. LFI (Local File Inclusion)

Esse tipo de ataque demanda que um script malicioso seja carregado no servidor de destino, para que seja então executado. Tive um bom exemplo de como isso pode ser perigoso, por conta de uma questão ocorrida com um amigo. Seu servidor foi atacado, e uma web shell carregada dentro da aplicação, permitindo controle remoto por parte do atacante. Uma shell funciona como interface entre usuário e sistema operacional. Para a web, é quase a mesma definição.

3. RFI (Remote File Inclusion)

É parecido com o LFI, mas nesse caso não é necessário carregar o script no servidor destino. O atacante pode simplesmente carregar o script malicioso em outro servidor (remoto) e depois incluí-lo no alvo.

Novamente, entradas de usuário não sanitizadas facilitam muito essas práticas.

Como se proteger

Verifique se está utilizando as opções corretas para validação de datas, e-mail e outros;

Construa testes, de modo a verificar o código, nível de segurança, e o que deve ser corrigido;

Defina políticas de acesso, evite que qualquer usuário configure o interpretador PHP do servidor;

Não tenha segurança demais sobre sua aplicação, já que um atacante pode, em teoria, inserir os dados que quiser;

Busque aderir a uma política de segurança, e não abandone essa questão. Infelizmente, um grande número de empresas deixa suas aplicações desprotegidas, e com isso se tornam suscetíveis a ataques.

Espero que tenha gostado do artigo. Até a próxima!

0
0

Comentários (0)

Web Developer e Gerente de Projetos na SPN ALL. Frase de Apresentação: seja diferente todos os dias, seja melhor.

Brasil