内容简介:本文介绍的两个漏洞由笔者发现并提交给官方,CVE编号为:CVE-2018-16341。有趣的是在官方10.3版本的发布日志中并没有提及该漏洞(CVE-2018-16341),但实际已被修复。Nuxeo Platform是一款跨平台开源的企业级内容管理系统(CMS)。nuxeo-jsf-ui组件处理facelet模板不当,当访问的facelet模板不存在时,相关的文件名会输出到错误页面上,而错误页面会当成模板被解析,文件名包含表达式也会被输出同时被解析执行,从而导致远程代码执行漏洞。
本文介绍的两个漏洞由笔者发现并提交给官方,CVE编号为:CVE-2018-16341。有趣的是在官方10.3版本的发布日志中并没有提及该漏洞(CVE-2018-16341),但实际已被修复。
简介
Nuxeo Platform是一款跨平台开源的企业级内容管理系统(CMS)。
nuxeo-jsf-ui组件处理facelet模板不当,当访问的facelet模板不存在时,相关的文件名会输出到错误页面上,而错误页面会当成模板被解析,文件名包含表达式也会被输出同时被解析执行,从而导致远程代码执行漏洞。
在漏洞挖掘过程中发现nuxeo-jsf组件默认在10.2没有安装,历史版本是默认就安装的。可以通过nuxeoctl mp-install nuxeo-jsf-ui 命令安装。
影响范围
Nuxeo Server版本 < 10.3
漏洞复现
通过在官网下载Nuxeo 10.2的安装包在本地安装,使用默认密码登陆Administrator/Administrator。
在登陆状态下访问test${11*11}.xhtml,可以看到表达式被执行
执行系统命令
Nuxeo 是构建在Seam Framework之上的, Seam是由Jboss开发的Web应用程序框架,在前几年比较流行,但依然有很多应用程序使用了Seam。
当用EL来执行任意系统命令时,Seam内部对EL的解析有一定的防护,用下面的Payload可绕过。
${“”.getClass().forName(“java.lang.Runtime”).getMethod(“getRuntime”,null).invoke(null,null).exec(“calc”,null).toString()}
认证绕过
在不登陆的情况下,是无法访问facelet模板的,如果需要登陆才能命令执行,漏洞略显得有点鸡肋。发现可以通过
login.jsp/%24%7b%31%31%2a%31%31%7d.xhtml 绕过访问。
认证绕过分析
通过查看web.xml配置文件,开发者为*.xhtml资源注册了名为NuxeoAuthenticationFilter的过滤器和Faces Servlet。凭借经验认证工作应该在filter处理。
通过调试发现,在NuxeoAuthenticationFilter类中的bypassAuth方法中有相关逻辑
进入到该方法中,unAuthenticatedURLPrefix是一个列表,值为["login.jsp","webservices/"] ,requestPag 只要以 unAuthenticatedURLPrefix 数组中的字符串开头就不会验证用户身份。
根据注册的Faces Servlet规则”*.html”, login.jsp/test.xhtml 肯定是匹配的,如果要对资源进行访问控制肯定要先进入到访问控制逻辑中的,但是访问控制逻辑中只是通过startsWith方法来比较的,肯定也是符合的,所以login.jsp/test.xhtml这个路径可以绕过NuxeoAuthenticationFilter认证控制进入到Faces Servlet(模版相关)中。
可能会问,那我使用/webservices/xx.xhtml是不是也可以绕过呢?答案是不可以。对/webservices/*资源注册了另一个Servlet,一个请求只能被一个Servlet处理,这个注册方式优先级更高。
RCE 分析
先来一张案发现场的图,is变量含有用户可控的内容进入到了parse方法中。
src的handler为NuxeoNotFoundResourceHandler,看下实现,
getInputStream中的错误信息中包含表达式,也会进入parse方法中执行, 即请求的路径不存在时将会把路径当成源内容返回给调用者,这里就会进入到模版的parse方法中,然后就被解析执行了。
补丁分析
这是通过过滤的方式修复的,在getInputStream中,只有当路径中不包含”#”和”$”时才会把路径输出到输入流中,这样就无法执行EL了。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Influxdb 认证绕过漏洞预警
- Apache Dubbo漏洞补丁绕过
- Ghostscript 多个-dSAFER 沙箱绕过漏洞
- ghostscript沙箱绕过远程命令执行漏洞预警
- libSSH 认证绕过漏洞(CVE-2018-10933)分析
- Shiro权限绕过漏洞分析(CVE-2020-2957)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python高级编程(第二版)
[波兰] Michał Jaworski、[法] Tarek Ziadé / 张亮、阿信 / 人民邮电出版社 / 2017-9-19 / 89.00元
Python作为一种高级程序设计语言,凭借其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言之一。 本书基于Python 3.5版本进行讲解,通过13章的内容,深度揭示了Python编程的高级技巧。本书从Python语言及其社区的现状开始介绍,对Python语法、命名规则、Python包的编写、部署代码、扩展程序开发、管理代码、文档编写、测试开发、代码优化、并发编程、设计模式等重要话题......一起来看看 《Python高级编程(第二版)》 这本书的介绍吧!