
原理分析 | Servlet —— Tomcat 内存马
原理分析 | Servlet —— Tomcat 内存马 系列:Tomcat 内存马 —— 继 Filter 型之后,聊聊 Servlet 型的动态注入。 目录 一、Servlet 是如何注册和工作的 二、Filter 和 Servlet 的区别 三、回顾对比:Filter 型 vs Servlet 型 四、前置知识:Servlet 动态注册 API 五、直接调用 addServlet ...

原理分析 | Servlet —— Tomcat 内存马 系列:Tomcat 内存马 —— 继 Filter 型之后,聊聊 Servlet 型的动态注入。 目录 一、Servlet 是如何注册和工作的 二、Filter 和 Servlet 的区别 三、回顾对比:Filter 型 vs Servlet 型 四、前置知识:Servlet 动态注册 API 五、直接调用 addServlet ...

原理分析 | Filter —— Tomcat 内存马从零到注入目录 一、快速搭建环境 二、Filter 是什么,正常怎么用 代码解释 web.xml 方式注册 Filter 两种静态注册方式对比 三、StandardContext 中的三个核心 Filter 集合 三者的协作流程 对内存马的关键意义 四、动态注册:绕过 web.xml 注入 Filter 内存马 第一步:拿到 St...

代码审计 | Log4j2 —— CVE-2021-44228 JNDI 注入与递归解析的完整链路分析目录 环境搭建 漏洞复现 编写测试代码 构造恶意 class 文件 启动 LDAP 转发器 请求流程 使用 JNDI 工具一键利用 代码审计 payload 入口追踪 MessagePatternConverter:关键转折点 substitute:变量解析核心 resolveVari...

目录 环境搭建 vulhub 快速复现 shiro-root-1.2.4 源码调试环境 抓包观察 RememberMe Cookie 源码调试分析 Cookie 获取流程 解密逻辑 反序列化触发点 硬编码 Key 的问题 加密结构梳理 漏洞利用 踩坑一:版本不匹配 踩坑二:ClassLoader 问题 最终打通 总结 环境搭建vulhub 快速复现先用 vulhub 把环境跑...

目录 环境准备 CB链的执行终点 怎么触发 getOutputProperties() 跟源码 入口:PriorityQueue CB 链 vs CC2 对比 构造参数分析 BeanComparator 构造方法的坑 add 占位的问题 POC 补充 环境准备Maven 依赖: 12345<dependency> <groupId>commons-beanu...

代码审计 | CC2 链 —— _tfactory 赋值问题 PriorityQueue 新入口目录 前言 环境 链路分析 Sink:TemplatesImpl 与 _tfactory 赋值问题 InvokerTransformer TransformingComparator(关键节点) PriorityQueue:入口点 EXP 编写 完整调用链追踪 为什么必须用 CC 4.0 小结...

代码审计 | CC3链 —— 实例化 vs 反序列化 InvokerTransformer vs InstantiateTransformer目录 环境说明 CC3的设计思路 前置知识:实例化触发 vs 反序列化触发 readObject 触发实验 newInstance 触发实验 反射补充:clazz.newInstance() 的限制 构造恶意 Class:EvilClass ...

代码审计 | CC6 链 —— 反向构造 payload 与 ysoserial 为什么需要 CC6?CC1 的限制 CC6 存在的意义 调用链全貌 一步步构造 CC6 第一步:用 ChainedTransformer 串联恶意链 第二步:LazyMap.get() 触发 transform 第三步:谁调用 get()?——TiedMapEntry.getValue() 第四步:谁调用 ge...

代码审计 | CC1 LazyMap 链 —— 动态代理 学习笔记,记录自己学 CC1 LazyMap 版的思路历程 前置:已经看完 TransformedMap 版,Transformer 链那部分这里就不重复了,直接从”触发点不同”讲起。 目录 和 TransformedMap 版有什么区别 第一步:LazyMap 的触发机制 第二步:谁来调用 LazyMap.get() Annot...

学习笔记,记录自己学 CC1 链的思路历程,不是教程,有啥问题欢迎交流。 目录 最终目标是什么 通过反射调用函数 但实际场景中没地方写代码怎么办 方式 A:直接传输 Payload(CC 链) 方式 B:远程类加载 Gadget Chain 的由来 CC1 链构造过程 环境准备 第一步:找到能执行命令的点 —— InvokerTransformer 第二步:Runtime 不能序列...