Java反射机制:深入理解与实践
本文详细介绍了Java反射机制的核心概念和使用方法,涵盖了Class对象的获取、类实例的创建、方法调用及成员变量修改,并通过Runtime.exec示例演示了其在安全场景的应用。
先理解 Java 动态能力的基础。
石砚 · 机制到漏洞
先理解反射、类加载、序列化、RMI、JNDI 等 Java 底层机制,再进入命令执行、SSRF、Struts 与 Commons Collections 利用链。
本文详细介绍了Java反射机制的核心概念和使用方法,涵盖了Class对象的获取、类实例的创建、方法调用及成员变量修改,并通过Runtime.exec示例演示了其在安全场景的应用。
先理解 Java 动态能力的基础。
本文深入探讨Java动态代理的原理、核心API(Proxy和InvocationHandler)及其常见应用场景,并通过代码示例演示如何利用动态代理实现方法调用日志功能。
补充代理、InvocationHandler 与 AOP 直觉。
本文详细解析Java虚拟机类加载机制,包括加载、链接、初始化三大步骤,介绍内置类加载器及核心方法。通过代码示例,深入探讨如何自定义ClassLoader实现类动态加载,并对比Class.forName与ClassLoader.loadClass的区别,助你掌握Java类加载的原理与应用。
理解 ClassLoader 和动态加载。
深入解析Java对象的序列化与反序列化机制,包括Serializable、Externalizable接口、ObjectInputStream/ObjectOutputStream的使用方法,并揭示其内部实现原理及构造方法绕过等细节。
进入序列化与反序列化机制。
本文详细解析Java RMI(远程方法调用)的底层架构、Stub/Skeleton通信机制及工作原理,并通过代码示例演示服务搭建与客户端调用。文末深入探讨RMI通信中的Java反序列化漏洞及其潜在风险。
看远程调用和反序列化入口。
本文详细介绍了Java命名和目录接口(JNDI)的核心概念,包括命名服务、目录服务和引用,并提供了使用JNDI创建目录服务对象的Java代码示例。
理解命名目录服务与后续漏洞语境。
本文详细讲解Java中本地命令执行的原理与实现,涵盖Runtime.exec、ProcessBuilder的使用,以及通过反射绕过限制的方法,并探讨Java 9+模块系统对反射的影响,是理解Java应用RCE漏洞的重要参考。
把 Runtime、ProcessBuilder 与反射联系起来。
本文深入探讨Java中URLConnection类的基本概念、支持协议及使用方法。重点分析URLConnection引发SSRF漏洞的机制、利用方式和有效的防御策略。
从 Java 网络访问理解 SSRF。
本文详细介绍了Java内部API `sun.misc.Unsafe` 的获取方法,并演示了如何利用其 `allocateInstance` 和 `defineClass` 方法绕过传统机制创建对象和定义类,探讨其在安全场景中的应用。
看 Unsafe 与底层绕过思路。
本文详细介绍了Java JDBC的基础概念、数据库连接原理,以及数据源DataSource的多种实现和配置方式。深入探讨了`Class.forName`机制与SPI原理,并触及了Spring数据源在授权渗透测试中的应用。
补数据库连接与数据源相关基础。
本文深入探讨Java文件系统的跨平台机制,从`java.io`到`java.nio.2`的实现原理。文章还介绍了不同文件操作方式及其底层JNI调用,并提及NIO在安全绕过WAF/RASP方面的应用。
理解 IO/NIO 与文件系统安全语境。
本文详细介绍了JNI(Java Native Interface)的安全基础,通过实际案例讲解如何利用JNI实现Java与C/C++的本地命令执行,并探讨其潜在的安全风险。
接触 Java 与 Native 的边界。
本文深入解析Java反序列化漏洞中的Commons Collections 1(CC1)利用链,详细阐述其核心组件InvokerTransformer的工作原理及命令执行过程。
落到 Commons Collections 1 利用链。