分类: Java

22 篇文章

高低JDK版本中JNDI注入
高低JDK版本中JNDI注入 这篇文章主要是分析在高低版本JDK中JNDI注入RMI和LDAP两个攻击向量的调用过程以及异同点,并且尝试调试高版本JDK的绕过方法。   分析高低版JDK下的JNDI注入 RMI 低版本 这里用RMI+Reference做演示,JDK版本为8u65: 服务端 import com.sun.jndi.rmi.regis…
RMI反序列化
RMI反序列化 RMI介绍 RMI,是Remote Method Invocation(远程方法调用)的缩写,即在一个JVM中java程序调用在另一个远程JVM中运行的java程序,这个远程JVM既可以在同一台实体机上,也可以在不同的实体机上,两者之间通过网络进行通信。 RMI依赖的通信协议为JRMP(Java Remote Message Pro…
Shiro反序列化漏洞分析
Shiro反序列化漏洞分析 介绍 Apache Shiro 是一个开源安全框架,提供身份验证、授权、密码学和会话管理。 Apache Shiro框架提供了记住我的功能(RememberMe),用户登陆成功后会生成经过加密并编码的cookie,在服务端接收cookie值后,Base64解码-->AES解密-->反序列化。攻击者只要找到AE…
CommonsCollections7利用链分析
CommonsCollections7利用链分析 原理 CC7这条链和上一条CC5差不多,也是用了别的反序列化入口方法,然后走到LazyMap.get()方法后就沿着CC1链的后半部分继续走了。这次用到的入口方法是Hashtable.readObject(),yso中的调用链如下: java.util.Hashtable.readObject ja…
CommonsCollections5利用链分析
CommonsCollections5利用链分析 原理 回顾一下CC6利用链,在CC6的利用链中,是使用了HashMap类在计算hash值时调用 key.hashCode()的方式,然后我们让这里的key为TiedMapEntry类对象,调用TiedMapEntry的hashCode()走到getValue()方法,最终回到CC1链中的LazyMa…
CommonsCollections2利用链分析
CommonsCollections2利用链分析 原理 CC2这条链实际上是在CC4链的基础上进行改的吗,目的是避免使用Transformer数组,先上图: 其中的紫色部分就是CC2链,基本上就是在CC4链的基础上,抛弃了用 InstantiateTransformer类将TrAXFilter初始化,实现调用TemplatesImpl.newTra…
CommonsCollections4利用链分析
CommonsCollections4利用链分析 原理 CC4这条链用到了新的Commons-Collections4这个依赖,由于这个依赖与之前的版本具有较大的出入,连groupId和artifactId都变了,前者是Commons Collections⽼的版本包,当时版本号是3.2.1;后者是官⽅在2013年推出的4版本,当时版本号是4.0。…
JNDI注入漏洞
JNDI注入漏洞 JNDI 首先第一个问题,什么是 JNDI,它的作用是什么? 根据官方文档,JNDI 全称为 Java Naming and Directory Interface,即 Java 名称与目录接口。虽然有点抽象,但我们至少知道它是一个接口;下一个问题是,Naming 和 Directory 是什么意思?很多相关资料都对其语焉不详,但…