Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
element-ics-javascript — Element Web v1.12.29 - Alto - Remoto - XSS - Il link navigation.json di Univention ICS diventa un href javascript: nel menu | Kitploit
Strumenti/GitHubGitHub/abraxas/element-ics-javascript
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration Testing
GitHubabraxas/element-ics-javascript

element-ics-javascript

Element Web v1.12.29 - Alto - Remoto - XSS - Il link navigation.json di Univention ICS diventa un href javascript: nel menu

Vedi Repository
3 giorni 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

Abraxas Labs - element-ics-javascript

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  element-ics-javascript

element-ics-javascript

Element Web v1.12.29 - Element / New Vector

Classe: XSS Portata: Remota

Il modulo banner di Univention recupera l'ICS navigation.json, accetta il link di ogni voce come z.string() senza controllo di schema, e Menu.tsx inserisce quella stringa in un <a href> stilizzato. La configurazione statica del menu usa z.url() per link_url. Il percorso ICS no. L'anteprima URL sullo stesso pin rifiuta già javascript: (previewFromBundle, GHSA-9r5h). Questo non è app.element.io predefinito. Richiede modules/banner con menu.type univention, più un ICS di cui il deploy si fida.

Chiunque possa modificare quel navigation.json inserisce javascript: o data:. Un utente autenticato che apre il menu del banner e clicca la voce esegue script sull'origine di Element.

IDnessuna CVE al momento
CWECWE-79 / CWE-20
CVSSMedio: 6.8 CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:H/I:H/A:N
ProdottoElement Web
Affettov1.12.29 tag v1.12.29 (2d90d6b7b601ecb9ccdf81239a43b4396b4b0c9e). Vincolato: banner Univention + ICS.
AuthOperatore ICS / compromissione ICS. La vittima è un utente autenticato che clicca la voce del menu.
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Cosa può fare un attaccante

Compromettere o gestire l'ICS di cui il deploy di Element si fida. Inserire un URL javascript: (o data:) in navigation.json. Attendere che un utente autenticato apra il menu del banner e clicchi la voce. Si tratta di takeover dell'account Matrix: access token, crypto store, la sessione. Non è RCE a livello di OS. Il desktop ha ancora nodeIntegration disattivato e una sandbox.

PrivilegioMetodo / sinkRecon / integrità / disponibilitàProvato in lab o dedotto
Renderizzare un <a href="javascript:…"> del menu banner sull'origine di ElementICS navigation.json entries[].link -> navigationToConfig link_url -> Menu.tsx LinkButton href={link.link_url}Integrità del DOM del menuProvato in lab. Il link ICS fittizio javascript:ELEMENT-ICS-JAVASCRIPT-WITNESS è diventato quell'href. Il link https del portale era comunque renderizzato
Eseguire script come origine di Element dopo un clickLa vittima clicca la voce del menu (UI:R)IntegritàDedotto dal sink href. Il lab non ha simulato un click del browser né sottratto un token Matrix reale
Leggere l'access token Matrix / crypto store (takeover dell'account)Script nell'origine contro localStorage / sessione IndexedDBRecon / integritàDedotto dalla XSS sull'origine di Element. Il witness del lab è la stringa href
Navigare la tab di Element verso una pagina di phishingiframe non sandboxed di SilentLogin.tsx src={new URL("silent", icsUrl)}IntegritàProvato in lab che l'iframe non ha sandbox. Top-navigation non esercitata
Stesso inserimento tramite data:z.string() accetta qualsiasi schemaIntegritàDedotto. Il lab ha inserito solo javascript:

Chiuso su questo pin: app.element.io predefinito (nessun banner Univention). RCE a livello di OS / LPE (Desktop nodeIntegration: false, sandbox, contextIsolation). XSS HTML della timeline. javascript: nell'anteprima URL (GHSA-9r5h previewFromBundle richiede http:/https:). XSS nell'export HTML (GHSA-wqmv). Token media dei widget (GHSA-3jm3). Il banner statico link_url: z.url() è configurazione dell'operatore, non ICS; z.url() inoltre non è una allowlist http/https.

Residui dello stesso pin: fragment guest wipe, vector: Windows drive-letter.

Come l'ho trovato

Ho fissato Element Web v1.12.29 dopo la release GitHub del 22 settembre 2026. L'anteprima URL aveva già imparato http:/https: a sue spese. Il link ICS di Univention è ancora z.string(). La configurazione statica del menu usa z.url(). Il percorso di fetch non passa mai da quel controllo.

Vicoli ciechi già registrati: trattare app.element.io predefinito come vittima (Univention è vincolato); trattare z.url() come allowlist di schemi (il costruttore URL accetta javascript:); gonfiare la XSS da click a RCE a livello di OS. Una reverse shell. Teatro.

Lab

Gadget delle funzioni del pin più un ICS fittizio navigation.json. Non un container Element Web live. how=gadget. Applicando la allowlist http/https dell'anteprima URL (previewFromBundle) l'href javascript è stato eliminato e il link https del portale mantenuto.

python3 element-ics-javascript-Abraxas-Labs.py

oppure

cd lab
./run.sh

Target solo http://127.0.0.1:19620. Progetto Compose element-ics-javascript. Lo stack viene smontato dopo l'esecuzione.

SUCCESS element-ics-javascript how=gadget href-scheme=javascript menu-a-javascript=yes allowlist-rejects=yes silent-no-sandbox=yes ELEMENT-ICS-JAVASCRIPT-WITNESS

La correzione

Applicare una allowlist http: e https: sul link ICS nello stesso modo in cui fa previewFromBundle. Rifiutare javascript:, data: e altri schemi prima di href=. Sandboxare l'iframe silenzioso (sandbox="" o almeno senza allow-top-navigation). Non trattare z.url() come allowlist di schemi.

Riferimenti

  • github.com/element-hq/element-web tag v1.12.29
  • navigation.ts
  • Menu.tsx
  • SilentLogin.tsx
  • Vicino patchato (non questo href): GHSA-9r5h previewFromBundle
  • Stesso pin: element-fragment-guest · element-vector-drive-letter
  • CWE-79

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo lab su loopback. Nessuna garanzia.

Scarica lo strumento