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-ics-javascript — Element Web v1.12.29 - Élevé - À distance - XSS - Le lien navigation.json d'Univention ICS devient un href de menu javascript: | Kitploit
Outils/GitHubGitHub/abraxas/element-ics-javascript
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'Intrusion
GitHubabraxas/element-ics-javascript

element-ics-javascript

Element Web v1.12.29 - Élevé - À distance - XSS - Le lien navigation.json d'Univention ICS devient un href de menu javascript:

Voir le dépôt
il 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-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 Portée : Distante

Le module de bannière Univention récupère le fichier ICS navigation.json, accepte le link de chaque entrée en tant que z.string() sans vérification de schéma, et Menu.tsx place cette chaîne dans un <a href> stylisé. La configuration statique du menu utilise z.url() pour link_url. Le chemin ICS ne le fait pas. L'aperçu d'URL sur le même commit rejette déjà javascript: (previewFromBundle, GHSA-9r5h). Il ne s'agit pas de app.element.io par défaut. Cela nécessite modules/banner avec menu.type univention, plus un ICS auquel le déploiement fait confiance.

Quiconque peut modifier ce navigation.json injecte javascript: ou data:. Un utilisateur connecté qui ouvre le menu de la bannière et clique sur l'élément exécute du script sur l'origine Element.

IDpas encore de CVE
CWECWE-79 / CWE-20
CVSSMoyen : 6.8 CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:H/I:H/A:N
ProduitElement Web
Affectév1.12.29 tag v1.12.29 (2d90d6b7b601ecb9ccdf81239a43b4396b4b0c9e). Conditionné : bannière Univention + ICS.
AuthOpérateur ICS / compromission ICS. La victime est un utilisateur connecté qui clique sur l'élément du menu.
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

Ce qu'un attaquant peut faire

Compromettre ou exploiter l'ICS auquel le déploiement Element fait confiance. Placer une URL javascript: (ou data:) dans navigation.json. Attendre qu'un utilisateur connecté ouvre le menu de la bannière et clique sur l'élément. C'est une prise de contrôle de compte Matrix : jeton d'accès, stockage crypto, la session. Ce n'est pas une RCE système. Le bureau a toujours nodeIntegration désactivé et un bac à sable.

PrivilègeMéthode / sinkReconnaissance / intégrité / disponibilitéProuvé en lab ou déduit
Rendre un <a href="javascript:…"> de menu de bannière sur l'origine ElementICS navigation.json entries[].link -> navigationToConfig link_url -> Menu.tsx LinkButton href={link.link_url}Intégrité du DOM du menuProuvé en lab. Le lien ICS simulé javascript:ELEMENT-ICS-JAVASCRIPT-WITNESS est devenu ce href. Le lien du portail https était toujours rendu
Exécuter du script en tant qu'origine Element après un clicLa victime clique sur l'élément du menu (UI:R)IntégritéDéduit du sink href. Le lab n'a pas déclenché de clic navigateur ni volé un jeton Matrix réel
Lire le jeton d'accès Matrix / le stockage crypto (prise de contrôle de compte)Script dans l'origine contre localStorage / IndexedDB de sessionReconnaissance / intégritéDéduit du XSS sur l'origine Element. Le témoin du lab est la chaîne href
Naviguer l'onglet Element vers une page de phishingiframe non sandboxée de SilentLogin.tsx src={new URL("silent", icsUrl)}IntégritéProuvé en lab que l'iframe n'a pas de sandbox. La navigation supérieure n'a pas été exercée
Même injection via data:z.string() accepte n'importe quel schémaIntégritéDéduit. Le lab n'a injecté que javascript:

Fermé sur ce commit : app.element.io par défaut (pas de bannière Univention). RCE système / LPE (Desktop nodeIntegration: false, sandbox, contextIsolation). XSS HTML de Timeline. javascript: dans l'aperçu d'URL (GHSA-9r5h previewFromBundle exige http:/https:). XSS d'export HTML (GHSA-wqmv). Jeton média de widget (GHSA-3jm3). La bannière statique link_url: z.url() est une configuration opérateur, pas un ICS ; z.url() n'est pas non plus une liste blanche http/https.

Restes du même commit : fragment guest wipe, vector: Windows drive-letter.

Comment je l'ai trouvé

J'ai épinglé Element Web v1.12.29 après la publication GitHub du 22 septembre 2026. L'aperçu d'URL avait déjà appris http:/https: à ses dépens. Le link ICS d'Univention est toujours z.string(). La configuration statique du menu utilise z.url(). Le chemin de récupération ne passe jamais par cette vérification.

Fausses pistes déjà consignées : traiter app.element.io par défaut comme la victime (Univention est conditionné) ; traiter z.url() comme une liste blanche de schémas (le constructeur URL accepte javascript:) ; gonfler le XSS au clic en RCE système. Un reverse shell. Du théâtre.

Lab

Gadget des fonctions du commit plus un ICS simulé navigation.json. Pas un conteneur Element Web réel. how=gadget. L'application de la liste blanche http/https de l'aperçu d'URL (previewFromBundle) a supprimé le href javascript et conservé le lien du portail https.

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

ou

cd lab
./run.sh

Cible uniquement http://127.0.0.1:19620. Projet Compose element-ics-javascript. La stack est démontée après l'exécution.

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

Le correctif

Autoriser http: et https: sur le link ICS de la même manière que previewFromBundle. Rejeter javascript:, data: et les autres schémas avant href=. Sandboxer l'iframe silencieuse (sandbox="" ou au moins sans allow-top-navigation). Ne pas traiter z.url() comme une liste blanche de schémas.

Références

  • github.com/element-hq/element-web tag v1.12.29
  • navigation.ts
  • Menu.tsx
  • SilentLogin.tsx
  • Correctif voisin (pas ce href) : GHSA-9r5h previewFromBundle
  • Même commit : element-fragment-guest · element-vector-drive-letter
  • CWE-79

Licence

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

Télécharger l’outil