Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2002-1120 — Klassischer stack-basierter Pufferüberlauf im Savant Web Server 3.1, der die Remote-Speicherkorruption aus den frühen 2000er Jahren durch eine präparierte HTTP-Anfrage demonstriert. | Kitploit
Tools/GitHubGitHub/themalwareguardian/cve-2002-1120
SchwachstellenanalyseExploitationReverse EngineeringShellcodeDebuggerWebsicherheitFuzzingPenetrationstestsLernen & Bildung

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Payload-Entwicklung
Binary-Exploitation
GitHubthemalwareguardian/cve-2002-1120

CVE-2002-1120

Klassischer stack-basierter Pufferüberlauf im Savant Web Server 3.1, der die Remote-Speicherkorruption aus den frühen 2000er Jahren durch eine präparierte HTTP-Anfrage demonstriert.

Repository anzeigen
1vor 5 MonatenNoch nicht geprüft

🐞 CVE-2002-1120: Savant Web Server 3.1 - Stack-basierter Pufferüberlauf (Egghunter)

Klassischer Stack-basierter Pufferüberlauf im Savant Web Server 3.1, der eine Fernspeicherverfälschung aus den frühen 2000ern durch eine präparierte HTTP-Anfrage demonstriert (eine Sicherheitslücke von 2002, die von einem Anfänger mehr verlangt als die meisten Pufferüberlauf-CVEs aus dem Jahr 2025).




📑 Inhaltsverzeichnis

  • Warum dieses Repository existiert
  • Warum diese Sicherheitslücke interessant ist
  • Kontext und betroffene Software
  • Über die Sicherheitslücke
  • Auslösen des Absturzes
  • Ausnutzung



🎓 Warum dieses Repository existiert

Dieses Repository ist Teil des Materials, das ich beim Unterrichten von Memory Corruption Exploitation verwende (neben meiner regulären Arbeit unterrichte ich auch in verschiedenen Cybersicherheitskursen, wo ich helfe, die nächste Generation von Reverse Engineers auszubilden). Wenn ich im Unterricht Stack-basierte Pufferüberläufe behandle, arbeite ich mit realen Fällen statt mit Beispielen aus Spielzeug-Land, und dieser CVE ist einer, den ich speziell dann wieder hervorkrame, wenn ich Studenten herausfordern möchte, die bereits etwas Erfahrung mit grundlegenden EIP-Überschreibungen haben.

Der Grund ist, dass die Jahreszahl in einer CVE-Kennung nichts darüber aussagt, wie schwierig die Ausnutzung ist. Die meisten Studenten nehmen an, dass ältere CVEs einfacher sein müssen – ein einfacher Overflow, ein JMP ESP, fertig. Dieser hier beweist das Gegenteil. Einige CVEs, die ich aus dem Jahr 2025 unterrichte, sind grundlegend einfacher als dieser, weil die Sicherheitslückenklasse simpler ist oder die Einschränkungen geringer sind. CVE-2002-1120 erfordert das Verständnis von Dingen, die einige moderne Exploits nicht verlangen: warum bestimmte Opcodes in bestimmten Teilen der Anfrage nicht verwendet werden können, wie man einen bedingten Sprung konstruiert, der immer ausgelöst wird, wenn der unbedingte blockiert ist, wie man Shellcode ausliefert, wenn er nicht dort hinpasst, wo man ihn normalerweise platzieren würde, und wie ein Egghunter ein Platzproblem löst, das den Exploit sonst unmöglich machen würde.

Es ist der CVE, den ich zuweise, wenn ich sehen möchte, ob jemand wirklich versteht, was er tut.




💡 Warum diese Sicherheitslücke interessant ist

Diese Sicherheitslücke betrifft Savant 3.1, einen kostenlosen Windows-HTTP-Server aus dem Jahr 2002. Was sie 2025 noch studierenswert macht, ist nicht das Alter, sondern die Kombination von Einschränkungen, die sie einführt, und die Techniken, die zur Umgehung erforderlich sind:

  • Kein Platz nach EIP. Der nutzbare Puffer beträgt ~267 Bytes vor der Rücksprungadresse. Alles, was darüber hinausgeht, erreicht den verwundbaren Puffer nicht, daher kann Shellcode nicht an der üblichen Stelle nach EIP platziert werden.
  • Das HTTP-Methodenfeld ist ausführbar. Savant kopiert die Methode in den Speicher und führt sie aus. Die Bytes, die normalerweise GET buchstabieren, werden als Code behandelt, was bedeutet, dass ein Angreifer dort Opcodes platzieren kann, aber nur Opcodes, die einen strengen Filter für ungültige Zeichen überstehen.
  • Zwei separate Listen ungültiger Zeichen. URI und Methodenfeld haben unterschiedliche Filterlogiken in Savant. Beide müssen unabhängig voneinander analysiert werden. Die Methodenzone blockiert einen deutlich größeren Satz von Bytes als der URI.
  • Der unbedingte JMP ist ein ungültiges Zeichen. \xeb passiert den Filter der Methodenzone nicht. Ein bedingter Sprung, der immer ausgelöst wird, muss manuell aus drei Opcodes konstruiert werden: Laden eines Werts in ein Register, Vergleichen mit einem kleineren Wert und Springen, wenn das Ergebnis nicht kleiner oder gleich ist.
  • Der Shellcode passt nicht. Selbst wenn der Sprung funktioniert und die Ausführung im URI-Puffer landet, reichen ~264 Bytes nicht für eine Reverse Shell. Die eigentliche Nutzlast muss woanders hin – in den HTTP-Body, den Savant in einem Heap-Bereich getrennt vom Stack speichert – und ein Egghunter wird benötigt, um ihn zur Laufzeit zu finden.

Jede dieser Einschränkungen ist eine Lektion für sich.




Tool herunterladen
🔍 Kontext und betroffene Software

Savant ist ein kostenloser Open-Source-Windows-HTTP-Server, der ursprünglich dazu entwickelt wurde, jeden Desktop-Computer in einen Webserver zu verwandeln. Er lauscht auf TCP-Port 80 und verarbeitet standardmäßige HTTP-GET-Anfragen. Der Überlauf tritt im Handler auf, der den URI-Pfad in einen Stack-Puffer fester Größe kopiert, ohne dessen Länge zu validieren.

Wichtige technische Details:

  • Sicherheitslückentyp: Stack-basierter Pufferüberlauf
  • Betroffene Version: Savant Web Server 3.1
  • Betroffener Endpunkt: HTTP-GET-Anfrage
  • Verwundbare Komponente: URI-Pfadbehandlung im GET-Handler
  • Erforderliche Authentifizierung: Nein
  • Auswirkung: Remote-Codeausführung



⚠️ Über die Sicherheitslücke

Savant verarbeitet eingehende HTTP-GET-Anfragen und kopiert den URI-Pfad in einen Stack-Puffer fester Größe, ohne dessen Länge zu prüfen. Eine vereinfachte Version der verwundbaren Logik sieht so aus:

root@kitploit:~
char uri_buffer[270];

strcpy(uri_buffer, uri_path);

Senden einer GET-Anfrage mit einem URI von ungefähr 271 Bytes überschreibt die gespeicherte Rücksprungadresse auf dem Stack. Der Überlauf ist begrenzt: Das Senden von deutlich mehr führt zu einem Absturz, bei dem EIP nicht mehr kontrolliert wird, daher ist das nutzbare Fenster schmal.

Die Ausnutzung ist komplexer als eine standardmäßige EIP-Überschreibung aufgrund zweier zusätzlicher Eigenschaften des Servers: Das HTTP-Methodenfeld wird ebenfalls in den Speicher kopiert und ausgeführt, und der Body der HTTP-Anfrage wird in einem separaten Heap-Bereich anstelle des Stacks gespeichert (beide Eigenschaften werden zu wesentlichen Teilen der Exploit-Kette).




💥 Auslösen des Absturzes

Der Absturz kann durch Senden einer GET-Anfrage mit einem ausreichend langen URI reproduziert werden. Es ist keine Authentifizierung erforderlich. Beispiel mit Python:

root@kitploit:~
import socket

HOST = '127.0.0.1'
PORT = 80

payload = b"A" * 271

request = (
	b"GET /" + payload + b" HTTP/1.1\r\n"
	b"Host: 127.0.0.1\r\n"
	b"Connection: close\r\n"
	b"\r\n"
)

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, dass EIP mit vom Benutzer kontrollierten Daten überschrieben wurde:

root@kitploit:~
EIP = 41414141

was bestätigt, dass die gespeicherte Rücksprungadresse durch den Überlauf beschädigt wurde.




💣 Ausnutzung

Das Ziel dieses Repositorys ist es nicht nur, den Absturz zu demonstrieren, sondern den gesamten Ausnutzungsprozess Schritt für Schritt durchzugehen, einschließlich jeder Einschränkung, die diesen Fall schwieriger macht als eine standardmäßige EIP-Überschreibung, und jeder Entscheidung, die getroffen wurde, um diese zu umgehen.

Um die Haupt-README übersichtlich zu halten, befinden sich die detaillierten Ausnutzungsnotizen, Skripte und Debugger-Schritte im Ordner Vulnerability 📂 dieses Repositorys.

Dort finden Sie den vollständigen Workflow, der zur Ausnutzung dieser CVE verwendet wurde, einschließlich:

  • Fuzzing des GET-URI zur Identifizierung des Absturzfensters.
  • Manuelle Offset-Ermittlung (zyklische Muster können hier nicht verwendet werden).
  • Analyse der ungültigen Zeichen sowohl für die URI-Zone als auch für das HTTP-Methodenfeld getrennt.
  • Finden eines POP/RET-Gadgets in Savant.exe für die EIP-Überschreibung.
  • Bestätigen, dass die Ausführung nach Auslösen des Gadgets im Methodenfeld landet.
  • Erstellen eines bedingten JNLE-Sprungs, um vom Methodenfeld den URI-Puffer zu erreichen.
  • Lokalisieren des HTTP-Bodys im Heap und Messen des verfügbaren Platzes.
  • Platzieren eines Egghunters im URI-Puffer und des mit dem Ei markierten Shellcodes im HTTP-Body.