Buffer overflow basato su SEH in Easy File Sharing Web Server 7.2, raggiungibile attraverso l'endpoint di recupero password.
Overflow del buffer basato su SEH in Easy File Sharing Web Server 7.2, raggiungibile tramite l'endpoint di recupero password.
Questo repository è stato creato come parte del materiale che utilizzo quando insegno la ricerca di vulnerabilità e lo sviluppo di exploit, in particolare quando introduco il concetto di overflow SEH (Structured Exception Handler) e catene ROP (Return-Oriented Programming).
È legato al mio talk "The Path That Leads to Your First CVE". In quel talk spiego che esistono diversi punti di ingresso nella ricerca di vulnerabilità e che studiare CVE pubblicamente documentate in software legacy è uno dei percorsi più accessibili per i principianti.
Questa CVE è stata scelta perché dimostra uno scenario di sfruttamento completo e realistico:
L'obiettivo è utilizzare questo caso come trampolino di lancio tra esercizi introduttivi di buffer overflow e concetti più avanzati di sviluppo di exploit.
Questa vulnerabilità colpisce Easy File Sharing Web Server 7.2, un'applicazione web server Windows leggera ampiamente utilizzata per la condivisione semplice di file. Il software è stato scritto senza tenere conto delle moderne mitigazioni di sicurezza. Ciò che rende questo caso particolarmente interessante dal punto di vista didattico è la combinazione di fattori coinvolti:
Questa combinazione rende CVE-2025-34096 un caso eccellente per insegnare tecniche di sviluppo di exploit in uno scenario di attacco non autenticato realistico.
Easy File Sharing Web Server 7.2 è un'applicazione Windows leggera costruita per condividere file tramite HTTP. Oltre alla navigazione di base dei file e agli account utente, include una funzionalità di recupero password, un modulo che consente agli utenti di inserire il proprio indirizzo email per ricevere le proprie credenziali dimenticate.
Tale modulo invia i dati a /sendemail.ghp. Il gestore che elabora il campo Email copia il valore direttamente in un buffer stack a dimensione fissa senza alcun controllo di lunghezza. L'endpoint non richiede autenticazione, quindi non c'è nulla che separi un attaccante remoto dal percorso di codice vulnerabile.
Dettagli tecnici chiave:
Easy File Sharing Web Server elabora richieste HTTP POST dirette a /sendemail.ghp come parte della sua funzionalità di notifica email. Il parametro Email accettato da questo endpoint viene copiato in un buffer stack locale senza alcun controllo di lunghezza.
Una versione semplificata della logica vulnerabile appare così:
char email_buffer[256];
strcpy(email_buffer, user_input);
Poiché il buffer di destinazione ha una dimensione fissa e la lunghezza dell'input non è validata, l'invio di una stringa sufficientemente lunga nel campo Email fa sì che la copia scriva oltre la fine del buffer.
Man mano che vengono scritti più dati, il layout dello stack viene corrotto. A differenza di una semplice sovrascrittura dell'indirizzo di ritorno, l'overflow raggiunge la catena del gestore delle eccezioni strutturate (SEH) memorizzata sullo stack. Quando viene attivata un'eccezione a causa dello stack corrotto, il sistema operativo percorre la catena SEH e trasferisce il controllo all'indirizzo del gestore controllato dall'attaccante.
Il flusso di sfruttamento segue quindi la tecnica di sovrascrittura SEH:
Questo rende la vulnerabilità più complessa da sfruttare rispetto a una semplice sovrascrittura di EIP, ma anche più rappresentativa degli scenari reali.
Il crash può essere riprodotto inviando una stringa lunga nel parametro Email di una richiesta POST a /sendemail.ghp. Non è richiesta autenticazione. Esempio utilizzando 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 eseguito sotto un debugger, il crash mostra una catena SEH corrotta e un'eccezione di accesso violato, confermando che dati controllati dall'utente hanno sovrascritto il puntatore al gestore delle eccezioni.
L'obiettivo di questo repository non è solo dimostrare il crash, ma anche illustrare passo dopo passo l'intero processo di sfruttamento, seguendo la metodologia utilizzata nello sviluppo di exploit SEH reali.
Per mantenere pulito il README principale, le note dettagliate sullo sfruttamento, gli script e i passaggi del debugger sono inseriti nella cartella Vulnerability 📂 di questo repository.
Lì troverai il flusso di lavoro completo utilizzato per sfruttare questa CVE, tra cui: