01
漏洞概述
WebLogic是美国Oracle公司出品的application server,确切地说是基于Java EE架构的中间件。WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。
未经身份验证的远程攻击者可通过构造特殊的HTTP请求,利用该漏洞,在受影响的WebLogic Server上执行任意代码。
02
影响范围
Oracle Weblogic Server 10.3.6.0.0
Oracle Weblogic Server 12.1.3.0.0
Oracle Weblogic Server 12.2.1.3.0
Oracle Weblogic Server 12.2.1.4.0
Oracle Weblogic Server 14.1.1.0.0
03
漏洞分析
使用Vulhub搭建环境:Vulhub - Docker-Compose file for vulnerability environment 。
以root权限进入WebLogic容器,开启WebLogic debug模式,开放相应的docker端口,进而使用IDEA进行远程调试。
CVE-2020-14882
通过特殊构造的HTTP请求,绕过控制台组件的身份验证:
http://your-ip:7001/console/css/%252e%252e%252fconsole.portal
可以看到此处是URL二次编码,原始编码:%252e%252e%252f,一次URL编码:%2e%2e%2f,二次URL编码:../ 。
该漏洞是Console的未授权访问漏洞,可通过静态资源文件,使Netuix渲染后台页面绕过路径权限的校验。
WebLogic启动后,管理平台对应的组件为WebLogic Console。想要理清路由对应的Servlet映射关系,就需要查看/console下相关的xml配置文件。
可以看到其对应的Servlet为AppManagerServlet 。
跟进初始化流程。
可以看到初始化流程为:
weblogic.servlet.AsyncInitServlet.init( ) ->
weblogic.servlet.AsyncInitServlet.initDelegate( ) ->
weblogic.servlet.AsyncInitServlet.createDelegate( )
这里的this.SERVLET_CLASS_NAME就是xml中的:
所以初始化过程实际上是实例化了com.bea.console.utils.MBeanUtilsInitSingleFileServlet,并调用了其init( )方法。在继续跟进分析之前,先来分析以下其绕过路径的权限校验。
WebLogic是在
weblogic/servlet/internal/WebAppServletContext.class中完成权限校验的。
根据web.xml,可知WebLogic对/css/ /images/ /common/路径没有做认证的需要。
securedExecute中调用了checkAccess,跟进具体情况。
由于访问的非受限路由,所以此处的var5 = checkAccess为null,跳过了权限验证从而访问相关资源。
下面回到之前的Request初始化解析过程。
红框内容即为WebLogic对URL的原始读取点,当URL中不存在“;”时,就会继续调用super.service 。针对CVE-2020-14882的补丁也是在此基础上,增加了黑名单限制。
继续跟进其父类SingleFileServlet的service 。
在此处完成AppContext的初始化之后,就进入了真正处理请求的UIServlet 。
不管何种请求,都会来到doPost,并在这里调用createUIContext 。
可以看到在进入createUIContext之前,已经过了一次URL解码。
随后进入getTree又进行了一次解码,此时的requestPattern变为了/css/../console.portal 。
CVE-2020-14883
通过上述方法,进入的控制台程序。
通过正常登录,访问的控制台程序。
可以看到通过未授权访问的后台与正常登录的后台相比,由于权限不足,缺少部署等功能,无法安装应用,所以也无法通过部署项目等方式直接获得权限,但可结合CVE-2020-14883进行任意代码执行。
通过静态资源文件,绕过路径权限的校验,WebLogic会将handle中的参数传入HandleFactory执行任意代码。
可利用如上方式,进行恶意代码执行。
04
修复建议
Oracle官方已发布针对CVE-2020-14882漏洞的补丁,但该补丁存在被绕过的风险。建议受影响用户临时关闭WebLogic后台/console/console.portal的对外访问。
05
总结
该漏洞实际上是一个认证绕过+命令执行漏洞。
1、通过请求原本无需认证的资源路径绕过认证;
2、利用../进行目录穿越,使Netuix在初始化语法树时,读取对应的后台模板文件;
3、在Netuix生命周期中,通过组件对应的处理流程,触发Handle流程;
4、组件处理流程会将请求中以handle结尾的参数的值作为参数传入getHandle方法中,完成反射调用。
安博通 ,可视化网络安全技术创新者 威胁情报【漏洞预警】XStream小于1.4.14远程代码执行漏洞(CVE-2020-26217)【漏洞分析】关于mysql-connector-java连接时的反序列化【漏洞预警】Apache Shiro绕过权限漏洞(CVE-2020-17510)点击,了解安博通