AspectJWeaver
0x01 SimpleCache$StoreableCachingMap
0x01 SimpleCache$StoreableCachingMap
BeanShell是一个小型的,免费的,可嵌入的Java源代码解释器,具有对象脚本语言功能,用Java编写。BeanShell动态地执行标准Java语法,并使用常见的脚本便利(如Perl和JavaScript中的松散类型、命令和方法闭包)对其进行扩展。
C3P0(Connection Pool 3.0)是一个用于管理数据库连接池的开源 Java 库,实现了数据源和 JNDI 绑定,支持 JDBC3 规范和 JDBC2 的拓展,在很多开源项目中都使用到。
Ceylon 是一种面向对象编程语言,旨在提供一种简洁、可读性强、可靠性高的编程语言, 适用于企业级应用程序开发和大规模软件工程项目。
Click Framework 是一个用于构建基于 Java 的 Web 应用程序的开源框架,太老了,简单记录一下。
Clojure1
在之前分析 cc4 的时候,用到了 TransformingComparator、ChainedTransformer 等类来触发 TemplatesImpl。commons-beanutils 是 Apache 提供的一个用于操作 JAVA bean 的工具包,里面提供了各种各样的工具类,让我们可以很方便的对 bean 对象的属性进行各种操作,由此引出了 CB 系列的反序列化链。
0x01 LazyMap是什么?& 引出动态代理
Commons Collections包为Java标准的Collections API提供了相当好的补充。在此基础上对其常用的数据结构操作进行了很好的封装、抽象和补充。官方API中介绍了各个包下的接口与实现,对于 org.apache.commons.collections.functors 包下的功能类,官方描述 WARNING: from v3.2.2 onwards this several classes in this package will throw an UnsupportedOperationException when trying to serialize or de-serialize an instance to prevent potential remote code execution exploits. 存在反序列化问题,因此漏洞分析主要围绕这个包展开。
0x01 TransformingComparator
0x01 TemplatesImpl
0x01 BadAttributeValueExpException
0x01 修正 高版本不可行原因 - LinkedHashMap
0x01 Hashtable
Ref//github.com/frohoff/ysoserial/pull/116/files
0x01 DefaultedMap
0x01 CommonsCollectionsK1、K2、K4
0x00 fastjon 触发 getter
0x01 MethodClosure
ORM 框架
0x01 调用链构建
0x01 保留 AbstractTranslet
0x01 聊聊序列化
0x01 AnnotationInvocationHandler#equalsImpl()
0x00 JDK7u21 怎么修复的漏洞
前面已经分析过 Fastjson 和 Jackson 了,ysoserial 中的 JSON1 这条链子同样是用通过触发 getter 的方式来触发,这不过这条复杂一点。
Jython 是 Python 编程语言的一个实现,它是用 Java 编写的,并且运行在 Java 平台上。因此可以在 Jython 中使用与标准 Python 相同的语法和标准库来执行系统命令,并且可以利用 Java 平台的特性和库,可以通过这个代码执行命令
Mozilla Rhino JavaScript 是一个开源的 JavaScript 引擎,由 Mozilla Foundation 开发,用于在 Java 环境中执行 JavaScript 代码。
这条调用链最后的 EL 表达式没复现出来,简单记录下调用链
该篇章为 Java 反序列化相关分析文章,分析时会按照 Marshalling Pickles 中提到的 gadget chain 概念,将 ysoserial 原先的调用链拆分为入口点 (kick-off), 触发点 (sink),其余为中间的调用链 (chain) 来分析。
0x00 相关类介绍
Spring1
0x01 TemplatesImpl 最初形态
二次反序列化简单来说就是在一次反序列化的中包含了另一个需要反序列化的对象,而包含对象并没有用重新实现的含有黑名单的 ObjectInputStream 处理,从而形成绕过。
周末看了下 1ue 师傅 探索Java反序列化绕WAF新姿势 这篇文章想把这个 trick 实现到自己的工具里,分析了一下实现了一个算法直接加密原始数据。Demo 见 GitHub https://github.com/Whoopsunix/utf-8-overlong-encoding
既然被公开了,就发一下之前挖的时候记的笔记叭