
Element Web v1.12.29 - عالي - عن بُعد - XSS - رابط Univention ICS navigation.json يصبح javascript: menu href
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · element-ics-javascript
Element Web v1.12.29 - Element / New Vector
الفئة: XSS الوصول: عن بُعد
تقوم وحدة banner الخاصة بـ Univention بجلب ICS navigation.json، وتقبل link لكل مدخل كـ z.string() دون التحقق من المخطط، ويضع Menu.tsx تلك السلسلة على <a href> منسّق. يستخدم إعداد القائمة الثابت z.url() لـ link_url. مسار ICS لا يفعل ذلك. معاينة URL على نفس الإصدار ترفض بالفعل javascript: (previewFromBundle، GHSA-9r5h). هذا ليس app.element.io الافتراضي. يحتاج إلى modules/banner مع menu.type بقيمة univention، بالإضافة إلى ICS يثق به النشر.
أي شخص يمكنه تغيير navigation.json يزرع javascript: أو data:. مستخدم مسجّل الدخول يفتح قائمة banner وينقر على العنصر يشغّل سكربت على أصل Element.
| ID | لا يوجد CVE بعد |
| CWE | CWE-79 / CWE-20 |
| CVSS | متوسط: 6.8 CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:H/I:H/A:N |
| المنتج | Element Web |
| المتأثر | v1.12.29 وسم v1.12.29 (2d90d6b7b601ecb9ccdf81239a43b4396b4b0c9e). مقيّد: Univention banner + ICS. |
| المصادقة | مشغّل ICS / اختراق ICS. الضحية مستخدم مسجّل الدخول ينقر على عنصر القائمة. |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1 فقط |
اختراق أو تشغيل ICS الذي يثق به نشر Element. ضع رابط javascript: (أو data:) في navigation.json. انتظر حتى يفتح مستخدم مسجّل الدخول قائمة banner وينقر على العنصر. هذا استيلاء على حساب Matrix: رمز الوصول، مخزن التشفير، الجلسة. ليس RCE على نظام التشغيل. لا يزال سطح المكتب لديه nodeIntegration معطّل و sandbox.
| الصلاحية | الطريقة / الهدف | الاستطلاع / السلامة / التوفر | مُثبت مختبريًا أو مُستنتج |
|---|---|---|---|
عرض <a href="javascript:…"> في قائمة banner على أصل Element | ICS navigation.json entries[].link -> navigationToConfig link_url -> Menu.tsx LinkButton href={link.link_url} | سلامة DOM للقائمة | مُثبت مختبريًا. رابط ICS وهمي javascript:ELEMENT-ICS-JAVASCRIPT-WITNESS أصبح ذلك href. رابط بوابة https لا يزال يُعرض |
| تشغيل سكربت كأصل Element بعد النقر | الضحية ينقر على عنصر القائمة (UI:R) | السلامة | مُستنتج من هدف href. لم يقم المختبر بتنفيذ نقرة متصفح أو سرقة رمز Matrix حي |
| قراءة رمز وصول Matrix / مخزن التشفير (الاستيلاء على الحساب) | سكربت داخل الأصل مقابل جلسة localStorage / IndexedDB | الاستطلاع / السلامة | مُستنتج من XSS على أصل Element. شاهد المختبر هو سلسلة href |
| توجيه تبويب Element إلى صفحة تصيّد | SilentLogin.tsx iframe غير معزول src={new URL("silent", icsUrl)} | السلامة | مُثبت مختبريًا أن الـ iframe لا يحتوي على sandbox. لم يتم اختبار التوجيه العلوي |
نفس الزرع عبر data: | z.string() يقبل أي مخطط | السلامة | مُستنتج. المختبر زرع javascript: فقط |
مغلق على هذا الإصدار: app.element.io الافتراضي (لا يوجد Univention banner). RCE على نظام التشغيل / LPE (سطح المكتب nodeIntegration: false، sandbox، contextIsolation). XSS في HTML للجدول الزمني. javascript: في معاينة URL (GHSA-9r5h previewFromBundle يتطلب http:/https:). XSS في تصدير HTML (GHSA-wqmv). رمز وسائط Widget (GHSA-3jm3). link_url: z.url() في banner الثابت هو إعداد المشغّل، وليس ICS؛ z.url() أيضًا ليس قائمة سماح http/https.
بقايا نفس الإصدار: fragment guest wipe، vector: Windows drive-letter.
ثبّتت Element Web v1.12.29 بعد إصدار GitHub في 22 سبتمبر 2026. تعلّمت معاينة URL بالفعل http:/https: بالطريقة الصعبة. لا يزال link في Univention ICS هو z.string(). يستخدم إعداد القائمة الثابت z.url(). مسار الجلب لا يمر أبدًا عبر ذلك التحقق.
منعطفات خاطئة مسجّلة بالفعل: اعتبار app.element.io الافتراضي هو الضحية (Univention مقيّد)؛ اعتبار z.url() قائمة سماح للمخططات (مُنشئ URL يقبل javascript:)؛ تضخيم XSS بالنقر إلى RCE على نظام التشغيل. reverse shell. مسرحية.
أداة لوظائف الإصدار بالإضافة إلى ICS وهمي navigation.json. ليس حاوية Element Web حية. how=gadget. تطبيق قائمة سماح http/https لمعاينة URL (previewFromBundle) أزال href الـ javascript وأبقى على رابط بوابة https.
python3 element-ics-javascript-Abraxas-Labs.py
أو
cd lab
./run.sh
استهدف فقط http://127.0.0.1:19620. مشروع Compose element-ics-javascript. يتم تفكيك الحزمة بعد التشغيل.
SUCCESS element-ics-javascript how=gadget href-scheme=javascript menu-a-javascript=yes allowlist-rejects=yes silent-no-sandbox=yes ELEMENT-ICS-JAVASCRIPT-WITNESS
اسمح بـ http: و https: في ICS link بنفس الطريقة التي يفعلها previewFromBundle. ارفض javascript: و data: والمخططات الأخرى قبل href=. اعزل silent iframe (sandbox="" أو على الأقل بدون allow-top-navigation). لا تعامل z.url() كقائمة سماح للمخططات.
navigation.tsMenu.tsxSilentLogin.tsxpreviewFromBundleGNU Affero GPL v3.0. انظر LICENSE. مختبر loopback فقط. بدون ضمان.