Buffer overflow baseado em SEH no Easy File Sharing Web Server 7.2, acessível através do endpoint de recuperação de senha.
Estouro de buffer baseado em SEH no Easy File Sharing Web Server 7.2, acessível através do endpoint de recuperação de senha.
Este repositório foi criado como parte do material que uso ao ensinar pesquisa de vulnerabilidades e desenvolvimento de exploits, particularmente ao introduzir o conceito de estouros de SEH (Structured Exception Handler) e cadeias ROP (Return-Oriented Programming).
Ele está relacionado à minha palestra "O Caminho que Leva ao Seu Primeiro CVE". Nessa palestra, explico que existem diferentes pontos de entrada na pesquisa de vulnerabilidades e que estudar CVEs publicamente documentadas em softwares legados é um dos caminhos mais acessíveis para iniciantes.
Este CVE foi escolhido porque demonstra um cenário de exploração completo e realista:
O objetivo é usar este caso como um trampolim entre exercícios introdutórios de estouro de buffer e conceitos mais avançados de desenvolvimento de exploits.
Esta vulnerabilidade afeta o Easy File Sharing Web Server 7.2, um leve aplicativo de servidor web Windows que foi amplamente utilizado para compartilhamento simples de arquivos. O software foi escrito sem considerar mitigações de segurança modernas. O que torna este caso particularmente interessante do ponto de vista didático é a combinação de fatores envolvidos:
Essa combinação torna o CVE-2025-34096 um excelente caso para ensinar técnicas de desenvolvimento de exploits em um cenário realista de ataque não autenticado.
O Easy File Sharing Web Server 7.2 é um leve aplicativo Windows construído para compartilhar arquivos via HTTP. Além da navegação básica de arquivos e contas de usuário, ele inclui um recurso de recuperação de senha, um formulário que permite aos usuários inserir seu endereço de e-mail para receber suas credenciais esquecidas.
Esse formulário envia para /sendemail.ghp. O manipulador que processa o campo Email copia o valor diretamente para um buffer de pilha de tamanho fixo sem verificação de comprimento. O endpoint não requer autenticação, então não há nada entre um atacante remoto e o caminho de código vulnerável.
Detalhes técnicos principais:
O Easy File Sharing Web Server processa requisições HTTP POST direcionadas a /sendemail.ghp como parte de seu recurso de notificação por e-mail. O parâmetro Email aceito por este endpoint é copiado para um buffer de pilha local sem qualquer verificação de comprimento.
Uma versão simplificada da lógica vulnerável é assim:
char email_buffer[256];
strcpy(email_buffer, user_input);
Como o buffer de destino tem um tamanho fixo e o comprimento da entrada não é validado, enviar uma string suficientemente longa no campo Email faz com que a cópia escreva além do final do buffer.
À medida que mais dados são escritos, o layout da pilha se corrompe. Diferente de uma simples sobrescrita de endereço de retorno, o estouro atinge a cadeia do Structured Exception Handler (SEH) armazenada na pilha. Quando uma exceção é acionada como resultado da pilha corrompida, o sistema operacional percorre a cadeia SEH e transfere o controle para o endereço do manipulador controlado pelo atacante.
O fluxo de exploração, portanto, segue a técnica de sobrescrita de SEH:
Isso torna a vulnerabilidade mais complexa de explorar do que uma simples sobrescrita de EIP, mas também mais representativa de cenários do mundo real.
A falha pode ser reproduzida enviando uma string longa no parâmetro Email de uma requisição POST para /sendemail.ghp. Nenhuma autenticação é necessária. Exemplo usando Python:
import socket
HOST = '127.0.0.1'
PORT = 80
request = (
'POST /sendemail.ghp HTTP/1.1\r\n'
'Email=' + 'A' * 5000 + '&getPassword=Get+Password'
).encode('utf-8')
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send(request)
s.close()
Quando executado sob um depurador, a falha mostra uma cadeia SEH corrompida e uma violação de acesso, confirmando que dados controlados pelo usuário sobrescreveram o ponteiro do manipulador de exceção.
O objetivo deste repositório não é apenas demonstrar a falha, mas também percorrer o processo completo de exploração passo a passo, seguindo a metodologia usada no desenvolvimento de exploits baseados em SEH reais.
Para manter o README principal limpo, as notas detalhadas de exploração, scripts e etapas do depurador estão na pasta Vulnerability 📂 deste repositório.
Lá você encontrará o fluxo de trabalho completo usado para explorar este CVE, incluindo: