JAVA反序列化CC1分析

反序列化的原理
        首先是要继承Serialize类只有继承了这个类菜能够进行序列化,如果某一个类没有继承serialize类并在一条利用链中所需要的地方,我们就可以通过反射来进行处理。例如在java中Runtime.getRuntime()是没有继承seralize类的

但是Runtime.class是继承了的

这样以来就可以通过反射来进行序列化和反序列化,反射核心代码如下 

上面的代码都是可以成功弹出计算器的。利用链的构造尝试使用同名不同类的方法来进行调用。在这里就是复习一下反射的基本知识点,下面就开始进入正题
CC1链分析
        
分析之前还是要先记录下自己的想法以便于后续查看,在Java的序列化和反序列化中最终的目的就是达到任意命令执行,与其相关以及利用链的最终目的地就是找到可控的readObject(),从而成功利用,如下图所示

只要循序渐进的去找就能够得到一条利用链,可控的输入方法为transform,往前找不同类的相同方法,在org/apache/commons/collect

JAVA反序列化CC1分析最先出现在Python成神之路

版权声明:
作者:lichengxin
链接:https://www.techfm.club/p/27405.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>