反序列化漏洞分析及复现

普元Primeton EOS Platform(以下简称普元EOS)在节前被爆出存在反序列化漏洞。遂在此分析该漏洞成因,如有疏漏或错误,欢迎大佬指正包涵。
普元 EOS 框架分析
1、分析WEB应用的第一步首先看一下,web.xml文件。
在web.xml中我们可以看到其中配置了一个filter,其对应的类为“com.eos.access.http.InterceptorFilter”,拦截了所有的请求。
在这里插入图片描述
2、跟进该拦截器的“doFilter”方法。
可以看到InterceptorFilter创建了一个WebInterceptorChain,并将后续处理委托给了WebInterceptorChain。
在这里插入图片描述
3、跟进createChain方法。
可以看到WebInterceptorChain是通过获取当前请求的“servletPath”。遍历“configs”中的WebInterceptorConfig的对象。调用WebInterceptorConfig对象的“getPattern()”方法获取“Pattern”。将获取到的“Pattern”正则表达式与当前请求的“servletPath”进行正则匹配。匹配成功则从“interceptors”中获取对应的IWebInterceptor对象,添加进Chain中。
在这里插入图片描述
3.1 那么“configs”对象和“interceptors”对象是从哪里来的呢?
“configs”对象和“interceptors”对象有多种来源并且会在应用程序启动时配置完成。
在WebInterceptorManager中我们可以看到WebInterceptorConfig对象部分是通过读取“handler-web.xml”文件生成。
在这里插入图片描述
除此之外“configs”对象和“interceptors”对象还会在“handler-processor.xml”文件中进行配置,并且在RequstProcessors中读取并配置。文章篇幅有限,感兴趣的师傅可以自行分析一下。
在这里插入图片描述
类似的配置文件还有“contribution.eosinf”(下文会用到,这里提一嘴)。

普元 EOS 鉴权
分析完框架之后我们接下来分析一下,普元EOS的鉴权部分代码。
普元EOS的鉴权代码主要位于“UserLoginWebInterceptor”和“UserLoginCheckedFilter”中。这两个“interceptor”分别在“contribution.eosinf”和“handler-web.xml”中进行配置。 跟进UserLoginCheckedFilter的“doIntercept()”方法。首先判断是否处于登录状态,如果处于登录状态则直接放行。如果未登录则判断是否为“白名单”路径,如果是白名单路径则放行。再判断是否为“黑名单“路径,如果为黑名单路径则抛出异常。最后既不在”白名单“也不在”黑名单“也放行。 “UserLoginWebInterceptor”的代码逻辑与“UserLoginCheckedFilter”相似,本文不再重复分析。

在这里插入图片描述
黑白名单中的路径在”user-config.xml“中进行配置。
在这里插入图片描述
普元EOS JMX 反序列化漏洞
接下来到了本文的重点。
根据网上曝光的相关信息可以得知该漏洞的路由方式为”.jmx“,而在”handler-processor.xml“中我们可以看到与”.jmx“相关的配置。
在这里插入图片描述
跟进配置文件中的”JmxServiceProcessor“类,我们可以看到在”JmxServiceProcessor“类的”process()“方法中直接从request中获取了请求体,作为参数生成了ObjectInputStream的对象,并且调用了它的”readObject()“方法,触发了反序列化漏洞。
在这里插入图片描述
复现
利用该漏洞我们只需要向”/default/.jmx“路径,POST 发送payload。因为普元EOS存在”commons-collections“依赖,并且版本处于可利用范围内。因此直接使用CC链即可。
在这里插入图片描述
在这里插入图片描述
CC6变种
在此和大家分享一个CC6的变种。
在ysoserial中CC6是通过反射调用 ”Runtime.getRuntime().exec()“实现命令执行,不能执行复杂的操作。我们可以通过调用JS引擎的方式实现复杂的操作,例如注入内存马等,代码如下。

在这里插入图片描述

WebLogic和Fastjson反序列化漏洞是两个独立的漏洞,但它们都涉及到Java反序列化安全问题。我会分别给你介绍这两个漏洞的原理和复现方法。 1. WebLogic反序列化漏洞原理分析复现WebLogic反序列化漏洞是指通过利用WebLogic Server中T3协议的漏洞,攻击者可以在目标服务器上执行任意代码。这个漏洞的根本原因是WebLogic Server在处理T3协议时未正确过滤用户提供的数据,导致攻击者可以构造恶意的序列化数据,在服务器端触发反序列化漏洞复现漏洞的步骤如下: 1) 下载并配置WebLogic Server环境。 2) 使用ysoserial工具生成payload,例如利用CommonsCollections的payload。 3) 构造T3协议请求,将生成的payload嵌入到请求中。 4) 启动WebLogic Server,并发送恶意请求。 5) 成功触发反序列化漏洞后,攻击者可以执行任意代码。 2. Fastjson反序列化漏洞原理分析复现: Fastjson是一个常用的Java JSON库,该漏洞存在于Fastjson的版本1.2.24及之前的版本中。攻击者可以通过构造恶意的JSON数据,触发Fastjson的反序列化漏洞,从而执行任意代码。 漏洞的原因是Fastjson在反序列化JSON数据时,对默认类型进行了自动化检测和加载,并且允许调用类的默认构造函数,从而导致了代码执行漏洞。攻击者可以通过构造恶意的JSON数据,在目标服务器上执行任意代码。 复现漏洞的步骤如下: 1) 下载并配置Fastjson版本1.2.24或之前的环境。 2) 使用ysoserial工具生成payload,例如利用CommonsCollections的payload。 3) 构造恶意的JSON数据,将生成的payload嵌入到JSON中。 4) 编写测试代码,使用Fastjson进行反序列化操作。 5) 执行测试代码,成功触发反序列化漏洞后,攻击者可以执行任意代码。 请注意,漏洞利用是非法行为,仅在授权范围内进行安全测试和研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值