Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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-2021-38297-Go-wasm-Replication — Bildungs-PoC, das CVE-2021-38297 nachbildet, einen Go-WASM-Pufferüberlauf, der zu gespeichertem XSS führt. Enthält Einrichtung der verwundbaren Anwendung, Schritte zur Exploit-Reproduktion und Anleitung zum Patchen für Sicherheitsforschung. | Kitploit
Tools/GitHubGitHub/paras98/cve-2021-38297-go-wasm-replication
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitCTFPapers & ForschungLernen & BildungBinary-ExploitationLabs & Praxis
GitHubparas98/cve-2021-38297-go-wasm-replication

CVE-2021-38297-Go-wasm-Replication

Bildungs-PoC, das CVE-2021-38297 nachbildet, einen Go-WASM-Pufferüberlauf, der zu gespeichertem XSS führt. Enthält Einrichtung der verwundbaren Anwendung, Schritte zur Exploit-Reproduktion und Anleitung zum Patchen für Sicherheitsforschung.

Repository anzeigen
47vor 2 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

🚨 Ausnutzung von CVE-2021-38297: Eine Reise in den GO-Wasm-Pufferüberlauf 🚨

🌐 Überblick über die Schwachstelle 🌐

WebAssembly (WASM) 🌍, ein hochmodernes binäres Befehlsformat, ermöglicht die nahtlose Ausführung von Hochsprachen wie C, C++, Rust und GO in modernen Webbrowsern. Die Entdeckung von CVE-2021-38297 🚩 offenbarte jedoch einen kritischen Fehler im Kompilierungs- und Ladevorgang von GO für GO-kompilierte WASM-Binärdateien. Diese Schwachstelle, die im von GO bereitgestellten JavaScript-WASM-Loader (wasm_exec.js) gefunden wurde, erlaubte die uneingeschränkte Aufnahme von Daten in das argv-Argument. Da argv im linearen Speicher von WASM gespeichert wird, konnten böswillige Akteure dies möglicherweise ausnutzen, um den linearen Speicher des GO-kompilierten WASM-Programms mit einer übermäßig großen argv-Eingabe zu überschreiben, was zu unvorhersehbaren und potenziell gefährlichen Ergebnissen führte. Diese Schwachstelle war in GO-Versionen vor 1.17.2 ein erhebliches Problem. Zusammenfassend:

  1. Das Frontend rendert jeden Beitrag und seine Kommentare.
  2. Während des Renderns lädt das GO-WASM-Modul und verarbeitet Kommentare über die Variable argv sowie Beiträge an der Speicheradresse 0x5000.
  3. Funktionen wie toLeetSpeak und processSharedVar werden jeweils für Kommentar- und Beitragsinhalte verwendet.

💻 Verwundbare Anwendung: Vuln-Twitter 💻

In unserem Proof of Concept stellen wir „Vuln-Twitter“ vor, eine nachgeahmte soziale Medienplattform, die nutzergenerierte Inhalte über Beiträge und Kommentare ermöglicht. Vuln-Twitter nutzt einen Node.js-Webserver und SQLite zur Datenspeicherung; das Frontend verwendet einfaches JavaScript zusammen mit einem GO-WASM-Modul namens wordprocessor.wasm für das dynamische Rendern von Inhalten. Dieses Modul enthält notably Methoden wie toLeetSpeak, die Benutzereingaben für ein ansprechendes Benutzererlebnis in stilisiertes „LeetSpeak“ umwandeln. Vuln twitter UI

Ausnutzung des Pufferüberlaufs

Unsere Untersuchung offenbart einen kritischen Angriffspunkt während der Inhalts-Rendering-Phase, in der jeder Kommentar vom GO-WASM-Modul transformiert wird. Ein speziell präparierter, übermäßig großer Kommentar kann die Schwachstelle auslösen und zu einem Pufferüberlauf führen, der den ursprünglichen Beitragsinhalt manipuliert – ein klassischer Stored-XSS-Angriffsvektor. Diese Schwachstelle unterstreicht nicht nur das Potenzial für böswillige Datenmanipulation, sondern auch die umfassenderen Auswirkungen sicherer Programmierpraktiken im Kontext der Webentwicklung und von WASM-Anwendungen. Siehe den Codeabschnitt, der dies umsetzt:

Rendering Logic

WASM-Diagramm des linearen Speichers beim Rendern eines Kommentars:

Rendering Logic memory Exploitation flow

Reproduktion des Exploits

Für Enthusiasten und Forscher, die diese Schwachstelle weiter untersuchen möchten, stellen wir detaillierte Schritte zur Reproduktion der Exploit-Umgebung mit einer bestimmten verwundbaren GO-Version bereit. Dieser praxisnahe Ansatz fördert ein tieferes Verständnis der Mechanik der Schwachstelle und möglicher Gegenmaßnahmen. Hinweis: Zur Reproduktion müssen Sie die Go-Version go1.17.1 lokal installieren, die in diesem Szenario die verwundbare Version ist. Sie können die offizielle Go-Dokumentation zur Installation bestimmter Go-Versionen konsultieren.

Lassen Sie uns nun versuchen, das obige Szenario zu reproduzieren:

  1. Klonen Sie zunächst das Projekt, um die gesamte Anwendung einzurichten: git clone [email protected]:gkrishnan724/CVE-2021-38297.git && cd vuln-twitter
  2. Führen Sie npm install aus, um alle Abhängigkeiten zu installieren.
  3. Führen Sie npm run resetDB aus, das die Datenbank mit einigen Beiträgen und Kommentaren initialisiert.
  4. Führen Sie npm run dev aus, das den lokalen Server startet. Öffnen Sie localhost:3000 in einem Browser und Sie sollten eine Anmeldeseite sehen.

Melden Sie sich nun mit einem böswilligen Konto an, verwenden Sie die Anmeldedaten Benutzername: I_CANT_HACK, Passwort: hacker. Nach der Anmeldung sollten Sie den Feed mit einigen Beiträgen sehen können.

Dieser Beitrag scheint ziemlich interessant zu sein:

Amazon: ready 4 black friday? https://www.amazon.com/blackfriday

Was wäre, wenn wir mit der obigen Technik in der Lage wären, den Beitrag von Amazon.com zu überschreiben, um auf einen böswilligen Link zu verweisen?

Siehe die Datei exploit.txt – sie enthält den Kommentar, der mit einer Auffüllung von „A"s gefüllt ist, sodass wir alles bis zur Adresse 0x5000 überschreiben. Am Ende sehen Sie den Text ready for black friday? https://evil.com/blackfriday. Wenn wir diesen Text kopieren und als Kommentar zu dem obigen Beitrag hinzufügen, sollten wir in der Lage sein, den ursprünglichen Beitrag mit dem obigen Text zu überschreiben.

Probieren Sie es selbst aus und sehen Sie :) Exploit

🛠️ Patchen und Gegenmaßnahmen 🛠️

In Anerkennung der Schwere dieser Schwachstelle skizzieren wir auch eine umfassende Patch-Strategie, die eine aktualisierte und sichere Version von GO verwendet, um das Risiko zu mindern. Dieser Abschnitt dient als Leitfaden für Entwickler und Systemadministratoren, um ihre Anwendungen gegen solche Schwachstellen zu härten, und betont die Bedeutung regelmäßiger Software-Updates und wachsamer Sicherheitspraktiken.

In dieser Anwendung habe ich auch ein Patch-Skript bereitgestellt, das eine neuere Version von Go verwendet:

  1. Führen Sie das Ziel npm run patchServer aus.

Dies sollte die Go-Datei mit der neuen Version neu kompilieren und den Server mit der Patch-Version starten.

Sie sollten nun feststellen, dass der Beitrag nicht überschrieben wird. Wenn Sie die Konsole beobachten, sehen wir stattdessen einen Fehler: Argument length too long. Patch

💡 Fazit und Überlegungen 💡

Unsere Reise durch die Ausnutzung und Minderung von CVE-2021-38297 bietet wertvolle Einblicke in die Herausforderungen und Chancen, die sich durch die Integration von Hochsprachen in Webumgebungen über WASM ergeben. Sie regt eine kritische Prüfung der Sicherheitspraktiken in der Softwareentwicklung an und drängt zu einem proaktiven Ansatz beim Schwachstellenmanagement und zur Übernahme sicherer Codierungsstandards. Basierend auf unserem Verständnis glauben wir, dass das GO-Linearspeicher-Layout unten dargestellt ist:

GO memory layout

🎓 Präsentation und akademischer Beitrag 🎓

Tool herunterladen