Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
element-fragment-guest — Element Web v1.12.29 - Élevé - À distance - Session - fragment guest creds wipe a real session before whoami | Kitploit
Outils/GitHubGitHub/abraxas/element-fragment-guest
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebAuthentificationLabs et Pratique
GitHubabraxas/element-fragment-guest

element-fragment-guest

Element Web v1.12.29 - Élevé - À distance - Session - fragment guest creds wipe a real session before whoami

Voir le dépôt
7il y a 3 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

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 : Destruction de session Portée : Distante

Lifecycle.loadSession privilégie guest_user_id et guest_access_token issus du fragment d'URL plutôt que restoreSessionFromStorage. Les invités sont activés par défaut (enableGuest={!config.disable_guests}). Le config.json d'app.element.io ne définit pas disable_guests. onTokenLoginCompleted ne supprime que les paramètres SSO et OIDC. Il ne supprime jamais les clés invité. url_utils.ts commente déjà que ces paramètres de fragment semblent inutilisés. Ils l'emportent quand même.

Quiconque peut amener un utilisateur connecté à ouvrir une URL avec des paramètres de fragment invité le déconnecte et efface la cryptographie locale. Un jeton bidon suffit. whoami n'est jamais appelé.

IDpas encore de CVE
CWECWE-384 / CWE-352 / CWE-613
CVSSÉlevé : 7.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H
ProduitElement Web
Affectév1.12.29 tag v1.12.29 (2d90d6b7b601ecb9ccdf81239a43b4396b4b0c9e). Invités activés (par défaut).
Authattaquant non authentifié. La victime doit ouvrir (ou recharger) une URL.
LicenceGNU Affero GPL v3.0
Labo127.0.0.1 uniquement

Ce qu'un attaquant peut faire

Amener un utilisateur connecté à ouvrir une URL avec des paramètres de fragment invité. Le client le déconnecte, efface la cryptographie locale et peut le placer sur un invité contrôlé par l'attaquant. Il s'agit d'une déconnexion et d'un effacement cryptographique. Ce n'est pas un vol du vrai jeton. Ce n'est pas une RCE système.

PrivilègeMéthode / sinkReconnaissance / intégrité / disponibilitéProuvé en labo ou déduit
Analyser les identifiants invité depuis le fragmenturl_utils.ts guest: { keys: ["guest_user_id", "guest_access_token"], location: "fragment" }Intégrité de la sélection de sessionProuvé en labo. #/home?guest_user_id=...&guest_access_token=... est devenu guest_params. La chaîne de requête seule ne l'a pas fait.
Privilégier l'invité sur une session non-invité stockéeBranche invité-prioritaire de Lifecycle.loadSession, journal Using guest access credentialsIntégritéProuvé en labo. @victim:example.org préchargé n'a pas été restauré.
Effacer localStorage, compte IndexedDB, sessionStorage, cryptodoSetLoggedIn(..., clearStorageEnabled=true) puis clearStorage()Intégrité / disponibilité de la session localeProuvé en labo. crypto_empty=yes, jeton précédent disparu.
Contourner la validation du jetonLe chemin invité n'appelle jamais /_matrix/client/v3/account/whoamiIntégritéProuvé en labo. whoami_called=no. Le jeton bidon not-a-real-token a quand même tout effacé.
Persister les identifiants invité de l'attaquantpersistCredentials après l'effacementIntégritéProuvé en labo. after_user=@x:example.org, after_token=not-a-real-token, mx_is_guest=true.
Fixer sur un vrai invité sur le HS par défautMême persistance si le jeton invité est valideIntégritéDéduit. Le labo a utilisé un jeton bidon, donc pas de connexion HS réelle.
Continuer à le faire au rechargementLes clés invité restent dans le fragment ; onTokenLoginCompleted ne les supprime pasIntégritéDéduit du pin app.tsx. Le labo a ouvert l'URL une fois.

Écarté sur ce reste : voler le vrai jeton d'accès (il est supprimé, pas exfiltré). RCE système / LPE (Desktop nodeIntegration: false, sandbox). SPA Element en direct (how=gadget). Chaîne de requête ?guest_user_id= (fragment uniquement). disable_guests: true conserve la session non-invité. Un loadSession corrigé qui ignore l'invité lorsqu'une session non-invité existe la conserve aussi.

Autres restes du même pin : vector: lettre de lecteur Windows, Univention ICS javascript: href.

Comment je l'ai trouvé

J'ai épinglé Element Web v1.12.29 après la publication GitHub du 22 septembre 2026. Le loginToken SSO est uniquement en chaîne de requête et supprimé après usage. Les clés invité restent dans le fragment et l'emportent sur la restauration. Le commentaire dans url_utils.ts est l'indice : ils doutaient déjà que ces clés soient spécifiées.

Fausses pistes déjà consignées : traiter la chaîne de requête ?guest_user_id= comme le vecteur (les clés vivent dans le fragment) ; qualifier cela de vol de jeton (le vrai jeton est supprimé, pas envoyé) ; s'attendre à disable_guests dans la config d'app.element.io (il n'est pas défini). Un reverse shell. Du théâtre.

Labo

Gadget des fonctions du pin. Pas un conteneur Element Web réel. how=gadget.

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

ou

cd lab
./run.sh

Cible uniquement http://127.0.0.1:19600. Projet Compose element-fragment-guest. La pile est démontée après l'exécution.

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

Le correctif

Ignorer les paramètres de fragment invité lorsqu'une session non-invité existe déjà. Valider le jeton invité avec /_matrix/client/v3/account/whoami avant clearStorage. Supprimer guest_user_id et guest_access_token de la même manière que les jetons SSO sont supprimés. Définir disable_guests: true par défaut pour app.element.io hébergé.

Références

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

Licence

GNU Affero GPL v3.0. Voir LICENSE. Labo en boucle locale uniquement. Aucune garantie.

Télécharger l’outil