漏洞篇 - RMI 相关的攻击
攻击 RMI前置知识:基础篇 - RMI 协议详解 我们可以将参与 RMI 远程调用的角色分为三个:Server 端、Registry 端、Client 端(一般来说 Server 端和 Registry 端在一起),它们三者之间都会进行通信,并且...
攻击 RMI前置知识:基础篇 - RMI 协议详解 我们可以将参与 RMI 远程调用的角色分为三个:Server 端、Registry 端、Client 端(一般来说 Server 端和 Registry 端在一起),它们三者之间都会进行通信,并且...
RMI 入门案例及源码分析
ROME 是一个强大的 Java 库,用于解析和生成各种格式的 RSS 和 Atom feeds 。它兼容多种版本的 RSS(包括 RSS 0.90、0.91、0.92、0.93、0.94、1.0 和 2.0 )和 Atom(包括 0.3 和 1.0 )。ROME 提供了一个统一的 API ,简化了处理不同 feed 格式的复杂性。
Javassist 是一个用于操作 Java 字节码的类库。Java 字节码存储在类文件的二进制文件中。每个类文件都包含一个 Java 类或接口。类 Javassist.CtClass 是对类文件的抽象表示。(编译时类 CtClass )对象是处理类文件的句柄(句柄 Handle 是一个是用来标识对象或者项目的标识符)。
HotSwappableTargetSource 是在 Spring AOP 中出现的一个类。作用是可以在代理 bean 运行过程中,动态更新实际 bean 对象。HotSwappableTargetSource 类实现了 TargetSource 接口。对外暴露 getTarget 方法,提供真正的 target 对象。再说的明白一点,HotSwappableTargetSource 是对真正 target 对象的封装。在 Spring 的源码中,体现在 JdkDynamicAopProxy 中的 invoke 方法中。
CC4 链在 Commons Collections 版本为 3.2.1 的背景下,可以使用 TransformedMap 或者 LazyMap 来执行 transform 方法,但当 Commons Collections 的版本提升到 4.0 时...
CC3 链的核心在于利用 TemplatesImpl 加载恶意类时执行静态代码块。
前面在分析 CC1链 的 ysoserial 版时,我们知道 LazyMap 的 get 方法会调用成员属性 factory 的 transform 方法,而我们上一次是通过 AnnotationInvocationHandler 的 invoke 方法来调用这个 get 方法的。那么还有哪里能调用 LazyMap 的 get 方法呢?我们的 CC6 链给出了另一条路径:TiedMapEntry 类的 getValue 方法会调用成员属性的 get 方法。
在前面学习 CC1 链时,我们使用 TransformedMap 作为利用链,但其实除了 TransformedMap 之外,还有 DefaultedMap 和 LazyMap 也可以作为利用链,它们都在 org.apache.commons.collections.map 包下。这一节我们来分析 ysoserial 工具中利用的 CC1 链,它是将 LazyMap 作为利用链的。
前言:前面在分析初始版本 CC1 链的时候,查看 sun 包里的 AnnotationInvocationHandler 类的源码,发现变量名全都是 var 开头,非常不便于阅读,接下来将介绍如何使用 IDEA 查看带 sun 包的 JDK 源码,以及导入的依赖源码,这里的源码指的是 .java 文件。