- 博客(69)
- 收藏
- 关注
原创 WebLogic基于T3协议的反序列化之利用JRMP进行绕过
前面的CVE-2016-3510/CVE-2016-0638都是把payload封装在对象里面进行绕过,而后续的绕过就利用JRMP进行绕过。
2023-03-05 18:05:48
360
原创 Registry与DGC的攻击利用
Registry指的是RMI的注册表,攻击的目标是注册表所在的机器,一般注册表和RMI Server在同一个机器上,特殊情况下也会在不同机器上。在我们通过LocateRegistry#getRegistry获取到目标开启的注册表之后,可以通过Registry#bind方法绑定一个对象到注册表上,而我们绑定的对象传送到目标机器上之后会对其进行一个反序列化。
2023-03-05 18:02:39
433
原创 Java反序列化注入内存马
Java内存马总体有Servlet/Filter/Listern/Java-Agent四种,前三种思路都差不多,通过不同方式获取到ApplicationContext/servletContext/StandardContext等对象,然后往ApplicationContext/servletContext/StandardContext注入恶意的Servlet/Filter/Listern,这里通过注入 Filter实现内存马。实现一通过Thread.currentThread().getContex
2022-02-09 16:17:36
2655
原创 WebLogic基于T3协议的反序列化 CVE-2016-0638/CVE-2016-3510
WebLogic基于T3协议的反序列化 CVE-2016-0638/CVE-2016-3510CVE-2016-0638 是前面分析的 CVE-2015-4852 的一个绕过,通过找到一个不在黑名单中的类,且这个类存在readObject/readResolve/readExternal 方法,并且恰好这些方法里面有一些数据进行反序列化操作,那么这时我们就可以把原生的序列化数据封装到这个类里面,通过调用反序列化对象重写的readObject/readResolve/readExternal 方法这一特点来
2022-01-29 14:37:21
5302
原创 WebLogic基于T3协议的反序列化之CVE-2015-4852
前言WebLogic 中的反序列化漏洞可以分为两种,第一种为基于 T3 协议的反序列化,第二种为基于 XML 的反序列化,下面表格为大概 CVE 分布,在基于 T3 的反序列化漏洞中,很多是基于 CVE-2015-4582 漏洞的一个相关绕过,而对 CVE-2015-4582 漏洞的绕过又大体应该分为两类,下面对 CVE-2015-4582 进行调试分析,为后面的绕过打下基础。基于 T3CVE-2015-4582CVE-2016-0638CVE-2016-3510CVE-2018-262
2022-01-29 14:35:44
3782
原创 Java readObject方法分析
Java readObject方法分析WebLogic 反序列化漏洞用到了有关 readObject 相关的知识,那么这里来分析一下 ObjectInputStream#readObject 方法,为后续 WebLogic 的反序列化漏洞分析打下基础。编写调试类User 类public class User implements Serializable { private String name; private int age; protected User() thr
2022-01-29 14:21:26
2574
原创 JRMPClient 反序列化
JRMPClient 反序列化当目标存在反序列化入口时,可以尝试构造反序列化链让目标在指定端口开启 JRMP 服务,这样我们就可以连接目标开启的 JRMP 服务进行一些后续操作。Gadget/* * Gadget: * UnicastRemoteObject#readObject * UnicastRemoteObject#reexport * UnicastRemoteObject#exportObject * UnicastRemoteObject
2022-01-26 16:24:40
965
原创 Vaadin01 反序列化
Vaadin01 反序列化依赖<dependency> <groupId>com.vaadin</groupId> <artifactId>vaadin-server</artifactId> <version>7.7.14</version></dependency>Gadget/* * Gadget: * BadAttributeValueExpException#
2022-01-26 16:23:52
242
原创 Clojure 反序列化
Clojure 反序列化依赖<dependency> <groupId>org.clojure</groupId> <artifactId>clojure</artifactId> <version>1.8.0</version></dependency>Gadget/* * Gadget: * HashMap#readObject * AbstractTab
2022-01-26 16:23:17
266
原创 beanshell 反序列化
beanshell 反序列化依赖<dependency> <groupId>org.beanshell</groupId> <artifactId>bsh</artifactId> <version>2.0b5</version></dependency>Gadget/* * Gadget: * PriorityQueue#readObject * XThis
2022-01-26 16:22:31
502
原创 C3P0 反序列化
C3P0 反序列化依赖<dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version></dependency>Gadget/* * Gadget: * PoolBackedDataSourceBase#readObject *
2022-01-26 16:21:58
677
原创 Groovy01 反序列化
Groovy01 反序列化依赖<dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy</artifactId> <version>2.3.9</version></dependency>Gadget/* * Gadget: * AnnotationInvocationHandler#r
2022-01-26 16:21:24
507
原创 Click01反序列化
Click01反序列化依赖<dependency> <groupId>org.apache.click</groupId> <artifactId>click-nodeps</artifactId> <version>2.3.0</version></dependency>Gadget/* * Gadget: * PriorityQueue#readObject *
2022-01-26 16:20:47
186
原创 Rome反序列化
Rome反序列化Gadget/* * Gadget: * HashMap#readObject * ObjectBean#hashCode * EqualsBean#beanHashCode * ToStringBean#toString * TemplatesImpl#getOutputProperties * */HashMap#readObject 可以调用到任意一个类的 hashCode 方法,这里调用到的是 Obje
2022-01-22 18:13:36
747
原创 FastjsonJNDI利用及Bypass高版本限制
FastjsonJNDI利用及Bypass高版本限制Fastjson 在用 parse(obj) 还原对象的属性时会调用对象的 setter 方法为属性赋值,比如要还原 JdbcRowSetImpl 对象的autoCommit 属性,则会调用 JdbcRowSetImpl#setAutoCommit 方法进行还原,而下面的利用也基本都是基于这一点!Fastjson <= 1.2.24还原 autoCommit 属性时调用 JdbcRowSetImpl#setAutoCommit 方法,setAu
2022-01-22 18:05:03
668
原创 重构java安全
URLDNSHashMap 的 readObject 方法可以调用到任何一个类的 hashCode 方法,只需要把拥有 hashCode 方法的对象当作键名添加进 HashMap 即可,比如我要通过 HashMap#readObject 调用 URL#hashCode,我只需要实例化一个URL对象比如为 urlObject,然后以对象为键名添加进 HashMap,HashMap.put(urlObject,"ky0116")URL.handler 属性是transient 修饰的,按理是无法进行反序列
2022-01-19 19:00:54
1346
1
原创 Tomcat-Listener内存马
这篇文章记录下学习 Listener 内存马学习到的东西,思路跟 Filter 型内存马差不多,找一个相对通用的 Listener ,这里用的是 `ServletRequestListener` ,所有的 servlet 请求都会经过这个 Listener,接下来写一个例子调试分析 Listener 的注册过程和调用过程,相对来说比较简单!
2022-01-15 20:47:49
398
原创 restart logging.config logback JNDI RCE
restart logging.config logback JNDI RCE
2021-12-09 22:39:46
2266
原创 eureka xstream deserialization RCE复现
eureka xstream deserialization RCE复现
2021-12-08 21:08:58
956
原创 SpringBoot SpEL RCE漏洞分析
SpringBoot SpEL RCE前言最近一段时间学习Spring系列的漏洞,跟着Github上的资源学习
2021-12-07 11:33:17
1997
原创 CVE-2019-12422 Shiro721反序列化漏洞
CVE-2019-12422 Shiro721反序列化漏洞前面分析了Shiro550,导致Shrio550漏洞的原因是Shiro存在默认key,当服务器端的默认key没有修改,则攻击者可以利用这个默认key进行传输任意的rememberMe字段Cookie,这个rememberMe字段Cookie传输到服务器端之后会被反序列化!而在shiro1.2.5及以后的版本怎么利用呢?
2021-12-06 22:06:35
2992
原创 JDBC反序列化初步学习
JDBC反序列化初步学习当在JDBC连接数据库的URL可控,且服务器存在可以利用的反序列化链,这时就可能存在反序列化漏洞
2021-12-06 15:31:24
1226
原创 Fastjson_1.22-1.24漏洞分析
Fastjson_1.22-1.24漏洞分析Fastjson是一个库,可以将java对象转换为json字符串,也可以将json字符串转换为java对象。Fastjson简单使用Fastjson通过 toJSONString 方法把java对象转换为 json 字符串,通过 parse/parseObject 把json字符串转换为java对象,简单看个例子理解它们的区别
2021-12-06 10:15:35
480
原创 JNDI注入学习
JNDI注入简单记录一下学习JNDI时学习到的知识点JNDI是什么?前面我们学习过RMI远程方法调用,那是一个RMI SERVER - RMI Client的结构,而 JNDI 也可以从RMI SERVER中获取到对象并执行其中的方法。那么这两者有什么区别呢?
2021-12-05 20:46:30
1467
原创 JDK7u21原生反序列化链分析
JDK7u21原生反序列化链分析前面分析的都是第三方的反序列化链,那么有没有JDK原生的反序列化链呢?答案是有的,JDK7u21 和 JDK8u20就是两条原生的反序列化链!
2021-12-05 12:04:15
958
原创 CommonsBeanutils1反序列化链在Shiro中的利用
CommonsBeanutils1反序列化链在Shiro中的利用前面分析Shiro550的时候,利用的是commons-collections进行构造反序列化链,但是commons-collections是我们手动加进去的,如果Shiro没有commons-collections链呢,这时候该怎么办?这时候CommonsBeanutils1反序列化链就派上用场了!Shiro是默认依赖Commons-Beanutils1.8.3的,那么就可以利用CommonsBeanutils1反序列化链进行构造pa
2021-12-04 23:16:28
1052
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人