Groovy反序列化链分析】的更多相关文章

0x00 前言   Java反序列化的漏洞爆发很久了,此前一直想学习一下.无奈Java体系太过于复杂,单是了解就花了我很久的时间,再加上懒,就一直拖着,今天恰好有空,参考@iswin大佬两年前的分析,我自己跟踪了一下流程,并按自己的想法重写了一下POC,在此做个记录. 0x01 漏洞环境搭建   首先我们需要明确的是,该漏洞影响的范围是Groovy 1.7.0-2.4.3.我们借助于Idea构建一个空白的maven项目,然后配置pom.xml文件,添加如下依赖: <dependencies>…
前言 基本的魔术方法和反序列化漏洞原理这里就不展开了. 给出一些魔术方法的触发条件: __construct()当一个对象创建(new)时被调用,但在unserialize()时是不会自动调用的 __destruct()当一个对象销毁时被调用 __toString()当一个对象被当作一个字符串使用 __sleep() 在对象在被序列化之前运行 __wakeup将在unserialize()时会自动调用 __set方法:当程序试图写入一个不存在或不可见的成员变量时,PHP就会执行set方法. __…
jdk原生链分析 原文链接 作为jdk中目前发现的原生链,还是有必要要分析这个用法的.全文仅限尽可能还原挖掘思路 JDK7u21 在很多链中,TemplatesImpl一直发挥着不可或缺的作用,它是位于jdk源码中的一段Gadget:getOutputProperties()->newTransformer()->getTransletInstance()->... templatesImpl利用回顾: 加载对象需要是com.sun.org.apache.xalan.internal.x…
在 ysoserial中 commons-collections2 是用的 PriorityQueue reaObject 作为反序列化的入口 那么就来看一下 java.util.PriorityQueue.java 的 readObject方法 PriorityQueue#readObject private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundExcepti…
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(…
InstantiateTransformer commons-collections 3.1 中有 InstantiateTransformer 这么一个类,这个类也实现了 Transformer的transform方法 ,如下: public Object transform(Object input) { try { if (input instanceof Class == false) { throw new FunctorException( "InstantiateTransform…
原文:http://blog.chaitin.com/2015-11-11_java_unserialize_rce/ 博主也是JAVA的,也研究安全,所以认为这个漏洞非常严重.长亭科技分析的非常细致. 1 背景 2015年11月6日,FoxGlove Security安全团队的@breenmachine 发布的一篇博客[3]中介绍了如何利用Java反序列化漏洞,来攻击最新版的WebLogic.WebSphere.JBoss.Jenkins.OpenNMS这些大名鼎鼎的Java应用,实现远程代码…
Java 反序列化攻击漏洞由 FoxGlove 的最近的一篇博文爆出,该漏洞可以被黑客利用向服务器上传恶意脚本,或者远程执行命令. 由于目前发现该漏洞存在于 Apache commons-collections, Apache xalan 和 Groovy 包中,也就意味着使用了这些包的服务器(目前发现有WebSphere, WebLogic,JBoss),第三方框架(Spring,Groovy),第三方应用(Jenkins),以及依赖于这些服务器,框架或者直接/间接引用这些包的应用都会受到威胁…
有大量平均水平左右的"工人"可被选择.参与进来 -- 这意味着好招人 有成熟的.大量的程序库可供选择 -- 这意味着大多数项目都是既有程序库的拼装,标准化程度高而定制化场景少 开发工具.测试工具.问题排查工具完善,成熟 -- 基本上没有团队愿意在时间紧.任务重的项目情况下去做没有把握的.基础开发工具类的技术试探 有面向对象特性, 适合大型项目开发 -- 无数大型项目已向世人述说,"面向对象"是开发大型软件的优秀代码组织结构 能适应大型团队.多人协作开发 -- 代码需…
Groovy 读取json文件,并用gson反序列化 package com.bicycle.util import bicycle_grails.StationInfo import com.google.gson.Gson import com.google.gson.JsonArray import com.google.gson.JsonObject import com.google.gson.JsonParser import com.google.gson.reflect.Type…