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-fragment-guest — Element Web v1.12.29 - Alto - Remoto - Sessione - frammento credenziali guest cancellano una sessione reale prima di whoami | Kitploit
Strumenti/GitHubGitHub/abraxas/element-fragment-guest
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebAutenticazioneLab e Pratica
GitHubabraxas/element-fragment-guest

element-fragment-guest

Element Web v1.12.29 - Alto - Remoto - Sessione - frammento credenziali guest cancellano una sessione reale prima di whoami

Vedi Repository
74 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-fragment-guest

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

element-fragment-guest

Element Web v1.12.29 - Element / New Vector

Classe: Distruzione della sessione Portata: Remota

Lifecycle.loadSession preferisce guest_user_id e guest_access_token dall'hash dell'URL rispetto a restoreSessionFromStorage. Gli ospiti sono abilitati per impostazione predefinita (enableGuest={!config.disable_guests}). Il config.json di app.element.io non imposta disable_guests. onTokenLoginCompleted rimuove solo i parametri SSO e OIDC. Non rimuove mai le chiavi guest. url_utils.ts commenta già che questi parametri del fragment sembrano inutilizzati. Eppure vincono comunque.

Chiunque riesca a far aprire a un utente autenticato un URL con hash contenente parametri guest del fragment lo disconnette e cancella la crittografia locale. Basta un token spazzatura. whoami non viene mai chiamato.

IDnessuna CVE al momento
CWECWE-384 / CWE-352 / CWE-613
CVSSAlto: 7.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H
ProdottoElement Web
Affettov1.12.29 tag v1.12.29 (2d90d6b7b601ecb9ccdf81239a43b4396b4b0c9e). Ospiti abilitati (predefinito).
Authattaccante non autenticato. La vittima deve aprire (o ricaricare) un URL.
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Cosa può fare un attaccante

Far aprire a un utente autenticato un URL con hash contenente parametri guest del fragment. Il client lo disconnette, cancella la crittografia locale e può collocarlo su un ospite controllato dall'attaccante. Si tratta di logout e cancellazione della crittografia. Non è furto del token reale. Non è RCE sul sistema operativo.

PrivilegioMetodo / sinkRicognizione / integrità / disponibilitàProvato in laboratorio o dedotto
Analizzare le credenziali guest dall'hashurl_utils.ts guest: { keys: ["guest_user_id", "guest_access_token"], location: "fragment" }Integrità della selezione della sessioneProvato in laboratorio. #/home?guest_user_id=...&guest_access_token=... è diventato guest_params. Solo la query string no.
Preferire il guest a una sessione non-guest memorizzataRamo guest-first di Lifecycle.loadSession, log Using guest access credentialsIntegritàProvato in laboratorio. Il @victim:example.org inserito non è stato ripristinato.
Cancellare localStorage, account IndexedDB, sessionStorage, cryptodoSetLoggedIn(..., clearStorageEnabled=true) poi clearStorage()Integrità / disponibilità della sessione localeProvato in laboratorio. crypto_empty=yes, token precedente sparito.
Saltare la validazione del tokenIl percorso guest non chiama mai /_matrix/client/v3/account/whoamiIntegritàProvato in laboratorio. whoami_called=no. Il token spazzatura not-a-real-token ha comunque cancellato tutto.
Persistere le credenziali guest dell'attaccantepersistCredentials dopo la cancellazioneIntegritàProvato in laboratorio. after_user=@x:example.org, after_token=not-a-real-token, mx_is_guest=true.
Fissare su un guest reale sull'HS predefinitoStessa persistenza se il token guest è validoIntegritàDedotto. Il laboratorio ha usato un token spazzatura, quindi nessun login su HS reale.
Continuare a farlo alla ricaricaLe chiavi guest restano nell'hash; onTokenLoginCompleted non le eliminaIntegritàDedotto dal pin app.tsx. Il laboratorio ha aperto l'URL una volta.

Escluso su questo residuo: rubare il token di accesso reale (viene eliminato, non esfiltrato). RCE / LPE sul sistema operativo (Desktop nodeIntegration: false, sandbox). SPA Element live (how=gadget). Query string ?guest_user_id= (solo fragment). disable_guests: true mantiene la sessione non-guest. Anche una loadSession corretta che ignora il guest quando esiste una sessione non-guest la mantiene.

Altri residui dello stesso pin: vector: lettera di unità Windows, Univention ICS javascript: href.

Come l'ho trovato

Ho fissato Element Web v1.12.29 dopo la release GitHub del 22 settembre 2026. Il loginToken SSO è solo nella query e viene rimosso dopo l'uso. Le chiavi guest restano nel fragment e vincono sul ripristino. Il commento in url_utils.ts è l'indizio: già dubitavano che queste chiavi fossero specificate.

Vicoli ciechi già registrati: trattare la query string ?guest_user_id= come il vettore (le chiavi vivono nell'hash); chiamarlo furto di token (il token reale viene eliminato, non inviato); aspettarsi disable_guests nella config di app.element.io (non è impostato). Una reverse shell. Teatro.

Laboratorio

Gadget delle funzioni del pin. Non un container Element Web live. how=gadget.

python3 element-fragment-guest-Abraxas-Labs.py

oppure

cd lab
./run.sh

Target solo http://127.0.0.1:19600. Progetto Compose element-fragment-guest. Lo stack viene smontato dopo l'esecuzione.

SUCCESS element-fragment-guest how=gadget guest-wipe=yes prior-kept=no garbage-token=yes disable-guests-keeps=yes ELEMENT-FRAGMENT-GUEST-WITNESS

La correzione

Ignorare i parametri guest del fragment quando esiste già una sessione non-guest. Validare il token guest con /_matrix/client/v3/account/whoami prima di clearStorage. Rimuovere guest_user_id e guest_access_token allo stesso modo in cui vengono rimossi i token SSO. Impostare disable_guests: true come predefinito per app.element.io ospitato.

Riferimenti

  • github.com/element-hq/element-web tag v1.12.29
  • Lifecycle.ts (loadSession guest-first)
  • url_utils.ts
  • app.tsx (enableGuest={!config.disable_guests})
  • Stesso pin: element-vector-drive-letter · element-ics-javascript
  • CWE-384

Licenza

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

Scarica lo strumento