服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

Weblogic安全漫谈(二)

日期: 来源:默安逐日实验室收集编辑:Zhuri

前言

继本系列上篇从CVE-2015-4852入手了解T3协议的构造后,本篇继续分析开启T3反序列化魔盒后的修复与绕过。
Weblogic对于10.3.6推出了p20780171和p22248372用于修复CVE-2015-4852,在补丁详情中又提示了p21984589是它的超集,所以可以直接装这个合集。跟着压缩包里自带的README.txt走就行,注意一点是要改一下bsu.sh中的内存限制,不然会遇到Java heap space OutOfMemoryError
unzip p21984589_1036_Generic.zip -d /u01/app/oracle/middleware/utils/bsu/cache_dir/

cd /u01/app/oracle/middleware/utils/bsu/

sed -i 's/512/1024/' bsu.sh

./bsu.sh -install -patch_download_dir=/u01/app/oracle/middleware/utils/bsu/cache_dir -patchlist=S8C2 -prod_dir=/u01/app/oracle/middleware/wlserver

. /u01/app/oracle/middleware/wlserver/server/bin/setWLSEnv.sh
/java/bin/java weblogic.version
补丁在重写的ServerChannelInputStream#resolveClass中新增了类名黑名单,加入了CC链比较关键的包。

梳理一下:
  1. 1. 原生反序列化依然存在,流程中的各个关键方法可用。
  2. 2. CC链在黑名单以外的部分,仍然可以用作调用链。
  3. 3. 黑名单类不在ServerChannelInputStream做反序列化就不受限制。
根据第三点先获取所有用到readObject的地方,用Serializable.class.isAssignableFrom(clazz)筛出可被序列化的类,筛出数据可控的二次反序列化。找到的两个可用类刚好对应两个CVE。

CVE-2016-0638

看到weblogic.jms.common.StreamMessageImpl#readExternal,完成父类readExternal后读到的字节是十进制1时会进入存在readObject的分支。

跟进中间会经过的createPayload方法,读到的整数大于CHUNK_LINK_THRESHOLD会做一些处理。中间这块的处理看不太懂,我们假设它不满足判断继续往后走,一直跟到Chunk.createOneSharedChunk

虽然中间一些Chunk的判断和操作由于笔者太菜了看不懂,但到了这里就能看出,这个先前读到的被一路传过来的整数是后段数据长度。后面这段数据被完整读出并封装赋值给this.payload,随后进行第二次反序列化。

按照同样的数据顺序重写StreamMessageImplwriteExternal,写入相应格式的CC链序列化payload,再经过一次正常新建类对象并经过第二次序列化,最后用上一篇的EXP打出去就行。

readExternal:1433, StreamMessageImpl (weblogic.jms.common)
readExternalData:1814, ObjectInputStream (java.io)
readOrdinaryObject:1773, ObjectInputStream (java.io)

resolveClass:110, InboundMsgAbbrev$ServerChannelInputStream (weblogic.rjvm)
readNonProxyDesc:1589, ObjectInputStream (java.io)
readClassDesc:1494, ObjectInputStream (java.io)
readOrdinaryObject:1748, ObjectInputStream (java.io)
readObject0:1327, ObjectInputStream (java.io)

CVE-2016-3510

看到weblogic.corba.utils.MarshalledObject#readResolve,是比上一个品相更好的二次反序列化类。this.objBytes属性来自构造函数传入的对象,直接将payload对象作为参数给进去就行。

readResolve:58, MarshalledObject (weblogic.corba.utils)
invoke0:-1, NativeMethodAccessorImpl (sun.reflect)
invoke:39, NativeMethodAccessorImpl (sun.reflect)
invoke:25, DelegatingMethodAccessorImpl (sun.reflect)
invoke:597, Method (java.lang.reflect)
invokeReadResolve:1056, ObjectStreamClass (java.io)
readOrdinaryObject:1784, ObjectInputStream (java.io)
readObject0:1327, ObjectInputStream (java.io)

补丁在上述两个类反序列化前单独添加了检查,随后进入下一个对RMI的利用阶段。

CVE-2017-3248

与此前《攻击JavaRMI概述》中唯一不同的一点是,第一步触发反序列化时的通讯协议,从Java原生的JRMP协议变为了Weblogic的T3协议。生成一个JRMPClient的payload用于在目标反序列化时发起JRMP请求,其它攻击流程一致。

CVE-2018-2628

ysoserialRMIRegistryExploit设计用于攻击Java原生RMI注册端,用了给JRMPClient的payload套上Registry动态代理的方式,来兼容Java原生registry.bind方法的参数要求。

而这大概就是Weblogic企图靠InboundMsgAbbrev重写resolveProxyClass作为CVE-2017-3248的修复方式原因之一。我们是用自己的EXP作为T3客户端,不存在参数类型兼容的问题,直接去掉动态代理类的包装即可绕过检查(或者使用不同的接口代理)。
不过与此同时补丁也给CC包加上了手动开关,基本断了这条链的生路。所以这一阶段的Sink链大多基于7u21/8u20。

CVE-2018-2893

据参考文章,在cpuapr2018补丁中黑名单新增了sun.rmi.server.UnicastRef。看到java.rmi.server.RemoteObjectInvocationHandler会使用父类的RemoteObject,读到refClassName时就会做一次神奇的第二次反序列化,自带绕过特效。

要素察觉!CVE-2016-0638和CVE-2016-3510也是二次反序列化绕过黑名单,不过MarshalledObject被去掉了Serializable接口,StreamMessageImpl则仍然可用于绕过。

CVE-2018-3245

cpujul2018补丁中黑名单继续增加了:
java.rmi.activation
sun.rmi.server
java.rmi.server.UnicastRemoteObject
java.rmi.server.RemoteObjectInvocationHandler
RemoteObject不在黑名单的子类们仍然可用,直到cpuoct2018将基类纳入黑名单。

参考链接

[1] Weblogic 反序列化漏洞(CVE-2018-2628)漫谈: https://paper.seebug.org/584

[2] Weblogic JRMP反序列化漏洞回顾: https://xz.aliyun.com/t/2479


相关阅读

  • 0day 速修!Smartbi 远程命令执行漏洞

  • 01 漏洞概况 近日,微步在线通过“X漏洞奖励计划”获取到Smartbi大数据分析平台远程命令执行漏洞的0day相关漏洞情报,攻击者可以通过此漏洞进行任意命令执行,导致系统被攻击与控
  • php(phar)反序列化漏洞及各种绕过姿势

  • 本文为看雪论坛优秀文章看雪论坛作者ID:pank1s一简介序列化其实就是将数据转化成一种可逆的数据结构,自然,逆向的过程就叫做反序列化。简单来说就是我在一个地方构造了一个类,但
  • PHP代码审计-某cms逻辑漏洞导致getshell

  • 前言 如果存在exec进行拼接的漏洞,该如何绕过 <mark>一黑俩匹配 </mark>?当前如果是拼接和编码这种手法就不说了,现在在看的师傅您是审计大牛的话,这文章可以忽略不看。黑名单..
  • 实战|一次不完美的Jboss渗透

  • 一.前言最近做渗透测试中遇到一个jboss的站,在其中学到一些在乙方工作挺有用的技巧(这次测试是进过授权测试)在次分享一下二.信息收集先通过namp进行扫描,同时进行目录扫描,发现8

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • Weblogic安全漫谈(二)

  • 前言继本系列上篇从CVE-2015-4852入手了解T3协议的构造后,本篇继续分析开启T3反序列化魔盒后的修复与绕过。Weblogic对于10.3.6推出了p20780171和p22248372用于修复CVE-2015-
  • 已破姐神仙软件!双端可用,这下被爽到了!

  • 大家好,我是你们的好朋友大明,欢迎大家来到【大明青年】。今日分享大家会不会想去k歌,但是有时候自己去又不得劲,还不如在家躺,但是有没有能一边在家一边k歌呢。今天大明就给大家
  • Android自定义View之蜘蛛网雷达效果

  • / 今日科技快讯 /近日,在将聊天机器人Bard作为主要用于搜索的AI服务推出后,谷歌似乎正在偏离初衷,没有提供任何具体的用例。在最近举行的全体员工会议上,该公司高管辩称,Bard
  • 关于银行信贷,政府工作报告透露了哪些信号?

  • ‍3月5日出炉的2023年政府工作报告19次提及“金融”,也释放了下一步金融工作的重点任务和要求。银行是金融行业的主力军。关于货币政策和银行信贷,政府工作报告透露了哪些信号
  • 后疫情时代硅谷创新创业的现状、挑战与启示

  • 科情智库摘 要:2022年2月17日,硅谷合资企业地区研究学院发布了最新的综合性区域发展评价报告《2022硅谷指数》。本文综合该报告的分析结果,结合长期对硅谷地区的跟踪了解情况,概