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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
superset-g3-v0-import-sql-plant — مختبر إثبات مفهوم لثغرة تفويض في Apache Superset 6.1.0 حيث يقوم محرر لوحة معلومات بدور Gamma بزرع SQL في مجموعة البيانات عبر استيراد لوحة معلومات v0 غير مُصدَّر بإصدار، يُنفَّذ عند تحديث المخطط. | Kitploit
أدوات/GitHubGitHub/abraxas/superset-g3-v0-import-sql-plant
المصادقة والترخيصتصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويبالأوراق والأبحاثمختبرات وتدريب عملي

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
GitHub
abraxas/superset-g3-v0-import-sql-plant

superset-g3-v0-import-sql-plant

مختبر إثبات مفهوم لثغرة تفويض في Apache Superset 6.1.0 حيث يقوم محرر لوحة معلومات بدور Gamma بزرع SQL في مجموعة البيانات عبر استيراد لوحة معلومات v0 غير مُصدَّر بإصدار، يُنفَّذ عند تحديث المخطط.

عرض المستودع
15منذ يوم واحدلم تتم المراجعة بعد

Abraxas Labs - superset-g3-v0-import-sql-plant

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  superset-g3-v0-import-sql-plant

superset-g3-v0-import-sql-plant

يمكن لزميل لديه حساب عادي في محرر لوحات المعلومات أن يخفي استعلام قاعدة بياناته الخاص داخل مخطط يثق به الآخرون بالفعل. في المرة التالية التي يفتح فيها أي شخص ذلك المخطط، يُنفَّذ الاستعلام على اتصال بيانات الشركة. يمكنهم قراءة جداول لم يُمنحوا صلاحية الوصول إليها قط. ولا يحتاجون إلى صلاحية "تشغيل SQL الخاص بي" الإضافية التي يُفترض أن تحكم هذا الأمر. لا يمكنهم تسجيل دخول جديد إلى المستودع، ولا يمكنهم تنفيذ INSERT أو DELETE عبر مسار هذا المخطط.

الفئة: صلاحية متبقية الوصول: عن بُعد

Apache Superset 6.1.0 (c83fb2bb) - مؤسسة Apache البرمجية

يمتلك Gamma الافتراضي صلاحية can_write على لوحة المعلومات، لذا فإن POST /api/v1/dashboard/import/ ضمن المصفوفة. لا يحتوي JSON غير المضغوط بصيغة ZIP على metadata.yaml، لذا يحاول الموزِّع الإصدار v1، ثم ينتقل إلى الإصدار v0 غير المُرقَّم. تعيد decode_dashboards تكوين SqlaTable. تبحث import_dataset حسب table_name + schema + database_id (من params.database_name) وتنسخ datasource.override(i_datasource) الحقول export_fields بما في ذلك sql دون raise_for_access ودون كتابة على Dataset. بعد ذلك يقوم POST /api/v1/chart/data بتجميع ذلك الـ SQL كـ FROM الافتراضي على اتصال التحليلات الخاص بالـ dataset.

SQL الخاص بـ Gamma دون sql_lab. يبقى Dataset REST PUT عند 403. يبقى v1 ZIP فارغًا.

المعرّفلا يوجد CVE بعد
الفئةصلاحية متبقية (متبقية من CVE-2026-23982 / CVE-2024-26016)
الوصولعن بُعد (HTTP مُصادَق عليه؛ Gamma الافتراضي)
CWECWE-863، CWE-284
CVSSعالٍ: 7.6 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L
المنتجApache Superset
المتأثر6.1.0 (c83fb2bb1dcfac41ac51bcebd82471f4a7180d18)؛ أحدث إصدار GA على GitHub وقت البحث
المصادقةGamma الافتراضي (can_write على لوحة المعلومات). ليس دون مصادقة. ليس مسؤولًا (خارج النطاق).
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

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

يحتاج إلى حساب Gamma (أو أي حساب لديه صلاحية الكتابة على لوحات المعلومات) وإلى dataset يمكنه رسمه لاحقًا: نفس table_name + schema على قاعدة بيانات يكون database_name الخاص بها موجودًا في params الخاصة بـ JSON. المنحة التكميلية تكون على كائن dataset، وليس على كل جدول يسميه الـ SQL المزروع. raise_for_access الخاص بـ chart/data يكون على مستوى كائن datasource (datasource_access / schema / owner). لا يرفض get_from_clause سوى has_mutation().

الصلاحيةالطريقة / نقطة الوصولالاستطلاع / السلامة / التوافرمُثبت مختبريًا أو مُستنتج
الكتابة فوق SQL الافتراضي لمجموعة بيانات مطابقة بالاسمGamma POST /api/v1/dashboard/import/ JSON غير ZIP؛ v0 import_dataset datasource.override ينسخ export_fields بما فيها sqlالسلامة (dataset.sql)مُثبت مختبريًا. الاستيراد 200؛ dataset.sql = SELECT 'SUPERSET-G3-V0-IMPORT-SQL-PLANT-WITNESS' AS witness
تشغيل ذلك SQL على URI التحليلات الخاص بمجموعة البياناتPOST /api/v1/chart/data بعد الزرع؛ get_from_clause يلفّ sql المخزّن كـ TextAsFromالاستطلاع (SELECT أي جدول يستطيع مستخدم URI قراءته)مُثبت مختبريًا. 200؛ مُجمّع FROM (SELECT 'SUPERSET-G3-V0-IMPORT-SQL-PLANT-WITNESS' AS witness) AS virtual_table
إخفاء الاستعلام في رسم بياني يفتحه مستخدمون آخرون ممنوحون بالفعلنفس الزرع؛ المالكون / أصحاب datasource_access الآخرون ينفذون عند التحديثالسلامة + الاستطلاع (أشخاص آخرون يشغّلون الزرع)مُستنتج. مختبر Gamma كان لديه المنح بالفعل فتم التنفيذ ذاتيًا
كسر لوحات المعلومات التي استخدمت SQL القديماستبدال sql الجدول الفيزيائي بـ SELECT من المهاجمالتوافرمُستنتج
سلبي: تنفيذ SQL LabPOST /api/v1/sqllab/execute/لا ينطبقمُثبت مختبريًا. 403
سلبي: الكتابة فوق Dataset RESTPUT /api/v1/dataset/{id} مع sqlلا ينطبقمُثبت مختبريًا. 403؛ بقي sql فارغًا (شقيق CVE-2026-23982)
سلبي: v1 ZIP مع metadata.yamlنفس نقطة نهاية الاستيراد، حزمة ZIPلا ينطبقمُثبت مختبريًا. 200؛ بقي sql فارغًا (فئة CVE-2024-26016)

أُغلق على هذه البقايا: الاستيراد غير الموثق؛ تسجيل URI قاعدة بيانات جديد (استيراد v0 لمجموعة البيانات لا ينشئ الاتصال؛ غياب params.database_name هو DatabaseNotFoundError)؛ DML عبر chart/data (has_mutation())؛ رسم Gamma البياني لمجموعة بيانات لا يستطيعون قراءتها (403)؛ table_name فريد مُدرج حديثًا (أُنشئ PVM، غير مرتبط بـ Gamma). ليس RCE. ليس Admin. تقسيم مستودع الإنتاج يحدّ SELECT لمستخدم URI ذلك. كان URI التحليلات في المختبر نفس Postgres الخاص بالبيانات الوصفية، لذا العبور بين الجداول بما فيها ab_user مُستنتج، وليس مُثبتًا بأوراكل ثانٍ.

كيف وجدته

ثبّتُ Apache Superset 6.1.0. Admin مكافئ على مستوى نظام التشغيل وخارج النطاق. بحثت عن البقايا مقابل مصفوفة الأدوار الخاصة بـ Apache: Gamma، Alpha، sql_lab، الضيف المضمّن، Public.

موجة 6.0.0 أغلقت بالفعل chart/data sqlExpression (CVE-2026-23980)، وDataset REST SQL (CVE-2026-23982)، وSQL Lab DO $$ / EXPLAIN ANALYZE (CVE-2026-23984). تفويض الاستيراد لـ ZIP المُصدّر بإصدار هو CVE-2024-26016. v0 غير المُصدّر بإصدار لا يزال الأخير في command_versions لأن "الملفات غير مُصدّرة بإصدار."

import_ على Dashboard يُعيّن إلى الكتابة. JSON غير ZIP هو {filename: bytes} بدون metadata.yaml. المُوزّع يجرّب v1، يلتقط IncorrectVersionError، يشغّل v0. decode_dashboards يحوّل __SqlaTable__ إلى نموذج حي. import_dataset يبحث ويستبدل. export_fields يتضمن sql. وقت الاستعلام يعامل SQL المخزّن كموثوق: get_from_clause بعد has_mutation().

منعطفات خاطئة مسجلة بالفعل: معاملة v1 ZIP كالبقايا (بقي sql فارغًا)؛ Dataset REST PUT (403)؛ SQL Lab كـ Gamma (403)؛ التضخيم إلى أي كائن Database (v0 لا يسجّل URI)؛ reverse shell. مسرح. الشاهد هو FROM الافتراضي.

المختبر

python3 superset-g3-v0-import-sql-plant-Abraxas-Labs.py

أو:

cd lab
./run.sh

استهدف فقط http://127.0.0.1:19710. الصورة apache/superset:6.1.0. مشروع Compose superset-g3-v0-import. البذرة: Admin، مستخدم Gamma-only، مجموعة بيانات فعلية lab_items على Lab Analytics، صلاحية datasource_access لمستخدم Gamma. الأوراكل هو سلسلة الشاهد المزروعة في SQL وفي المخطط/البيانات.

SUCCESS superset-g3-v0-import-sql-plant gamma-import-ok plant-sql-ok chart-data-witness-ok sqllab-403 dataset-put-403 v1-zip-no-overwrite SUPERSET-G3-V0-IMPORT-SQL-PLANT-WITNESS

الإصلاح

يجب أن يتطلب import_dataset في v0 صلاحية الكتابة على Dataset واستدعاء raise_for_access قبل أن ينسخ override قيمة sql. أزل v0 غير المُصدَّر بإصدار من command_versions، أو ارفض الاستيرادات التي تفتقر إلى metadata.yaml. استمر في التعامل مع SQL الافتراضي المخزَّن باعتباره قدرة كتابة على Dataset وقت الاستعلام.

تنزيل الأداة