
SEH-basierter Pufferüberlauf im Easy File Sharing Web Server 7.2, erreichbar über den Passwort-Wiederherstellungs-Endpunkt.
SEH-basierter Pufferüberlauf im Easy File Sharing Web Server 7.2, erreichbar über den Endpunkt zur Passwortwiederherstellung.
Dieses Repository wurde als Teil des Materials erstellt, das ich beim Unterrichten von Vulnerability Research und Exploit-Entwicklung verwende, insbesondere bei der Einführung in das Konzept von SEH (Structured Exception Handler)-Overflows und ROP (Return-Oriented Programming)-Chains.
Es steht im Zusammenhang mit meinem Vortrag „The Path That Leads to Your First CVE“. In diesem Vortrag erkläre ich, dass es verschiedene Einstiegspunkte in die Vulnerability Research gibt und dass das Studium öffentlich dokumentierter CVEs in Legacy-Software einer der zugänglichsten Wege für Anfänger ist.
Diese CVE wurde ausgewählt, weil sie ein vollständiges und realistisches Exploit-Szenario demonstriert:
Das Ziel ist es, diesen Fall als Sprungbrett zwischen einführenden Buffer-Overflow-Übungen und fortgeschritteneren Exploit-Entwicklungskonzepten zu nutzen.
Diese Schwachstelle betrifft Easy File Sharing Web Server 7.2, eine leichte Windows-Webserver-Anwendung, die häufig für einfaches Dateifreigeben verwendet wurde. Die Software wurde ohne Berücksichtigung moderner Sicherheitsmaßnahmen geschrieben. Was diesen Fall aus didaktischer Sicht besonders interessant macht, ist die Kombination der beteiligten Faktoren:
Diese Kombination macht CVE-2025-34096 zu einem hervorragenden Fall, um Exploit-Entwicklungstechniken in einem realistischen nicht authentifizierten Angriffsszenario zu vermitteln.
Easy File Sharing Web Server 7.2 ist eine leichte Windows-Anwendung, die zum Freigeben von Dateien über HTTP entwickelt wurde. Neben der grundlegenden Dateisuche und Benutzerkonten enthält sie eine Funktion zur Passwortwiederherstellung – ein Formular, in das Benutzer ihre E-Mail-Adresse eingeben können, um ihre vergessenen Anmeldedaten zu erhalten.
Dieses Formular sendet eine Anfrage an /sendemail.ghp. Der Handler, der das Feld „Email“ verarbeitet, kopiert den Wert direkt in einen Stack-Puffer fester Größe ohne Längenprüfung. Der Endpunkt erfordert keine Authentifizierung, sodass nichts zwischen einem entfernten Angreifer und dem verwundbaren Codepfad steht.
Wichtige technische Details:
Easy File Sharing Web Server verarbeitet HTTP-POST-Anfragen, die an /sendemail.ghp gerichtet sind, als Teil seiner E-Mail-Benachrichtigungsfunktion. Der von diesem Endpunkt akzeptierte Parameter „Email“ wird ohne Längenprüfung in einen lokalen Stack-Puffer kopiert.
Eine vereinfachte Version der verwundbaren Logik sieht wie folgt aus:
char email_buffer[256];
strcpy(email_buffer, user_input);
Da der Zielpuffer eine feste Größe hat und die Eingabelänge nicht validiert wird, führt das Senden einer ausreichend langen Zeichenfolge im Feld „Email“ dazu, dass die Kopie über das Ende des Puffers hinaus schreibt.
Wenn mehr Daten geschrieben werden, wird die Stack-Struktur beschädigt. Anders als bei einer einfachen Rücksprungadressen-Überschreibung erreicht der Überlauf die auf dem Stack gespeicherte Strukturierte Ausnahmebehandlungskette (SEH). Wenn aufgrund des beschädigten Stacks eine Ausnahme ausgelöst wird, durchläuft das Betriebssystem die SEH-Kette und übergibt die Kontrolle an die vom Angreifer kontrollierte Handler-Adresse.
Der Ablauf folgt daher der SEH-Überschreibungstechnik:
Dies macht die Schwachstelle komplexer zu exploitieren als eine einfache EIP-Überschreibung, aber auch repräsentativer für reale Szenarien.
Der Absturz kann reproduziert werden, indem eine lange Zeichenfolge im Parameter „Email“ einer POST-Anfrage an /sendemail.ghp gesendet wird. Es ist keine Authentifizierung erforderlich. Beispiel mit 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()
Bei Ausführung unter einem Debugger zeigt der Absturz eine beschädigte SEH-Kette und eine Zugriffsverletzung, was bestätigt, dass vom Benutzer kontrollierte Daten den Ausnahmehandler-Zeiger überschrieben haben.
Das Ziel dieses Repositorys ist es nicht nur, den Absturz zu demonstrieren, sondern auch den vollständigen Exploit-Prozess Schritt für Schritt zu durchlaufen, der Methodik folgend, die bei der Entwicklung realer SEH-basierter Exploits verwendet wird.
Um die Haupt-README übersichtlich zu halten, befinden sich die detaillierten Exploit-Notizen, Skripte und Debugger-Schritte im Ordner Vulnerability 📂 dieses Repositorys.
Dort finden Sie den vollständigen Arbeitsablauf, der zur Ausnutzung dieser CVE verwendet wurde, einschließlich: