Von's Blog

Thinking will not overcome fear but action will.

Shiro反序列化漏洞学习

什么是Shiro Apache Shiro 是一个功能强大且易于使用的 Java 安全框架,为开发人员提供了直观而全面的身份验证、授权、加密和会话管理解决方案。 Shiro550(CVE-2016-4437) 在Shiro中,当我们勾选remember me时会将我们的身份信息序列化并使用AES加密后设置为cookie,当我们下次请求时服务器会读取Cookie并对解密后的结果进行反序列...

CommonsBeanutils反序列化学习

CommonsBeanutils是什么 Apache Commons Beanutils和之前我们学习的Commons Collections一样,是Apache Commons工具集下的另一个项目,它提供了对JavaBean的一些操作方法。 至于什么是JavaBean,其实指的是一种写法并且之前我们之前已经广泛接触到了: public class Student { priv...

动态加载字节码与CC3学习

前言 在前面我们学习了CC1和CC6,这两条链的最终利用点都是通过InvokerTransformer.transform方法进而执行Runtime.exec方法来实现命令执行的,但在一些反序列化过滤器中,例如InvokerTransformer这样的类是不能被通过的。在这种情况下,CC3就应运而生了,CC3并没有使⽤到InvokerTransformer来调⽤任意⽅法,而是通过动态类加载...

CC6学习

前言 前面我们学习了CC1这条链,并了解了利用TransformedMap和LazyMap的两种利用方法,但我们也提到在Java8u71及以后,由于AnnotationInvocationHandler类的readObject方法逻辑变了,导致CC1实际上失效了;本次我们就来学习CC6,这条链在高版本JDK上仍然可用。阅读本篇文章前建议先阅读之前学习URLDNS和CC1的文章(我感觉CC6...

CC1学习

Apache Commons Collections Apache Commons Collections是一个第三方的基础类库,提供了很多强有力的数据结构类型并且实现了各种集合工具类,可以说是apache开源项目的重要组件。而其经典的反序列化漏洞利用链也是学习java反序列化漏洞绕不开的一环。虽然CC链总共有很多条,但是都是利用了Transformer接口,本次我们先从CC1开始学习了解...

Java反序列化入门

序列化与反序列化 JAVA序列化是将对象转换成字节编码(与php不同,php是转换成字符串,java是转换成字节序列,在二进制层面)以方便在网络上进行传输或存储处理的一种方式,而反序列化则是将这段字节编码重新转换为对象的逆向操作。 序列化与反序列化的过程 我们直接来看实践的例子,假如我定义了一个Student类 import java.io.Serializable; public...

一些编程概念的探讨

写在前面 最近好像挺久没有更新博客了,主要意识到之前那种为了安全而学习安全的方法是错误的。安全的前提还是开发,开发技能不行,安全技能也没办法达到多高的程度,所以最近觉得还是得沉下心来,学习开发技能。 编译型语言与解释型语言 我们知道,计算机实际上只能理解二进制代码,所以我们用各种高级语言写出来的代码,都要经过相关的过程才能转化为机器语言(二进制代码)。解释型语言和编译型语言就是针对这两种不同...

文件包含中几个常用包含目录的记录

超级水文

写在前面 这几次的比赛中常常出现文件包含的相关考题。以前对文件包含的认知和实践只停留在直接包含或者伪协议上,这几次比赛中学到了很多,打算通过几篇文章总结一下。 用户信息 /etc/passwd # 用来记录每个拥有系统访问权的注册用户 /etc/shadow # 密码信息,获取到后可用 John the Ripper 爆破 /root/.bash_histor...

RMI学习(一)

RMI基础#副标题

前言 今天就开始具体Java安全的学习了,首先从RMI安全开始,但是由于RMI的不少安全问题都涉及了反序列化的问题,这方面的内容为目前暂未涉足,因此本文只是对RMI入门的第一篇文章啦。 什么是RMI RMI全称为Remote Method Invocation(远程方法调用),是让某个Java虚拟机上的对象调⽤另⼀个Java虚拟机中对象上的⽅法(也即客户端如何调用服务器端的方法)。 ...

无字母数字webshell总结

文章首发于先知社区: https://xz.aliyun.com/t/8107 建议看先知社区的那篇,博客这篇由于Jekyll的某些特性和Latex编译器的一些性质,排版有点不足 写在前面 关于无字母数字Webshell这个话题,可以说是老生常谈了。但是一直以来我都没怎么去系统的研究过这个问题,在这里做一波研究与总结。所谓无字符webshell,其基本原型就是对以下代码的绕过: <?p...