Ysoserial Commons Collections3分析】的更多相关文章

Java安全之Commons Collections3分析 文章首发:Java安全之Commons Collections3分析 0x00 前言 在学习完成前面的CC1链和CC2链后,其实再来看CC3链会比较轻松.CC1的利用链是 Map(Proxy).entrySet()触发AnnotationInvocationHandler.invoke(),而CC2链的利用链是通过InvokerTransformer.transform()调用newTransformer触发RCE.这里就不说这么详细感…
0x00 前言 在ysoserial中,官方是没给gadget,这儿经过文章分析我认为的gadget,继承自AbstractTranslate的类被Javassist插桩后返回一个被修改过的templates(_bytecodes)并将其传给InstantiateTransformer后,InstantiateTransformer利用这个templates获得的构造函数加上从ConstantTransformer返回的TrAXFilter类将其实例化,实例化的过程中将会调用TrAXFilter…
Java安全之Commons Collections5分析 文章首发:Java安全之Commons Collections5分析 0x00 前言 在后面的几条CC链中,如果和前面的链构造都是基本一样的话,就不细讲了,参考一下前面的几篇文. 在CC5链中ysoserial给出的提示是需要JDK1.8并且SecurityManager需要是关闭的.先来介绍一下SecurityManager是干嘛的.SecurityManager也就是java的安全管理器,当运行未知的Java程序的时候,该程序可能有…
Java安全之Commons Collections7分析 0x00 前言 本文讲解的该链是原生ysoserial中的最后一条CC链,但是实际上并不是的.在后来随着后面各位大佬们挖掘利用链,CC8,9,10的链诞生,也被内置到ysoserial里面.在该链中其实和CC6也是类似,但是CC7利用链中是使用Hashtable作为反序列化的入口点. 0x01 POC分析 package com.test; import org.apache.commons.collections.Transforme…
Java安全之Commons Collections1分析(二) 0x00 前言 续上篇文,继续调试cc链.在上篇文章调试的cc链其实并不是一个完整的链.只是使用了几个方法的的互相调用弹出一个计算器. Java安全之Commons Collections1分析(一) 下面来贴出他的完整的一个调用链 Gadget chain: ObjectInputStream.readObject() AnnotationInvocationHandler.readObject() Map(Proxy).ent…
Java安全之Commons Collections1分析(一) 0x00 前言 在CC链中,其实具体执行过程还是比较复杂的.建议调试前先将一些前置知识的基础给看一遍. Java安全之Commons Collections1分析前置知识 0x01 CC链分析 这是一段poc代码,执行完成后会弹出一个计算器. import org.apache.commons.collections.*; import org.apache.commons.collections.functors.Chained…
Java安全之Commons Collections1分析前置知识 0x00 前言 Commons Collections的利用链也被称为cc链,在学习反序列化漏洞必不可少的一个部分.Apache Commons Collections是Java中应用广泛的一个库,包括Weblogic.JBoss.WebSphere.Jenkins等知名大型Java应用都使用了这个库. 0x01 前置知识 这里先来看一段网上找的,poc代码 import org.apache.commons.collectio…
Java安全之Commons Collections1分析(三) 0x00 前言 继续来分析cc链,用了前面几篇文章来铺垫了一些知识.在上篇文章里,其实是硬看代码,并没有去调试.因为一直找不到JDK的低版本. 全靠脑子去记传参内容尝试理解.后面的其实就简单多了,在上篇文章的基础上再去做一个分析. ​ Java安全之URLDNS链 Java安全之Commons Collections1分析前置知识 Java安全之Commons Collections1分析(一) Java安全之Commons Co…
Java安全之Commons Collections2分析 首发:Java安全之Commons Collections2分析 0x00 前言 前面分析了CC1的利用链,但是发现在CC1的利用链中是有版本的限制的.在JDK1.8 8u71版本以后,对AnnotationInvocationHandler的readobject进行了改写.导致高版本中利用链无法使用. 这就有了其他的利用链,在CC2链里面并不是使用 AnnotationInvocationHandler来构造,而是使用 ​ javas…
0x01.基础知识铺垫 接下来这个过程将涉及到几个接口和类 1.LazyMap 我们通过下⾯这⾏代码对innerMap进⾏修饰,传出的outerMap即是修饰后的Map: Map outerMap = TransformedMap.decorate(innerMap, valueTransformer); 2.Transformer Transformer是⼀个接⼝,它只有⼀个待实现的⽅法: 3.ConstantTransformer ConstantTransformer是实现了Transfo…
Apache Commons Collections2反序列化研究 环境准备 JDK 1.7 Commons Collections 4.0 javassit 前置知识 PriorityQueue() 使用默认的初始容量(11)创建一个 PriorityQueue,并根据其自然顺序对元素进行排序. PriorityQueue(int initialCapacity) 使用指定的初始容量创建一个 PriorityQueue,并根据其自然顺序对元素进行排序. 常见的方法: add(E e) 将指定的…
Apache Commons Collections1反序列化研究 环境准备 Apache Commons Collections 3.1版本 IDEA 需要一些java基础,反射.类对象.Classloader ctrl+shift+alt+s,导入jar包,也可以直接maven 导入yaso的包更方便 原理分析 感觉这篇文章把这个漏洞的原因讲的非常详细,https://xz.aliyun.com/t/136 Apache Commons Collections 是一个扩展了Java标准库里的…
0x01.POC分析 //创建一个CtClass对象的容器 ClassPool classPool=ClassPool.getDefault(); //添加AbstractTranslet的搜索路径 classPool.appendClassPath(AbstractTranslet); //创建一个新的public类 CtClass payload=classPool.makeClass("CC2"); //让上面创建的类继承AbstractTranslet payload.setS…
2.2.1  IoC容器的概念 IoC容器就是具有依赖注入功能的容器,IoC容器负责实例化.定位.配置应用程序中的对象及建立这些对象间的依赖.应用程序无需直接在代码中new相关的对象,应用程序由IoC容器进行组装.在Spring中BeanFactory是IoC容器的实际代表者. Spring IoC容器如何知道哪些是它管理的对象呢?这就需要配置文件,Spring IoC容器通过读取配置文件中的配置元数据,通过元数据对应用中的各个对象进行实例化及装配.一般使用基于xml配置文件进行配置元数据,而且…
2.2.1 IOC容器的概念IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化.定位.配置应用程序中的对象及建立这些对象间的依赖.应用程序无需直接在代码中new相关的对象,应用程序由IOC容器进行组装.在Spring中BeanFactory是IOC容器的实际代表者. Spring IOC容器如何知道哪些是它管理的对象呢?这就需要配置文件,Spring IOC容器通过读取配置文件中的配置元数据,通过元数据对应用中的各个对象进行实例化及装配.一般使用基于xml配置文件进行配置元数据,而且Sp…
姓名:陈中娇     班级:软件151 1. IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化.定位.配置应用程序中的对象及建立这些对象间的依赖.应用程序无需直接在代码中new相关的对象,应用程序由IOC容器进行组装.在Spring中BeanFactory是IOC容器的实际代表者. Spring IOC容器如何知道哪些是它管理的对象呢?这就需要配置文件,Spring IOC容器通过读取配置文件中的配置元数据,通过元数据对应用中的各个对象进行实例化及装配.一般使用基于xml配置文件进行配…
Spring3.1+Hibernate3+Struts2的最新整合所需要的jar包 Spring的基本jar包: 1.org.springframework.web-3.1.4.RELEASE.jar: 在web.xml中配置启动Spring容器所需,包括上下文(参数contextConfigLocation) 和监听器(类ContextLoaderListener) 2.com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar: 在spri…
1.添加commons-dbcp-1.4,commons-logging,commons-pool-1.2//线程池,commons.collections-3.2.1.jar,spring.jar 2.利用spring的查询方法和jdbc  "DataSource数据源" package com.ming.www; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.j…
最近自己在做一个小系统玩的时候涉及到了文件的上传,于是在网上找到Java上传文件的方案,最后确定使用common-fileupload实现上传操作. 需求说明 用户添加页面有一个“上传”按钮,点击按钮弹出上传界面,上传完成后关闭上传界面. 所需Jar包 commons.fileupload-1.2.0.jar. commons.logging-1.1.1.jar.commons.beanutils-1.8.0.jar. commons.collections-3.2.0.jar.commons.…
使用ant打包,如果脚本都是我们自己一步一步来写的话,是一个比较麻烦的东西. 关于ant,我们详细看下: ant支持 ant debug,ant release等命令,我们需要签名混淆,那么就需要ant release这个命令. 首先:ant环境搭建,这我就不多说了,很多博客都有介绍,包括一些环境配置 然后:ant环境可以之后,我们需要一个 build.xml文件,这个是ant编译去找的一个东西 <?xml version="1.0" encoding="UTF-8&q…
本人刚刚接触spring,看了一些教程,但是很多概念都不懂(以前没接触过,看着很抽象),所以我觉得通过动手可能会更好的理解并且掌握.看了一些小实例,但是都没有成功,终于在各种尝试之后搭建成功了,现在我就把我的过程简单地展示一下. 首先准备相应的jar包:spring-framework-3.1.2.RELEASE-with-docs中dist目录下所有jar包(有些多余,但是很方便)  还有spring-framework-3.1.2.RELEASE-dependences中的包(这个sprin…
1  IoC容器的概念 IoC容器就是具有依赖注入功能的容器,IoC容器负责实例化.定位.配置应用程序中的对象及建立这些对象间的依赖.应用程序无需直接在代码中new相关的对象,应用程序由IoC容器进行组装.在Spring中BeanFactory是IoC容器的实际代表者. Spring IoC容器如何知道哪些是它管理的对象呢?这就需要配置文件,Spring IoC容器通过读取配置文件中的配置元数据,通过元数据对应用中的各个对象进行实例化及装配.一般使用基于xml配置文件进行配置元数据,而且Spri…
不多说,直接上干货! 如何在Maven官网下载历史版本 Eclipse下Maven新建项目.自动打依赖jar包(包含普通项目和Web项目) Eclipse下Maven新建Web项目index.jsp报错完美解决(war包) HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Maven) Hive项目开发环境搭建(Eclipse\MyEclipse + Maven) MapReduce 开发环…
转自: https://blessht.iteye.com/blog/1405057 最近自己在做一个小系统玩的时候涉及到了文件的上传,于是在网上找到Java上传文件的方案,最后确定使用common-fileupload实现上传操作. 需求说明 用户添加页面有一个“上传”按钮,点击按钮弹出上传界面,上传完成后关闭上传界面. 所需Jar包 commons.fileupload-1.2.0.jar.commons.logging-1.1.1.jar.commons.beanutils-1.8.0.j…
目录 前言 基础知识 Transformer 利用InvokerTransformer造成命令执行 Map TransformedMap LazyMap AnnotationInvocationHandler 动态代理 Commons Collections Gadget 分析 CommonsCollections1 CommonsCollections2 疑问 CommonsCollections3 CommonsCollections4 CommonsCollections5 Commons…
下面是k8脚本. # -*- coding: utf-8 -*- # Oracle Weblogic Server (10.3.6.0, 12.1.3.0, 12.2.1.2, 12.2.1.3) Deserialization Remote Command Execution Vulnerability (CVE-2018-2628) from __future__ import print_function import binascii import os import socket im…
本文假设你对Java基本数据结构.Java反序列化.高级特性(反射.动态代理)等有一定的了解. 背景 YsoSerial是一款反序列化利用的便捷工具,可以很方便的生成基于多种环境的反序列化EXP.java -jar ysoserial.jar 可以直接查看payload适用环境及其适用版本. 关于此工具的背景,我引用P神的<Java安全漫游>文章对其的描述: 2015年Gabriel Lawrence (@gebl)和Chris Frohoffff (@frohoffff)在AppSecCal…
目录 7u21 gadget链分析 hashCode绕过 参考 URLDNS 7u21 7u21中利用了TemplatesImpl来执行命令,结合动态代理.AnnotationInvocationHandler.HashSet都成了gadget链. 先看一下调用栈,把ysoserial中的调用栈简化了一下 LinkedHashSet.readObject() LinkedHashSet.add() Proxy(Templates).equals() AnnotationInvocationHan…
前文介绍了最简单的反序列化链URLDNS,虽然URLDNS本身不依赖第三方包且调用简单,但不能做到漏洞利用,仅能做漏洞探测,如何才能实现RCE呢,于是就有Common-collections1-7.Common-BeanUtils等这些三方库的利用.本文需要前置知识Java反射.动态代理等.CC1其实比较难,会用到很多高级特性,但理解了CC1后面的payload也就能轻松理解了. 背景 Common-collections是对jdk自带的数据类型的三方增强框架,类似python里面的collec…
这是CC链分析的第二篇文章,我想按着common-collections的版本顺序来介绍,所以顺序为 cc1.3.5.6.7(common-collections 3.1),cc2.4(common-collections4). 打开YsoSerial payloads CommonsCollections3源码: public Object getObject(final String command) throws Exception { Object templatesImpl = Gad…