入门JAVA反序列化必读
2021-03-26 11:30:48 Author: www.freebuf.com(查看原文) 阅读量:153 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

文章主要面向准备入门的同学。咱们先来看一则小故事,指挥官的发报方式被敌台截获;敌台第一次伪装发报(载体),收报人员执行炸毁商场(执行函数),结果上了新闻(显式回显)。指挥官更换方式为卫星通讯(载体),但是因为有内鬼敌人分析(开源代码分析)传输方式,敌台第二次伪装发报(载体),收信人偷走机密资料(执行函数),送到指定地点(隐式回显)。

通过故事咱们能看出,反序列化RCE分为三个部分,载体、执行函数、回显。载体包括协议、加解密算法等等。执行函数则是通过载体后的反序列化函数。回显则分为显式回显和隐式回显,显式回显例如Webshell、HTTP response body、图片隐写,隐式回显例如RMI、URLDNS等等。

在了解基本构成之后,按照顺序找相关的部分,然后拼起来即可。
载体:
载体普遍存在一些大型JAVA项目之中,例如Apache Software Foundation的一堆。

执行函数:
在执行函数阶段,反序列普遍使用ObjectInputStream,当然如果你看到名字不同,可能是经过封装和继承。

FileInputStream fis = new FileInputStream("object");
ObjectInputStream ois = new ObjectInputStream(fis);

显示回显:

1、文件写入
2、HTTP response body
3、延迟
4、HTTP banner
5、图片隐写
...

隐式回显:

1、RMI
2、URLDNS
3、LADP
4、JNDI
...

载体部和执行函数分参考大佬们的文章,回显参考https://github.com/wh1t3p1g/ysomap/tree/master/core/src/main/java/ysomap/core/payload。
剩下的步骤,看代码!读代码!理解代码!

文章之中咱们一起来看JAVA反序列化的基础知识,从小故事作为引导,理解反序列化的基本流程。在这里非常感谢@turing,他教会我一些很重要的道理以及理解方式,通过他才真正了解到热爱是所有的理由和答案。
后续关于一些分析漏洞文章,基本围绕着基本结构,尽请关注。


文章来源: https://www.freebuf.com/articles/web/267623.html
如有侵权请联系:admin#unsafe.sh