前言

简单来说CC2就是从 SerializablereadObject() ⽅法到 Transformertransform() ⽅法的调⽤链,首先 CommonsCollections3 中无法使用,因为在3的版本中 TransformingComparator 无法序列化。其次 只有 CommonsCollections4的4.0 可以使用,因为 CommonsCollections4 其他版本去掉了 InvokerTransformer 的 Serializable 继承,导致无法序列化,进而衍生出CC4。

环境

添加maven依赖

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.0</version>
</dependency>
阅读全文 »

前言

CC1链之LazyMap链

分析

这次在寻找的 transform 入口中,找到 LazyMap 中的get方法

public Object get(Object key) {
// create value for key if key is not currently in the map
if (map.containsKey(key) == false) {
Object value = factory.transform(key);
map.put(key, value);
return value;
}
return map.get(key);
}
阅读全文 »

前言

通过 defineClass字节码加载任意类而拓宽的一条链子,但是在实际场景中,因为defineClass方法作用域却是不开放的,所以我们很很难直接利用到它,CC3的利用关键就是 TransletClassLoader 中的 defineClass调用了此方法,当过滤Runtime时,可以尝试利用

阅读全文 »

前言

Apache Commons Collections是一个扩展了Java标准库里的Collection结构的第三方基础库,它提供了很多强有力的数据结构类型并且实现了各种集合工具类。作为Apache开源项目的重要组件,Commons Collections被广泛应用于各种Java应用的开发。

Apache Commons Collections包和简介 | 闪烁之狐 (blinkfox.github.io)

CC1链之TransformedMap链

环境

  • JDK版本:jdk1.8以前(8u71之后已修复不可利用)jdk1.8.0_66
  • CC版本:Commons-Collections 3.1-3.2.1
  • idea
  • maven在pom.xml添加
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.1</version>
</dependency>

maven下载一下源代码

阅读全文 »

前言

C3P0存在原生反序列化三种利用方式、拓展利用点

1.Java 原生态反序列化利用链 - 加载远程类

2.Json 反序列化利用链 - JNDI

3.Json 反序列化利用链 - HEX序列化字节加载器

4.拓展:Java 原生态反序列化利用链 - 不出网利用

阅读全文 »

前言

这篇将介绍一下 CommonsBeanutils 链,以及没有 commons-collections 的Shiro反序列化利用

Apache Commons Beanutils

Apache Commons Beanutils 提供了对Java普通类对象(也成为 JavaBean) 的一些操作方法。

至于JavaBean

  • 有一个public的无参数构造函数。
  • 属性可以透过get、set、is(可替代get,用在 布尔型 属性上)方法或遵循特定命名规则的其他方法访问。
  • 可序列化
阅读全文 »
0%