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
2il y a 8 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

Analyse : https://abraxaslabs.tech/research/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 comme 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 l'instance par défaut app.element.io. Cela nécessite modules/banner avec menu.type défini sur univention, ainsi qu'un ICS auquel le déploiement fait confiance.

Quiconque peut modifier ce navigation.json y place 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 de l'ICS. La victime est un utilisateur connecté qui clique sur l'élément du menu.
LicenceGNU Affero GPL v3.0
Labo127.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. Il s'agit d'une prise de contrôle du compte Matrix : jeton d'accès, stockage cryptographique, la session. Ce n'est pas une RCE au niveau de l'OS. Le client de bureau conserve nodeIntegration désactivé et un bac à sable.

PrivilègeMéthode / sinkReconnaissance / intégrité / disponibilitéProuvé en labo 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 labo. Le lien ICS simulé javascript:ELEMENT-ICS-JAVASCRIPT-WITNESS est devenu ce href. Le lien HTTPS du portail é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 labo n'a pas déclenché de clic dans un navigateur ni volé de jeton Matrix réel
Lire le jeton d'accès Matrix / le stockage cryptographique (prise de contrôle du compte)Script dans l'origine vs localStorage / session IndexedDBReconnaissance / intégritéDéduit du XSS sur l'origine Element. Le témoin du labo 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 labo que l'iframe n'a pas de sandbox. La navigation de premier niveau n'a pas été exercée
Même injection via data:z.string() accepte n'importe quel schémaIntégritéDéduit. Le labo n'a injecté que javascript:

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

Restes du même pin : effacement de l'invité fragment, lettre de lecteur Windows vector:.

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 du menu statique 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 protégé par un accès conditionnel) ; traiter z.url() comme une liste d'autorisation de schémas (le constructeur URL accepte javascript:) ; gonfler un XSS au clic en OS RCE. Un reverse shell. Du théâtre.

Labo

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

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

ou

cd lab
./run.sh

Ciblez uniquement http://127.0.0.1:19620. Composez le projet 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=. Isoler l'iframe silencieuse dans un bac à sable (sandbox="" ou au minimum sans allow-top-navigation). Ne pas considérer z.url() comme une liste d'autorisation 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 épinglage : element-fragment-guest · element-vector-drive-letter
  • CWE-79

Licence

Télécharger l’outil