entity framework 调用 oracle 序列_CVE-2020-2555反序列化分析

声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

No.1

起因

该洞主要是weblogic的coherence.jar存在可以构造反序列化的gadget类,通过T3协议处理后导致漏洞触发,本文主要是学习weblogicT3序列化,并构造利用链的过程。

No.2

利用链分析

通过网上公布的poc,得知利用链如下:

4a2c6d562c94447b1c832940fa7b6b2b.png

poc

1399aed5ec5ade70983cd2d0fbd710ef.png

首先查看ReflectionExtractor.extract方法:

80c7125db8edc4dc2fd960d94f823ef6.png 61ab3222e8cc1d352265a69425f1cc96.png 6b87d6a5c899c128305baa1ea41b7efc.png

可以看到这里return了一个method.invoke,进一步构造代码如下。

283d65c5549b55fbf6c3a3a644deeee2.png 09ba3eb0a3758cb81ba9a213addfc60a.png

可以利用该代码直接弹出cmd,ReflectionExtractor 这个方法设置了method和invoke的方法。poc最开使得代码类似于CommonsCollections1的transform都是做了一个this.method的赋值。

8b42c01199b5375b8aab348378d21b4a.png

但是只有触发extract方法时,该反射调用的最终方法才会被执行。这里根据payload,进一步跟入,查看LimitFilter类的toString方法

5564160b039e970d2f37a2877aa4fe08.png

这里可以看到在LimitFilter的toString方法中之只要满足判断this.m_comparator的值属于ValueExtractor类就能进行对extract方法的调用。而reflectionExtractor刚好属于ValueExtractor类

构造测试代码

57461237cafe12b687fbcf9e2bceb550.png

这里相当于执行了第一个测试代码的reflectionExtractor.extract(runtime);这里整个invoke反射链就完成了,接下来是如何进行readObject的。

这里可以看到这个BadAttributeValueExpException和CommonsCollections1使用的反序列化方法是一样的。执行BadAttributeValueException.readObject前,把val赋值为LimitFilter这个类就回调用toString方法,而LimitFilter.toString刚好形成之前的反射链。

6fba074779ea70383f0a66ccac1773fc.png

BadAttributeValueException的readObject方法

f76c5dc8b8bc4d62ad72baac5a7d7808.png 7469f181232c5080f95285bdd0822424.png

至此整个反序列化完成

73cf0034eae673fbacfdfb20b124c0a9.png 98ebfe535aa8109117648e13b08dd637.png

使用此条链会出现如下报错是因为Runtime这个类没实现序列化接口。原理已经搞清楚了修改一下poc就可以利用了。

de0858024c1700a014ac88b51b05c756.png

No.3

修复建议

升级补丁,参考oracle官网发布的补丁https://www.oracle.com/security-alerts/cpujan2020.html 如果不依赖T3协议进行JVM通信,禁用T3协议。

进入WebLogic控制台,在base_domain配置页面中,进入安全选项卡页面,点击筛选器,配置筛选器。在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则框中输入 7001 deny t3 t3s 保存生效(需重启)

0b218e5fe9f4ec63c96484651835aebc.png

https://www.easyaq.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值