Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-33331 — Laboratorio locale che riproduce una XSS memorizzata nella generazione della documentazione OpenAPI di oRPC (CVE-2026-33331), con versioni vulnerabili e corrette per il confronto e un PoC autonomo. | Kitploit
Strumenti/GitHubGitHub/abhayclasher/cve-2026-33331
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebApprendimento e FormazioneLab e Pratica
GitHubabhayclasher/cve-2026-33331

CVE-2026-33331

Laboratorio locale che riproduce una XSS memorizzata nella generazione della documentazione OpenAPI di oRPC (CVE-2026-33331), con versioni vulnerabili e corrette per il confronto e un PoC autonomo.

Vedi Repository
4 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-33331 — XSS persistente nel plugin OpenAPI Reference di oRPC

CVE GHSA CWE-79 Patched

Laboratorio proof-of-concept per XSS persistente nella generazione della documentazione OpenAPI di orpc


Scopo

oRPC genera pagine di documentazione API a partire da una specifica OpenAPI. Prima della versione v1.13.9 inseriva la specifica direttamente in un tag <script> usando JSON.stringify() senza alcuna codifica HTML. Qualsiasi campo controllato da un attaccante, come , poteva chiudere quel tag prematuramente ed eseguire script.

info.description

Questo repository fornisce un laboratorio locale per riprodurre il bug, oltre a una versione corretta per il confronto.

Informazioni rapide

CampoValore
ID CVECVE-2026-33331
GHSAGHSA-7f6v-3gx7-27q8
CWECWE-79 (Neutralizzazione impropria dell'input durante la generazione di pagine web)
Prodottomiddleapi/orpc
Versioni interessateTutte le versioni precedenti alla v1.13.9
Versione correttav1.13.9
ScopertaAbhay Kumar (@abhayclasher)

Dettagli della vulnerabilità

Il codice vulnerabile in packages/openapi/src/plugins/openapi-reference.ts renderizza la specifica in questo modo:

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

JSON.stringify() produce JSON valido, ma non esegue l'escape di < o >. Il browser tratta comunque </script> come un tag HTML di chiusura, anche all'interno di un <script type="application/json">.

Un payload in info.description che innesca l'esecuzione:

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

Il browser vede:

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

Il primo </script> chiude il blocco. Tutto ciò che segue viene eseguito come JavaScript inline.

Impatto

  • Dirottamento della sessione tramite furto di cookie o token
  • Chiamate API arbitrarie effettuate per conto della vittima che visualizza la documentazione
  • Overlay di phishing renderizzati all'interno del dominio fidato della documentazione

Questo si applica quando un'applicazione costruisce specifiche OpenAPI a partire da input controllati dall'utente, che è esattamente il caso che oRPC abilita tramite le sue definizioni di router.

Requisiti di sistema

  • Node.js 18 o successivo
  • Docker (opzionale, per il laboratorio containerizzato)
  • 500 MB di spazio libero su disco

Configurazione

Opzione 1: Esecuzione diretta

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

Opzione 2: Esecuzione con Docker

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

Utilizzo

Dopo l'avvio del server, visita questi URL:

URLDescrizione
http://localhost:3000/docsPagina di documentazione vulnerabile — il payload XSS viene eseguito al caricamento
http://localhost:3000/docs/safeStessa pagina con la patch v1.13.9 applicata
http://localhost:3000/spec.jsonSpecifica OpenAPI JSON grezza

La versione vulnerabile attiverà un alert() al caricamento della pagina, confermando l'esecuzione dello script. La versione corretta renderizza la stessa specifica dannosa in modo sicuro — il payload viene visualizzato come testo semplice.

Puoi anche eseguire il PoC autonomo:

root@kitploit:~
cd poc
node exploit.js

Questo avvia un server minimale sulla porta 3000 che dimostra lo stesso bug senza il contesto completo dell'applicazione.

Come funziona

Flusso di rilevamento

root@kitploit:~
1. L'attaccante controlla un campo nella specifica OpenAPI (es. description)
2. oRPC genera l'HTML della documentazione con JSON.stringify(spec)
3. Il </script> nel payload chiude il tag <script> prematuramente
4. Il browser esegue tutto ciò che segue come JavaScript inline

La catena di attacco

root@kitploit:~
┌─────────────────────────────────────────────────────┐
│  1. Specifica dannosa creata:                        │
│                                                       │
│     info.description =                                │
│       "</script><script>alert('XSS')</script>"        │
│                                                       │
│  2. orpc incorpora la specifica nell'HTML:            │
│                                                       │
│     <script id="spec" type="application/json">        │
│     {"info":{"description":"</script>    <-- tag      │
│       <script>alert('XSS')</script>      <-- payload  │
│       "}}                                             │
│     </script>                                         │
│                                                       │
│  3. Il browser esegue alert('XSS')                    │
└─────────────────────────────────────────────────────┘

La correzione

La versione 1.13.9 introduce escapeJsonForHtml(), che sostituisce i caratteri sensibili all'HTML con escape Unicode prima di incorporare il JSON nel tag script:

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

Gli escape Unicode funzionano perché restano JSON valido — JSON.parse() ricostruisce la stringa originale — ma non appaiono mai come HTML al parser del browser.

La patch ha anche spostato la lettura del JSON da un attributo dataset.config del DOM (che si rompeva quando i valori contenevano parentesi) all'assegnazione diretta del JSON con escape a una variabile inline.

Visualizza il commit completo: 4f0efa8

Struttura del progetto

root@kitploit:~
CVE-2026-33331/
├── README.md               # Questo file
├── docker-compose.yml      # Configurazione del laboratorio Docker
├── app/
│   ├── Dockerfile          # Configurazione di build del container
│   ├── package.json        # Dipendenze Node.js
│   └── server.js           # Renderer della documentazione vulnerabile + corretta
└── poc/
    └── exploit.js          # Proof-of-concept minimale autonomo

Riferimenti

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

Segnalato da Abhay Kumar. Questo repository è destinato esclusivamente a uso educativo locale. Non distribuire il server vulnerabile su una rete pubblica.

Solo a scopo educativo — utilizzare in ambienti isolati

Scarica lo strumento