ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Weblogic安全漫谈(三)
[打印本页]
作者:
何小豆儿在此
时间:
2024-8-29 20:59
标题:
Weblogic安全漫谈(三)
本篇介绍coherence.jar中的漏洞使用链及后续绕过。
经历2015到2018的3年迭代后,Weblogic的黑名单徐徐美满,废掉CC反序列化更是釜底抽薪。另一方面也促使研究员去挖掘新组件新使用链,这篇介绍的就是@testbnull在发现Spring写文件链后[1],继续挖掘出coherence.jar中的漏洞使用链及后续绕过。因为10.3.6默认没有启用coherence,我们用12.2.1.3作为调试环境。
CVE-2020-2555
CC链的核心是InvokerTransformer#transform方法对Method.invoke的调用,Weblogic几百个lib中有没有类CC链呢?
1. 查找调用了Method.invoke的方法
2. 筛出可被序列化的方法所在类
3. 剔除参数不可控的结果
注意到com.tangosol.util.extractor.ReflectionExtractor#extract,与transform不说丝绝不差至少也是大同小异。
同包中也有与ChainedTransformer作用一致的ChainedExtractor,ReflectionExtractor实现了ValueExtractor接口满足范例要求:
tabby的分析找到了关键的com.tangosol.util.filter.LimitFilter#toString,如许就能链上CC5开头用的BadAttributeValueExpException实现完整使用链。
更进一步可以找到许多具有套娃能力的类方法:
除此以外注意到期间出现过的MVEL包,方便地查到也可以com.tangosol.coherence.rest.util.extractor.MvelExtractor#extract作为sink执行MVEL表达式。
根据关键类方法的变量要求构建使用链就行:
extract:95, MvelExtractor (com.tangosol.coherence.rest.util.extractor)
extract:112, ReflectionExtractor (com.tangosol.util.extractor)
extract:83, ChainedExtractor (com.tangosol.util.extractor)
// extract:96, MultiExtractor (com.tangosol.util.extractor)
toString:581, LimitFilter (com.tangosol.util.filter)
readObject:86, BadAttributeValueExpException (javax.management)
invoke0:-1, NativeMethodAccessorImpl (sun.reflect)
invoke:62, NativeMethodAccessorImpl (sun.reflect)
invoke:43, DelegatingMethodAccessorImpl (sun.reflect)
invoke:498, Method (java.lang.reflect)
invokeReadObject:1170, ObjectStreamClass (java.io)
readSerialData:2178, ObjectInputStream (java.io)
readOrdinaryObject:2069, ObjectInputStream (java.io)
readObject0:1573, ObjectInputStream (java.io)
复制代码
CVE-2020-2883
上文搜索"具有套娃能力的类"时,有一个与许多节点是[ALIAS]关系的抽象基类com.tangosol.util.extractor.AbstractExtractor在compare中调用了extract:
如许就能链上CC2开头用的PriorityQueue实现完整使用链。
extract:95, MvelExtractor (com.tangosol.coherence.rest.util.extractor)
extract:112, ReflectionExtractor (com.tangosol.util.extractor)
extract:83, ChainedExtractor (com.tangosol.util.extractor)
// extract:96, MultiExtractor (com.tangosol.util.extractor)
compare:79, AbstractExtractor (com.tangosol.util.extractor)
siftDownUsingComparator:722, PriorityQueue (java.util)
siftDown:688, PriorityQueue (java.util)
heapify:737, PriorityQueue (java.util)
readObject:797, PriorityQueue (java.util)
invoke0:-1, NativeMethodAccessorImpl (sun.reflect)
invoke:62, NativeMethodAccessorImpl (sun.reflect)
invoke:43, DelegatingMethodAccessorImpl (sun.reflect)
invoke:498, Method (java.lang.reflect)
invokeReadObject:1170, ObjectStreamClass (java.io)
readSerialData:2178, ObjectInputStream (java.io)
readOrdinaryObject:2069, ObjectInputStream (java.io)
readObject0:1573, ObjectInputStream (java.io)
复制代码
Weblogic在背面的补丁将两个sink类加入了黑名单:
CVE-2020-14645
UniversalExtractor看似能调用任意类方法,现实受内部逻辑限定(尤其是CanonicalNames#computeValueExtractorCanonicalName)只能调到任意类的无参get/is方法,可以通过一些getter链触发JNDI完成使用。
extractComplex:432, UniversalExtractor (com.tangosol.util.extractor)
extract:175, UniversalExtractor (com.tangosol.util.extractor)
// extract:105, ChainedExtractor (com.tangosol.util.extractor)
// extract:96, MultiExtractor (com.tangosol.util.extractor)
compare:143, AbstractExtractor (com.tangosol.util.extractor)
siftDownUsingComparator:722, PriorityQueue (java.util)
siftDown:688, PriorityQueue (java.util)
heapify:737, PriorityQueue (java.util)
readObject:797, PriorityQueue (java.util)
invoke0:-1, NativeMethodAccessorImpl (sun.reflect)
invoke:62, NativeMethodAccessorImpl (sun.reflect)
invoke:43, DelegatingMethodAccessorImpl (sun.reflect)
invoke:498, Method (java.lang.reflect)
invokeReadObject:1170, ObjectStreamClass (java.io)
readSerialData:2178, ObjectInputStream (java.io)
readOrdinaryObject:2069, ObjectInputStream (java.io)
readObject0:1573, ObjectInputStream (java.io)
复制代码
网络安全发展门路图
这个方向初期比较容易入门一些,把握一些基本技能,拿起各种现成的工具就可以开黑了。不外,要想从脚本小子变成hei客大神,这个方向越今后,需要学习和把握的东西就会越来越多,以下是学习网络安全需要走的方向:
上面介绍了技能分类和学习门路,这里来谈一下学习方法:
无论你是去B站大概是油管上面都有许多网络安全的相关视频可以学习,固然如果你还不知道选择那套学习,我这里也整理了一套和上述发展门路图挂钩的视频教程如果你对网络安全入门感兴趣,那么你点击这里
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4