JDK原生反序列化利用链7u21】的更多相关文章

前言 JDK 7u21以前只粗略的扫过一眼,一看使用了AnnotationInvocationHandler,就以为还是和 CC1 一样差不多的利用方式,但最近仔细看了下利用链发现事情并不简单- 7u21 要求你能理解: TemplatesImpl 代码执行原理 动态代理是什么 AnnotationInvocationHandler 利用原理 其实7u21是对AnnotationInvocationHandler 的进一步挖掘. 调用链 HashSet.readObject() map.put(…
Apache Common-collection 反序列化利用链解析 TransformedMap链 参考Java反序列化漏洞分析 - ssooking - 博客园 (cnblogs.com) poc package com.company; import org.apache.commons.collections.Transformer; import org.apache.commons.collections.functors.ChainedTransformer; import org…
笔记里直接复制出来的   1 composer直接获取框架代码   ➜  composer create-project --prefer-dist topthink/think tp5137 ➜  cd tp5137 ➜  vim composer.json # 把"topthink/framework": "5.1.*"改成"topthink/framework": "5.1.37" ➜  composer update…
目录 1 基础 ConstantTransformer InvokeTransformer ChainedTransformer LazyMap TiedMapEntry TransformingComparator PriorityQueue TemplatesImpl 2 实现readObject方法的类及其利用链 BadAttributeValueExpExceptionCC PriorityQueueCC PriorityQueueCC2 HashMapCC HashSetCC Hash…
jdk原生链分析 原文链接 作为jdk中目前发现的原生链,还是有必要要分析这个用法的.全文仅限尽可能还原挖掘思路 JDK7u21 在很多链中,TemplatesImpl一直发挥着不可或缺的作用,它是位于jdk源码中的一段Gadget:getOutputProperties()->newTransformer()->getTransletInstance()->... templatesImpl利用回顾: 加载对象需要是com.sun.org.apache.xalan.internal.x…
代理模式:利用JDK原生动态实现AOP http://www.cnblogs.com/qiuyong/p/6412870.html 1.概述 含义:控制对对象的访问. 作用:详细控制某个(某类)某对象的方法,在调用之前做前置处理,调用之后做后置处理,从而实现将统一流程代码放在代理类中处理. 举例:我们在学习JDBC的时候,在批量处理的时候遇到过事务.流程:设置提交方式为手动提交-开启事务-批量处理-关闭事务-设置提交方式为默认.从这里我们清晰可以看见,每次进行批处理的时候,唯有增删改操作变化,其…
0. 前言 记录在FastJson反序列化RCE漏洞分析和利用时的一些细节问题. 1. TemplatesImpl的利用链 关于 parse 和 parseObject FastJson中的 parse() 和 parseObject()方法都可以用来将JSON字符串反序列化成Java对象,parseObject() 本质上也是调用 parse() 进行反序列化的.但是 parseObject() 会额外的将Java对象转为 JSONObject对象,即 JSON.toJSON().所以进行反序…
fastjson反序列化-JdbcRowSetImpl利用链 JdbcRowSetImpl利用链 fastjson反序列化JdbcRowSetImpl - Afant1 - 博客园 (cnblogs.com) 这里涉及了JNDI与RMI的概念. 其本质为JNDI注入. 附上示例代码 JdbcRowSetImplPoC.java package org.lain.poc.poclist; import com.alibaba.fastjson.JSONObject; import com.alib…
InvokerTransformer 首先来看 commons-collections-3.1-sources.jar!\org\apache\commons\collections\functors\InvokerTransformer.java 下的 transform 方法 public Object transform(Object input) { if (input == null) { return null; } try { Class cls = input.getClass(…
JdbcRowSetImpl 接着继续学习fastjson的第二条链JdbcRowSetImpl,主要是利用jndi注入达到的攻击,而且没有什么利用限制,而且其原理就是setter的自动调用,具体setter调用代码可以参考上篇文章调试的部分 1.漏洞复现 1.1.组件依赖版本 fastjson:1.2.22-1.2.24 1.2.利用方式 不像TemplatesImpl链需要指定的利用方式,JdbcRowSetImpl链只需要可以控制输入就能利用. JSON.parse(evil); JSON…