关注公众号回复“漏洞”获取研究环境或工具
漏洞信息
近日,Oracle官方通报了WebLogic存在多个T3反序列化漏洞,其中一个编号为CVE-2022-21350,影响版本如下:
-
WebLogic 12.1.3.0.0
-
WebLogic 12.2.1.3.0
-
WebLogic 12.2.1.4.0
-
WebLogic 14.1.1.0.0
这显然是一个可以绕过黑名单的新利用链。最近看到有小伙伴放出了简要分析,在此基础上,本文将完整Gadget的构造过程分享给大家。
Gadget分析
我们知道经典的cc5 Gadget是通过`BadAttributeValueExpException`反序列化来触发`toString`函数。CVE-2022-21350的Gadget类似,这里使用的是`weblogic.servlet.internal.session.FileSessionData#toString`:
进入`isDebuggingSession`函数:
这里会调用`getAttribute`函数,读取名为`wl_debug_session`的对象(`AttributeWapper`类型),跟进:
继续跟进`getAttributeInternal`函数:
这里会调用`AttributeWrapperUtils.unwrapObject`:
跟进`unwrapEJBObjects`:
当`unwrappedObject`为`BusinessHandle`类型时,将进入`BusinessHandle#getBusinessObject`:
进入`getEJBHome`:
这里定义了一个`Context`对象,并调用了`lookup`。
Gadget构造
回顾前面的分析过程,梳理完整调用链如下:
javax.management.BadAttributeValueExpException->readObject
weblogic.servlet.internal.session.FileSessionData->toString
weblogic.servlet.internal.session.FileSessionData->isDebuggingSession
weblogic.servlet.internal.session.FileSessionData->getAttribute
weblogic.servlet.internal.session.FileSessionData->getAttributeInternal
weblogic.servlet.internal.session.AttributeWrapperUtils->unwrapObject
weblogic.servlet.internal.session.AttributeWrapperUtils->unwrapEJBObjects
weblogic.ejb.container.internal.BusinessHandleImpl->getBusinessObject
weblogic.ejb20.internal.HomeHandleImpl->getEJBHome
javax.naming.InitialContext->lookup
最终生成Gadget利用链的示例代码如下:
有需要源代码的小伙伴请点击关注公众号后私聊。
构建T3协议发包程序,将上述序列化的Gadget发送至WebLogic,成功到达`getEJBHome`,效果如下:
完整函数调用栈如下:
由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。
点关注,不迷路!
关注公众号回复“漏洞”获取研究环境或工具
原文始发于微信公众号(且听安全):【最新漏洞预警】CVE-2022-21350 WebLogic T3反序列化漏洞Gadget分析与构造之旅