Java ysoserial学习之CommonsCollections5(四)
庆祝我伟大的党百年华诞🎉
向伟大的祖国敬礼(‘-‘*ゞ
0x00 前言上节说道在commons-collections-3.2.1.jar!/org/apache/commons/collections/keyvalue/TiedMapEntry.class类中,总共有三个函数调用了getValue函数:
toString CC5 本文重点
hashCode CC6
equals CC7
本文CommonsCollections6利用链的限制条件:
JDK版本:暂无限制、 CommonsCollections 3.1 - 3.2.1
实验环境:
JDK 1.8.0_261 、Commons-Collections 3.2.1
0x01 利用链123456789101112131415161718192021/* Gadget chain: ObjectInputStream.readObject() BadAttributeValu ...
Java ysoserial学习之CommonsCollections6(三)
争取明年有一个上千star的项目
0x00 前言在上一篇通过 P牛和 ysoserial 项目分析了CommonsCollections1这条利用链和其中的TransformedMap、LazyMap原理。
但是在 Java 8u71以后,这个利用链不能再利用了,主要原因是 sun.reflect.annotation.AnnotationInvocationHandler#readObject 的逻辑变化了。
CommonsCollections6 解决了高版本Java的利用问题,一起来学习下吧。
本文CommonsCollections6利用链的限制条件:
JDK版本:暂无限制、 CommonsCollections 3.1 - 3.2.1
实验环境:
JDK 1.8.0_261 、Commons-Collections 3.2.1
0x01 AnnotationInvocationHandler#readObject学习 CommonsCollections6 之前,先来看看 AnnotationInvocationHandler#readObject具体改变了 ...
Java ysoserial学习之CommonsCollections1(二)
超长预警
0x01 前言Apache Commons Collections是一个扩展了Java标准库里的Collection结构的第三方基础库,它提供了很多强有力的数据结构类型并且实现了各种集合工具类。作为Apache开源项目的重要组件,Commons Collections被广泛应用于各种Java应用的开发。
Apache Commons Collections 中提供了一个Transformer的类,这个接口的功能就是将一个对象转换为另外一个对象,CC链都依赖于此。
本文CommonsCollections1利用链的限制条件:
JDK版本:jdk1.8以前(8u71之后已修复不可利用)、Commons-Collections 3.1-3.2.1
实验环境:
JDK 1.7.0_80、Commons-Collections 3.2.1
0x02 P牛简化的利用链Demo分析123456789101112131415161718192021package org.vulhub.Ser;import org.apache.commons.collections.Tra ...
Java ysoserial学习之URLDNS(一)
雄关漫道真如铁 而今迈步从头越
0x01 前言URLDNS 是 ysoserial 中利用链的一个 payload,该 payload 的目的只有一个,就是确定目标系统上是否存在可控的 readObject() 方法,即是否存在Java 反序列化漏洞。该利用链具有如下特点:
不限制jdk版本,使用 Java 内置的 URL 类,不依赖于任何的第三方库
只对指定的 URL 发送 DNS 查询,不做其他操作
在⽬目标没有回显的时候,能够通过DNS请求得知是否存在反序列列化漏洞
0x02 原理java.util.HashMap 实现了Serializable 接口,重写了 readObject, 在反序列化时会调用 hash 函数计算 key 的 hashCode.而 java.net.URL 的 hashCode 在计算时会调用 getHostAddress 来解析域名, 从而发出 DNS 请求。
我们从 ysoserial 项目src/main/java/ysoserial/payloads/URLDNS.java 的注释中可以看到 URLDNS的调用链(Gadget Cha ...
Java反序列化漏洞分析(二)-Shiro550
这是一篇失败的文章,要学的东西太多了,高看我自己了。终究是纸上得来终觉浅,绝知此事要躬行
0x00 纠错首先纠正一下上篇文章Java反序列化漏洞分析(一)-Shiro550的错误错误,上篇提到dnslog使用原生环境搭建没有打成功,这是错的、错的、错的,其实是可以打的。我给搞错了,URLDNS 这个利用链本身不依赖于任何第三方库,同时不限制jdk的版本,所以通常是用来检测反序列化的点(目标出网),我当时没打成功,是因为我做实验时,用了同一条dnslog的url打过一遍,第二遍死活不出结果,写这篇文章时又测了几次,发现是url的锅,要不停的变换才会一直出结果
Java默认有TTL缓存,DNS解析会进行缓存,所以可能会出现第一次收到DNS的log,后面可能收不到的情况。
0x01 原生Shiro550执行命令当使用URLDNS链打过去,在DNSLOG平台有回显的时候,就说明这个地方存在反序列化漏洞。
但是要利用的话还得是使用CC链等利用链去进行命令的执行(shiro550中自带的是cc3.2.1版本的组件)。
经过测试ysoserial拥有的CommonsCollectio ...
Java反序列化漏洞分析(一)-Shiro550
本菜鸡算是第一次正式分析这种玩意,很烂,都是跟着网上的分析教程走一遍,算是打响java反序列化漏洞的第一枪。我还欠了两篇文章,记着呢。
0x01 前言Apache Shiro是一个开源安全框架,提供身份验证、授权、密码学和会话管理。在它编号为550的issue 中爆出严重的Java反序列化漏洞。
在Apache Shiro<=1.2.4版本中AES加密时采用的key是硬编码在代码中的,这就为伪造cookie提供了机会。只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞。
Shiro的“记住我”功能是设置cookie中的rememberMe值来实现。当后端接收到来自未经身份验证的用户的请求时,它将通过执行以下操作来寻找他们记住的身份:
检索cookie中RememberMe的值
Base64解码
使用AES解密
反序列化
漏洞原因在于第三步,在Apache Shiro<=1.2.4版本中AES加密时采用的key是硬编码在代码中的,于是我们就可以构造RememberMe的值,然后让其反序列化执行。
只 ...
初探Java反序列化漏洞(二)
不能食言,再晚也要写
0x01 Java反射反射之中包含了一个「反」字,有「反」就会有「正」,那么解释反射就必须先从「正」开始解释。
一般情况下,当使用某个类时必定知道它是什么类(类名),是用来做什么的(类的属性和方法)。于是我们直接对这个类进行实例化,之后使用这个类对象进行操作。
123User user = new User();user.setName("yhy");System.out.println(user.getName());
“正射”就是通过new创建了一个User实例,然后通过实例(user)去调用其所属方法。
但是当你new的时候不知道类名怎么办?受private保护的方法怎么调用?这时候反射的作用就体现出来了。
123456789101112// newClass clz = Class.forName("yhy.reflect.User");Object object = clz.newInstance();// setName("yhy")Method method = clz.getMe ...
初探Java反序列化漏洞(一)
学无止境,参考着资料边学边记录吧。
0x01 Java序列化与反序列化Java序列化是指把Java对象转换为字节序列的过程。这一过程将数据分解成字节流,以便存储在文件中或在网络上传输;
Java反序列化是指把字节序列恢复为Java对象的过程。就是打开字节流并重构成对象,恢复数据。
序列化与反序列化都可以理解为“写”和“读”操作 ,通过以下这两个方法可以将对象实例进行“序列化”与“反序列化”操作。
12345// 写入对象内容private void writeObject(java.io.ObjectOutputStream out)// 读取对象内容private void readObject(java.io.ObjectInputStream in)
0x02 为什么需要序列化与反序列化当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上传送。而当两个Java进程进行通信时,可以通过Java的序列化与反序列化在进程之间直接传送对象,换句话说,发送方需要把这个Java对象转换为字节序列,然后在网络上 ...
漏洞复现-F5 BIG-IP远程代码执行漏洞(CVE-2021-22986)
燕子来时新社,梨花落后清明。
0x01 漏洞描述F5 BIG-IP 是美国 F5 公司的一款集成了网络流量管理、应用程序安全管理、负载均衡等功能的应用交付平台。
CVE-2021-22986 该漏洞允许未经身份验证的攻击者通过BIG-IP管理界面和自身IP地址对iControl REST接口进行网络访问,以执行任意系统命令,创建或删除文件以及禁用服务。
0x02 漏洞影响
F5 BIG-IP 16.0.0-16.0.1
F5 BIG-IP 12.1.0-12.1.5.2
F5 BIG-IP 15.1.0-15.1.2
F5 BIG-IQ 7.1.0-7.1.0.2
F5 BIG-IP 14.1.0-14.1.3.1
F5 BIG-IQ 7.0.0-7.0.0.1
F5 BIG-IP 13.1.0-13.1.3.5
F5 BIG-IQ 6.0.0-6.1.0
0x03 漏洞复现https://login.f5.com/resource/registerEmail.do 注册好后,下载
https://downloads.f5.com/esd/eula.sv? ...
图形化漏洞利用Demo-JavaFX版
0x01 这是个嘛?这是一个构建图形化漏洞利用的一个项目,已经写好架子,只需要往里填充exp即可,帮助安全人员快速构建一个图形化的、跨平台的漏洞利用工具。
虽然有很多优秀的命令行利用工具,但我觉得还是带界面的方便、直观。
使用本项目,你不需要懂太多Java语言,只需要了解基本的语法,参考自带的EXP例子,即可快速开发一款属于你自己的漏洞利用工具,建立自己的漏洞利用库。
ExpDemo-JavaFX工具新增漏洞编写教程
0x02 Demo经过多次改版,这是最终(?)的效果。详细见更新记录.md
https://user-images.githubusercontent.com/31311038/129846212-c0a50a7d-0890-4fdf-909e-000981246e3b.mp4
0x03 编写属于你的图像化漏洞利用工具3.1 项目结构1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606 ...














