
Grafana OSS 13.2.3 - عالي - عن بُعد - الانضمام عبر الدعوة - SignUpStep2 ينضم إلى دعوات المؤسسة المعلّقة دون الرمز
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · grafana-signup-invite-join
الفئة: صلاحية متبقية الوصول: عن بُعد
Grafana OSS 13.2.3 (6193dc0) - Grafana Labs
عندما تكون users.allow_sign_up مساوية لـ true وتبقى users.verify_email_enabled على القيمة الافتراضية false، فإن طلب POST /api/user/signup/step2 غير المُصادَق عليه مع بريد إلكتروني مدعوّ ينشئ الحساب، وتقوم applyUserInvite بإرفاق كل صف InvitePending الخاص بذلك العنوان عند invite.Role. لا يُطلب رمز الدعوة المكوّن من 30 حرفًا في هذا المسار إطلاقًا. يمكن أن تكون الصلاحية Admin.
اعرف البريد الإلكتروني المدعوّ. تجاوز رمز الدعوة. انضم إلى المؤسسة بصلاحية Admin.
| المعرّف | لا يوجد CVE بعد |
| الفئة | صلاحية متبقية |
| الوصول | عن بُعد (HTTP غير مُصادَق عليه؛ يتطلب users.allow_sign_up=true) |
| CWE | CWE-862 |
| CVSS | مرتفع: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| المنتج | Grafana OSS |
| المتأثر | 13.2.3 (6193dc0)؛ مسار التسجيل المفتوح |
| المصادقة | غير مُصادَق عليه. التحقق من البريد الإلكتروني معطّل افتراضيًا. التسجيل معطّل في defaults.ini الافتراضي. |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1 فقط |
يحتاج إلى العنوان المدعوّ (بريد الدعوة الإلكتروني، أو تخمين، أو تسريب آخر). لا يحتاج إلى صندوق البريد ولا إلى رمز الدعوة. لا يحتاج إلى حساب Grafana موجود.
| الصلاحية | الطريقة / الهدف | الاستطلاع / السلامة / التوافر | مُثبت مختبريًا أو مُستنتج |
|---|---|---|---|
| إنشاء حساب بالبريد الإلكتروني المدعوّ | طلب غير مُصادَق عليه POST /api/user/signup/step2 مع code="" | السلامة (إنشاء الحساب) | مُثبت مختبريًا. الجلسة /api/user login=invitee |
| الانضمام إلى المؤسسة المدعوّة بصلاحية الدعوة (Admin في هذا المختبر) | applyUserInvite من GetTempUsersQuery{Email, InvitePending} | السلامة (عضوية المؤسسة + الصلاحية) | مُثبت مختبريًا. /api/user/orgs role=Admin؛ sqlite org_user Admin |
| إكمال الدعوة المعلّقة حتى لا يتمكن المدعوّ الحقيقي من استخدامها | updateTempUserStatus(..., TmpUserCompleted) | السلامة (استهلاك الدعوة) | مُثبت مختبريًا. قائمة المعلّق فارغة؛ sqlite temp status=Completed |
| نفس الانضمام لدعوات Viewer/Editor | يتم نسخ invite.Role كما هي | السلامة | مُستنتج. استخدم المختبر صلاحية Admin |
| القراءة/الكتابة في تلك المؤسسة كـ Org Admin بعد تسجيل الدخول | واجهات Org Admin البرمجية (datasources، dashboards، users) | الاستطلاع + السلامة | مُستنتج. يتوقف المختبر عند role=Admin |
| الضبط السلبي | التسجيل ببريد إلكتروني مختلف مع رمز فارغ | لا ينطبق | مُثبت مختبريًا. invite-org-role=none |
مغلق على هذه الثغرة المتبقية: التثبيت الافتراضي مع تعطيل التسجيل؛ مسار تفعيل التحقق من البريد الإلكتروني (هذا المسار يتحقق من form.Code)؛ ربط البريد الإلكتروني عند إكمال الدعوة (فئة CVE-2022-39306، لا تزال موجودة)؛ Grafana Admin (isGrafanaAdmin). ليس RCE غير مُصادَق عليه. تجاهل Grafana G2 (IAM SSOSetting k8s authorizer).
ثبّتُ إصدار Grafana OSS 13.2.3. عاد OSS الافتراضي فارغًا عند هذا الحد. جلست على مسار التسجيل المفتوح على أي حال. POST /api/user/signup/step2 غير مُصادَق عليه. تنشئ SignUpStep2 المستخدم، ثم تحمّل الدعوات المعلّقة حسب البريد الإلكتروني. لا يُطلب form.Code إلا عندما تكون VerifyEmailEnabled مساوية لـ true.
المنعطفات الخاطئة المسجّلة مسبقًا: إعادة تقديم CVE-2022-39306 (إكمال الدعوة لا يزال يربط البريد الإلكتروني)؛ التعامل مع defaults.ini الافتراضي على أنه هذه الثغرة المتبقية (التسجيل معطّل هناك)؛ SCIM غير المُصادَق عليه على OSS (عميل k8s فارغ)؛ reverse shell. مسرحية.
python3 grafana-signup-invite-join-Abraxas-Labs.py
أو:
cd lab
./run.sh
استهدف فقط http://127.0.0.1:19350. الصورة grafana/grafana:13.2.3 مع GF_USERS_ALLOW_SIGN_UP=true والتحقق من البريد الإلكتروني معطّل.
SUCCESS GRAFANA-SIGNUP-INVITE-JOIN version=13.2.3 invite-org=2 invite-code-len=30 step2-code-sent=empty step2-redirect=redirect-to-select-org api-role=Admin sqlite-role=Admin temp-status=Completed control-invite-org-role=none GRAFANA-SIGNUP-INVITE-JOIN-WITNESS
اشترط رمز الدعوة المعلّقة، أو إثبات صندوق البريد، قبل applyUserInvite عند التسجيل. لا تُرفق صفوف InvitePending بناءً على مطابقة البريد الإلكتروني وحدها.
signup.go · org_invite.goGNU Affero GPL v3.0. انظر LICENSE. مختبر loopback فقط. لا ضمان.