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. 1. 查找调用了Method.invoke的方法

  2. 2. 筛出可被序列化的方法所在类

  3. 3. 剔除参数不可控的结果

注意到com.tangosol.util.extractor.ReflectionExtractor#extract,与transform不说丝毫不差至少也是大同小异。

图片

同包中也有与ChainedTransformer作用一致的ChainedExtractorReflectionExtractor实现了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.AbstractExtractorcompare中调用了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)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/301470.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

spring boot支付宝沙箱环境测试支付功能

目录 一、安装支付宝支付demo 二、配置demo信息 三、配置回调地址和异步地址 四、内网穿透 (一)简介 (二)使用场景 (三)内网穿透的几个常用软件 (四)使用natapp 一、安装支付…

ckplayer如何设置键盘的方向左和方向右是快退或快进多少秒?

默认是20秒,那怎么按照自定义的配置呢? 打开文件:“.\ckplayer\js\ckplayer.js” 然后在下面的函数中修改就可以了: 下面的代码我已经修改为了按一次方向左键为快退3秒,按一次方向右键为快进5秒。 /** fastBack* 功能&…

第03章_运算符与流程控制

第03章_运算符与流程控制 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题脉络 1. 运算符(Operator) 运算符是一种特殊的符号,用以表示数据的运算、赋…

DevOps搭建(十五)-kubernetes部署项目详细步骤

1、k8s简介 k8s官网地址 https://kubernetes.io/zh-cn/docs/home/ 2、安装kuboard 详细步骤可参考官网 https://kuboard.cn/install/install-k8s.html 2.1、环境准备 至少 2 台 2核4G 的服务器。 选择v1.19,因为高版本的已经把docker给舍弃掉了。 https://k…

Vue3插件开发教程:步步指导如何编写Vue3插件

关注⬆️⬆️⬆️⬆️ 专栏后期更新更多前端内容 文章目录 Vue3 插件插件注册形式插件主要的场景使用插件Vue3 插件 插件 (Plugins) 是一种能为 Vue 添加全局功能的工具代码。 插件注册形式 一个插件可以是一个拥有 install() 方法的对象,也可以直接是一个安装函数本身。 i…

Transformer从菜鸟到新手(三)

引言 这是Transformer的第三篇文章,上篇文章中我们了解了多头注意力和位置编码,本文我们继续了解Transformer中剩下的其他组件。 下篇文章会介绍完整的训练过程。 层归一化 层归一化想要解决一个问题,这个问题在Batch Normalization的论文…

【JaveWeb教程】(1)Web前端基础:HTML+CSS入门不再难:一篇文章教你轻松搞定HTML与CSS!

目录 1. 前端开发介绍2. HTML & CSS2.1 HTML快速入门2.1.1 操作2.1.2 总结 2.2 开发工具2.3 基础标签 & 样式2.3.1 新浪新闻-标题实现2.3.1.1 标题排版2.3.1.1.1 分析2.3.1.1.2 标签2.3.1.1.2 实现 2.3.1.2 标题样式2.3.1.2.1 CSS引入方式2.3.1.2.2 颜色表示2.3.1.2.3 …

书生·浦语大模型趣味 Demo笔记及作业

文章目录 笔记作业基础作业:进阶作业: 笔记 书生浦语大模型InternLM-Chat-7B 智能对话 Demo:https://blog.csdn.net/m0_49289284/article/details/135412067书生浦语大模型Lagent 智能体工具调用 Demo:https://blog.csdn.net/m0_…

大模型日报-20240108

M(2)UGen:利用 LLM 理解和生成音乐 https://github.com/shansongliu/M2UGen M (2) UGen 模型是一种音乐理解和生成模型,能够从文本、图像、视频和音频中进行音乐问答和音乐生成,以及音乐编辑。该模型利用编码器,如用于音乐理解的…

代码随想录day60:贪心算法|84.柱状图中最大的矩形

84. Largest Rectangle in Histogram 进行优化,如果我们想获得left就给他left即可,我们只需要在求宽度的时候用到left,而没必要修改原数组。 所以给栈插入一个虚拟索引-1 思考过程: left应该为多少呢? 首先确定left是什么&#…

吴飞教授 人工智能 模型与算法 启发式搜索课件发散分析

一、文章介绍 本文是针对吴飞教授在MOOC课程 :《人工智能:模型与算法》 2.1节 启发式搜索的课前发散 在课程2.1节 启发式搜索章节中,吴飞教授以如何计算城市地图两点之间最短路径为例,重点讲授了贪婪最佳优先搜索和A*搜索算法&a…

Materialise Mimics各版本安装指南

Materialise Mimics下载链接 https://pan.baidu.com/s/1GYnAuXfbgk_n-OXLNSOt6w?pwd0531 1.鼠标右击【Materialise Mimics21】压缩包(win11及以上系统需先点击“显示更多选项”)【解压到 Materialise Mimics21】。 2.打开解压后的文件夹,鼠…

网页设计与制作web前端设计html+css+js成品。电脑网站制作代开发。vscodeDrea 【企业公司宣传网站(HTML静态网页项目实战)附源码】

网页设计与制作web前端设计htmlcssjs成品。电脑网站制作代开发。vscodeDrea 【企业公司宣传网站(HTML静态网页项目实战)附源码】 https://www.bilibili.com/video/BV1Hp4y1o7RY/?share_sourcecopy_web&vd_sourced43766e8ddfffd1f1a1165a3e72d7605

大学物理-实验篇——用拉伸法测定金属丝的杨氏(弹性)模量(胡克定律、杨氏模量、平面反射镜、三角函数、螺旋测微器)

目录 预备知识 力学:胡克定律(Hookes law) 材料力学:杨氏模量 光学:平面反射镜 数学:三角函数 螺旋测微器 实验目的 实验仪器 实验原理 1.拉伸法测杨氏弹性模量 2.光杠杆放大法测量微小伸长量 …

Mac M1 Parallels CentOS7.9 Install Parallels Tools

一、挂载parallels-tools安装包 mkdir /media/cdrom/ mount /dev/cdrom /media/cdrom/ mount: /dev/sr0 写保护,将以只读方式挂载二、GCC升级 yum install -y centos-release-scl yum install -y devtoolset-8-gcc*# 切换当前会话中gcc版本为8 scl enable devtool…

HarmonyOS应用开发学习笔记 UIAbility组件与UI的数据同步 EventHub、globalThis

1、 HarmoryOS Ability页面的生命周期 2、 Component自定义组件 3、HarmonyOS 应用开发学习笔记 ets组件生命周期 4、HarmonyOS 应用开发学习笔记 ets组件样式定义 Styles装饰器:定义组件重用样式 Extend装饰器:定义扩展组件样式 5、HarmonyOS 应用开发…

重磅!图扑软件获评国家级专精特新“小巨人”企业

2023 年 7 月,工业和信息化部审核并公布了第五批国家级专精特新“小巨人”企业,图扑软件成功入选,荣膺国家级专精特新“小巨人”企业称号。 此次荣获国家级专精特新“小巨人”企业称号,不仅是对图扑软件在可视化和数字孪生领域专业…

ARCGIS PRO SDK Geoprocessing

调用原型:Dim gpResult AS IGPResult await Geoprocessing.ExecuteToolAsync(调用工具名称, GPValue数组, environment, null, null, executeFlags) 一、调用工具名称:地理处理工具名称。如面转线:management.PolygonToLine,而非…

实例:NodeJS 操作 Kafka

本人是C#出身的程序员,c#很简单就能实现,有需要的可以加我私聊。但是就目前流行的开发语言,尤其是面向web方向应用的,我感觉就是Nodejs最简单了。下面介绍: 本文将会介绍在windows环境下启动Kafka,并通过n…

java contains区分大小写吗?String的contains方法区分大小写

文章目录 一、contains区分大小写二、重写contains方法,实现忽略大小写 一、contains区分大小写 Java中的contains方法默认是区分大小写的,如果要忽略大小写,可以使用String类的equalsIgnoreCase()方法来代替。 Java中的contains方法默认是…