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
28 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

Write-up: https://abraxaslabs.tech/research/element-ics-javascript

element-ics-javascript

Element Web v1.12.29 - Element / New Vector

Classe: XSS Portata: Remota

Il modulo banner di Univention recupera il file ICS navigation.json, accetta il link di ogni voce come z.string() senza alcun controllo sullo schema, e Menu.tsx inserisce quella stringa in un <a href> con stile. La configurazione statica del menu usa z.url() per link_url. Il percorso ICS no. L'anteprima degli URL sullo stesso pin rifiuta già javascript: (previewFromBundle, GHSA-9r5h). Non è il default app.element.io. 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
Affettotag v1.12.29 v1.12.29 (2d90d6b7b601ecb9ccdf81239a43b4396b4b0c9e). Condizionato: 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 / sinkRicognizione / integrità / disponibilitàProvato in lab o dedotto
Renderizzare un <a href="javascript:…"> del menu del 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 clicLa vittima clicca la voce del menu (UI:R)IntegritàDedotto dal sink href. Il lab non ha simulato un clic nel browser né sottratto un token Matrix reale
Leggere l'access token Matrix / il crypto store (takeover dell'account)Script nell'origine contro localStorage / sessione IndexedDBRicognizione / integritàDedotto dalla XSS sull'origine di Element. La prova in lab è la stringa href
Top-navigate della scheda 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: default app.element.io (nessun banner Univention). OS RCE / LPE (Desktop nodeIntegration: false, sandbox, contextIsolation). XSS nell'HTML della timeline. javascript: nell'anteprima URL (GHSA-9r5h previewFromBundle richiede http:/https:). XSS nell'esportazione HTML (GHSA-wqmv). Token dei 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 set 2026. L'anteprima URL aveva già imparato http:/https: a sue spese. Il link ICS di Univention è ancora z.string(). La configurazione del menu statico usa z.url(). Il percorso di fetch non passa mai attraverso quel controllo.

Vicoli ciechi già registrati: trattare il default app.element.io come vittima (Univention è protetto da gate); trattare z.url() come allowlist di schemi (il costruttore URL accetta javascript:); gonfiare l'XSS al click fino a OS RCE. Una reverse shell. Teatro.

Lab

Gadget delle funzioni del pin più un mock ICS 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 al portale https è stato mantenuto.

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

o

cd lab
./run.sh

Prendi di mira solo http://127.0.0.1:19620. Progetto Compose element-ics-javascript. Lo stack viene smontato al termine dell'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

Consenti http: e https: sui link ICS allo stesso modo in cui fa previewFromBundle. Rifiuta javascript:, data: e altri schemi prima di href=. Applica il sandbox all'iframe silenzioso (sandbox="" o almeno senza allow-top-navigation). Non trattare z.url() come una allowlist di schemi.

Riferimenti

  • github.com/element-hq/element-web tag v1.12.29
  • navigation.ts
  • Menu.tsx
  • SilentLogin.tsx
  • Correlato corretto (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 laboratorio su loopback. Nessuna garanzia.

Scarica lo strumento