反序列化

Web后端开发的历史长河中,从JSP,Servlet到SSH再到SSM再到Springboot最后到如今的SpringCloud分布式,Spring一直占领着高地,这是因为后端开发者往往遵守着三层架构的开发准则,这三层需要一个中间件将其粘合在一起.
本文将会根据自己挖掘的思路来写,尽量把调用流程展示清楚,把坑点说明下。并补充些审计时的思考。
2019年4月17日,国家信息安全漏洞共享平台(CNVD)收录了由中国民生银行股份有限公司报送的Oracle WebLogic wls9-async反序列化远程命令执行漏洞(CNVD-2019-11873)。攻击者利用该漏洞,可在未授权的情况下远程执行命令。
对于rmi反序列化,官方作出了修补,对比修改前后,对SafeObjectInputStream类添加了rmi类校验,将java.rmi.server纳入了黑名单,如果类名出现了java.rmi.server则告警,并返回空。
不安全的反序列化漏洞已成为针对Java Web应用程序的研究者的普遍目标。这些漏洞通常会导致RCE,并且通常不容易完全修补。CVE-2020-14825就属于这一类。
由于本人并非JAVA程序员,所以对JAVA方面的知识不是很懂,仅仅是能看懂而已。本文参照几位大佬的博客进行归纳总结,简单阐述了JAVA反序列化漏洞的原理以及Payload的构造。
测试使用的 Laravel 是通过 composer 默认方法 composer create-project --prefer-dist laravel/laravel blog "7.12.*"安装的,如果用到了未默认带的组件会在文中说明。
CC5 、CC6 链利用了新的反序列化触发点,命令执行为CC1的利用方式,作者换了两个反序列化入口方法。同时又引出了Java HashMap和HashSet等利用方法,本文从基础知识、链存在的意义、链的分析构造这三大方面展开学习。
大半年前开的头,扔那就给忘了,终于想起来给写完了(*/ω\*)。
ysoserial 工具的CC3和CC4链是CC1和CC2 链的扩展链,触发过程与前两个链大致相同,主要是命令执行部分有所变化。借着这两个链的学习,巩固下前面两个链的构造和利用思路。