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

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

الأكثر شعبية

عرض الكل →

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

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

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

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

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

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

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

أي شخص يستطيع جعل مستخدم مسجّل الدخول يفتح رابط hash يحتوي على معاملات fragment الخاصة بالضيف، سيؤدي إلى تسجيل خروجه ومحو التشفير المحلي. رمز عشوائي كافٍ. لا يتم استدعاء 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 يحتوي على معاملات fragment الخاصة بالضيف. يقوم العميل بتسجيل خروجه، ومحو التشفير المحلي، وربما يضعه في حساب ضيف يتحكم به المهاجم. هذا تسجيل خروج ومحو تشفير. ليس سرقة الرمز الحقيقي. وليس RCE على نظام التشغيل.

الصلاحيةالطريقة / الهدفالاستطلاع / السلامة / التوافرمُثبت مختبريًا أو مُستنتج
تحليل بيانات اعتماد الضيف من الـ hashurl_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 account و 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.
التثبيت على ضيف حقيقي على HS الافتراضينفس الاستمرار إذا كان رمز الضيف صالحًاالسلامةمُستنتج. استخدم المختبر رمزًا عشوائيًا، لذا لا يوجد تسجيل دخول حي على HS.
الاستمرار في فعل ذلك عند إعادة التحميلتبقى مفاتيح الضيف في الـ hash؛ onTokenLoginCompleted لا يحذفهاالسلامةمُستنتج من تثبيت app.tsx. فتح المختبر الرابط مرة واحدة.

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

بقايا نفس التثبيت: vector: Windows drive-letter، 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 (غير مضبوط). reverse shell. مسرحية.

المختبر

أداة 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

الإصلاح

تجاهل معاملات fragment الخاصة بالضيف عند وجود جلسة غير ضيف بالفعل. تحقق من رمز الضيف عبر /_matrix/client/v3/account/whoami قبل clearStorage. أزل guest_user_id و guest_access_token بنفس طريقة إزالة رموز SSO. اجعل disable_guests: true افتراضيًا لـ app.element.io المستضاف.

المراجع

  • github.com/element-hq/element-web وسم v1.12.29
  • Lifecycle.ts (loadSession يفضّل الضيف)
  • url_utils.ts
  • app.tsx (enableGuest={!config.disable_guests})
  • نفس التثبيت: element-vector-drive-letter · element-ics-javascript
  • CWE-384

الترخيص

GNU Affero GPL v3.0. انظر LICENSE. مختبر loopback فقط. لا ضمان.

تنزيل الأداة