Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
element-fragment-guest — Element Web v1.12.29 - عالي - عن بُعد - الجلسة - شظية بيانات اعتماد الضيف تمحو جلسة حقيقية قبل whoami | Kitploit
أدوات/GitHubGitHub/abraxas/element-fragment-guest
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويبالمصادقةمختبرات وتدريب عملي
GitHubabraxas/element-fragment-guest

element-fragment-guest

Element Web v1.12.29 - عالي - عن بُعد - الجلسة - شظية بيانات اعتماد الضيف تمحو جلسة حقيقية قبل whoami

عرض المستودع
27منذ 9 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Abraxas Labs - element-fragment-guest

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

التقرير: https://abraxaslabs.tech/research/element-fragment-guest

element-fragment-guest

Element Web v1.12.29 - Element / New Vector

الفئة: تدمير الجلسة الوصول: عن بُعد

Lifecycle.loadSession يفضّل guest_user_id وguest_access_token من تجزئة URL على restoreSessionFromStorage. الضيوف مفعّلون افتراضيًا (enableGuest={!config.disable_guests}). ملف config.json الخاص بـ app.element.io لا يضبط disable_guests. onTokenLoginCompleted يزيل معاملات SSO وOIDC فقط. لا يزيل مفاتيح الضيف أبدًا. url_utils.ts يعلّق بالفعل بأن معاملات التجزئة هذه تبدو غير مستخدمة. ومع ذلك فهي لا تزال تفوز.

أي شخص يستطيع جعل مستخدم مسجّل الدخول يفتح رابط hash يحتوي على معاملات تجزئة الضيف سيؤدي إلى تسجيل خروجه ومحو التشفير المحلي. تكفي رمزية غير صالحة. لا يتم استدعاء whoami أبدًا.

المعرّفلا يوجد CVE بعد
CWECWE-384 / CWE-352 / CWE-613
CVSSعالٍ: 7.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H
المنتجElement Web
المتأثروسم v1.12.29 v1.12.29 (2d90d6b7b601ecb9ccdf81239a43b4396b4b0c9e). الضيوف مفعّلون (افتراضيًا).
المصادقةمهاجم غير مصادَق. يجب أن يفتح الضحية رابطًا (أو يعيد تحميله).
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

ما يمكن للمهاجم فعله

اجعل مستخدمًا مسجّل الدخول يفتح رابط hash يحتوي على معاملات تجزئة الضيف. يقوم العميل بتسجيل خروجه، ومحو التشفير المحلي، وربما يتركه على حساب ضيف تابع للمهاجم. هذا تسجيل خروج ومحو للتشفير. ليس سرقة الرمزية الحقيقية. وليس تنفيذ أوامر عن بُعد على نظام التشغيل.

الصلاحيةالطريقة / نقطة الوصولالاستطلاع / السلامة / التوافرمُثبت مختبريًا أو مُستنتج
تحليل بيانات اعتماد الضيف من التجزئةurl_utils.ts guest: { keys: ["guest_user_id", "guest_access_token"], location: "fragment" }سلامة اختيار الجلسةمُثبت مختبريًا. أصبح #/home?guest_user_id=...&guest_access_token=... هو guest_params. سلسلة الاستعلام وحدها لم تفعل ذلك.
تفضيل الضيف على جلسة مخزّنة غير ضيففرع أولوية الضيف في Lifecycle.loadSession، السجل Using guest access credentialsالسلامةمُثبت مختبريًا. لم تتم استعادة @victim:example.org المزروع.
محو localStorage وحساب IndexedDB وsessionStorage والتشفيرdoSetLoggedIn(..., clearStorageEnabled=true) ثم clearStorage()السلامة / توافر الجلسة المحليةمُثبت مختبريًا. crypto_empty=yes، والرمزية السابقة اختفت.
تخطي التحقق من الرمزيةمسار الضيف لا يستدعي /_matrix/client/v3/account/whoami أبدًاالسلامةمُثبت مختبريًا. whoami_called=no. الرمزية غير الصالحة not-a-real-token أدت إلى المحو رغم ذلك.
استمرار بيانات اعتماد ضيف المهاجمpersistCredentials بعد المحوالسلامةمُثبت مختبريًا. after_user=@x:example.org، after_token=not-a-real-token، mx_is_guest=true.
التثبيت على ضيف حقيقي على خادم المنزل الافتراضينفس الاستمرار إذا كانت رمزية الضيف صالحةالسلامةمُستنتج. استخدم المختبر رمزية غير صالحة، لذا لا يوجد تسجيل دخول حي إلى خادم المنزل.
الاستمرار في فعل ذلك عند إعادة التحميلتبقى مفاتيح الضيف في التجزئة؛ onTokenLoginCompleted لا يحذفهاالسلامةمُستنتج من تثبيت app.tsx. فتح المختبر الرابط مرة واحدة.

أُغلق هذا الأمر المتبقي: سرقة رمز الوصول الحقيقي (فهو محذوف، لا مُستخرج). RCE/LPE على مستوى نظام التشغيل (سطح المكتب nodeIntegration: false، وضع الحماية sandbox). تطبيق Element SPA الحيّ (how=gadget). سلسلة الاستعلام ?guest_user_id= (الجزء fragment فقط). disable_guests: true يُبقي الجلسة غير الضيفية. كما أن loadSession المُرقّعة التي تتجاهل الضيف عند وجود جلسة غير ضيفية تُبقيها أيضًا.

بقايا التثبيت نفسها: vector: حرف محرك أقراص Windows، Univention ICS javascript: href.

كيف وجدته

ثبّتُّ Element Web v1.12.29 بعد إصدار GitHub في 22 سبتمبر 2026. رمز loginToken الخاص بـ SSO موجود في سلسلة الاستعلام فقط ويُزال بعد الاستخدام. لا تزال مفاتيح الضيف موجودة في الجزء fragment وتتغلب على الاستعادة. التعليق في url_utils.ts هو الدليل: فقد شكّوا بالفعل في أن هذه المفاتيح محددة في المواصفات.

المسارات الخاطئة المسجلة سلفًا: التعامل مع سلسلة الاستعلام ?guest_user_id= كمتجه الهجوم (فالمفاتيح موجودة في الـ hash)؛ ووصف هذا بأنه سرقة رمز (فالرمز الحقيقي محذوف، لا مُرسل)؛ وتوقع وجود disable_guests في إعدادات app.element.io (فهو غير مضبوط). صدفة عكسية. مسرح.

المختبر

أداة gadget لوظائف التثبيت. وليس حاوية Element Web حيّة. how=gadget.

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

أو

cd lab
./run.sh

استهدف فقط http://127.0.0.1:19600. مشروع Compose element-fragment-guest. تُفكَّك الحزمة بعد التشغيل.

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

الإصلاح

تجاهل معاملات جزء الضيف (guest fragment params) عند وجود جلسة غير ضيف بالفعل. تحقّق من رمز الضيف باستخدام /_matrix/client/v3/account/whoami قبل clearStorage. أزل guest_user_id وguest_access_token بالطريقة نفسها التي تُزال بها رموز SSO. اجعل disable_guests: true هو الافتراضي لـ hosted app.element.io.

المراجع

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

الترخيص

GNU Affero GPL v3.0. راجع LICENSE. مختبر loopback فقط. دون أي ضمان.

تنزيل الأداة