入门JAVA反序列化必读

一则故事 文章主要面向准备入门的同学。咱们先来看一则小故事,指挥官的发报方式被敌台截获;敌台第一次伪装发报(载体),收报人员执行炸毁商场(执行函数),结果上了新闻(显式回显)。指挥官更换...

一则故事

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

反序列化三个主要部分

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

如何去学习

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

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

显示回显:

隐式回显:

参考案例

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

总结

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

  • 发表于 2021-04-16 19:57
  • 阅读 ( 231 )
  • 分类:互联网

0 条评论

请先 登录 后评论
i小鹏
i小鹏

722 篇文章

你可能感兴趣的文章

相关问题