NT-2026.10.05 DOSSIÊ

BURP SUITE: BYPASS DE VALIDAÇÃO FRACA DE INPUT PARA UPLOAD DE MALWARE

Walkthrough técnico de bypass de validação client-side de upload de arquivos usando Burp Suite — interceptação de requisição POST, manipulação de Content-Type (text/x-python → image/jpeg) e upload de script malicioso em DVWA security medium.

Capa editorial Burp Suite: bypass de validação de upload — interceptação de POST, manipulação de Content-Type, upload de malware

Introdução e Contexto de Validação de Input

Em geral, a solução para muitos ataques de injeção em aplicações web é a ‘Validação de Input’. A validação de input garante que apenas o tipo de entrada para o qual a aplicação foi desenvolvida seja aceito, e não comandos maliciosos ou scripts disfarçados de dados. Algumas aplicações permitem ou até incentivam o upload de foto, avatar ou outra representação (pense em Facebook, Twitter, LinkedIn, outras redes sociais ou site da sua empresa/escola). O que impede atacantes de simplesmente fazer upload de um script malicioso? Geralmente a resposta é verificar e validar o tipo de entrada antes de permitir o upload. Em um post anterior, conseguimos fazer upload de um shell malicioso no site DVWA quando não havia validação de input. Neste tutorial, faremos bypass de validação fraca de input e ainda faremos upload de um script malicioso.

Diagrama conceitual sobre validação de input como defesa contra injeção
Figura 1. Validação de input como defesa principal contra ataques de injeção em aplicações web.

Ambiente: Kali Linux, Burp Suite e OWASP BWA

Para começar, inicie seu Kali Linux e abra o Burp Suite. Configure o Burp Suite para interceptar suas requisições e respostas do navegador. Configure também o proxy no navegador (Mozilla Firefox) para usar o Burp Suite como proxy.

Configuração do navegador para usar proxy do Burp Suite
Figura 3. Configuração do Mozilla Firefox para usar proxy do Burp Suite.
Interface do Burp Suite configurado como proxy interceptando tráfego
Figura 2. Burp Suite configurado para interceptar requisições e respostas do navegador.
Burp Suite interceptando requisição de upload de arquivo
Figura 4. Burp Suite interceptando a requisição POST de upload de arquivo.

Configuração do DVWA Security Medium

Agora, inicie o servidor OWASP Broken Web App (BWA) e acesse a aplicação DVWA e faça login (admin/password). Após logar no DVWA, vá ao botão no canto inferior esquerdo e defina a segurança do DVWA para ‘medium’. Certifique-se de que a interceptação está ligada no proxy do Burp Suite.

DVWA login e configuração de security level medium
Figura 5. Login no DVWA e configuração do nível de segurança para ‘medium’.
Configuração de security level medium no DVWA
Figura 6. Alteração do nível de segurança do DVWA para ‘medium’ com interceptação ativada no Burp.

Tentativa de Upload de Arquivo Malicioso

Clique no botão de upload. Imagine que esta é sua página do LinkedIn ou perfil do Twitter — em ambos os casos, espera-se que você faça upload de uma foto ou avatar. O aplicativo diz ‘Choose an image to upload:’. Em vez de uma imagem, tente fazer upload de um script Python malicioso. Criei um arquivo chamado ‘malicious_python_script.py’ e tentei fazer upload. O aplicativo rejeitou nosso script malicioso porque usa validação de input para assegurar que o arquivo seja uma imagem. Podemos burlar essa validação?

Interface de upload do DVWA para envio de arquivo
Figura 7. Interface de upload do DVWA solicitando imagem para upload.
Rejeição do upload por validação client-side detectando Content-Type text/x-python
Figura 9. Aplicação rejeita o script Python pois validação client-side identifica Content-Type ‘text/x-python’.
Seleção de arquivo Python malicioso para upload
Figura 8. Tentativa de upload de script Python malicioso nomeado ‘malicious_python_script.py’.

Interceptação e Análise da Requisição POST no Burp Suite

Vamos ao Burp Suite e olhemos o POST capturado pela interceptação. Nas linhas 19 e 20, ele identificou o nome do arquivo e o tipo como ‘text/x-python’. Muito bom, está correto. O app foi desenhado para permitir apenas upload de imagens e por isso rejeitou nosso arquivo malicioso.

Requisição POST interceptada no Burp Suite mostrando Content-Type text/x-python
Figura 10. Requisição POST interceptada: Burp identifica filename e Content-Type ‘text/x-python’ nas linhas 19-20.

Bypass: Manipulação de Content-Type no Burp Suite

Vamos à requisição POST interceptada e editá-la. A validação de input ocorreu dentro do formulário no client-side. Como interceptamos no caminho para o servidor, podemos manipular o código para refletir que é um arquivo ‘seguro’ antes de enviar ao servidor. Fazemos isso alterando o Content-Type na linha #20 para ‘image/jpeg’. Assim o servidor aceitará o arquivo, acreditando que é um JPEG.

Manipulação do Content-Type de text/x-python para image/jpeg no Burp Suite
Figura 11. Modificação do Content-Type na linha 20 de ‘text/x-python’ para ‘image/jpeg’ para burlar validação.

Encaminhamento da Requisição Modificada e Upload Bem-sucedido

Agora, no Burp Suite, encaminhe o POST para o servidor. O arquivo é enviado com sucesso e nosso script Python está pronto para ser executado e fazer seu trabalho malicioso! O arquivo foi enviado com sucesso e nosso script Python está pronto para ser executado.

Upload bem-sucedido do script Python disfarçado como JPEG
Figura 12. Servidor aceita o arquivo após manipulação do Content-Type para ‘image/jpeg’; script Python pronto para execução.

Conclusão: Limitações da Validação Client-Side

Em geral, validação de input é a resposta para o problema de ataques de injeção em aplicações web. Neste caso, a aplicação web só fazia validação de input no client-side e, portanto, o atacante pode manipular a resposta POST no Burp Suite para editar o tipo de arquivo e fazer o servidor aceitar nosso conteúdo malicioso. Validação server-side robusta (magic bytes, whitelist, antivírus) é indispensável para uploads seguros.