Java 反序列化之 CommonCollections1 分析
前言 Common Collections 反序列化漏洞歷史在上一篇文章中有稍微提過 這個漏洞在 2015 年時,對整個 Java 生態系造成不小的影響 後續也愈來愈多奇形怪狀的 Gadget chain 被大佬們一一挖出來 而本篇文章就以 ysoserial 中經典的 CommonCollections1 這條 Gadget chain 來做分析 雖然網路上類似本篇的分析文很多,但只看文章其實很難體會到 java gadget chain 裡頭的精髓 強烈建議大家有興趣、有時間的話,可以自己拉原始碼下來跟一遍,相信可以收穫更多 ! p.s. 這裡我分析的版本是 Common Collections 3.1 和 JDK 8 簡介 Apache Common Collections 主要是一個用來擴充原生 Java Collection 的一個第三方 Library (簡單說,就是一個擴充包的概念) 而 Collection 基本上就可以視為是 Set, List, Queue 等類別的抽象概念 所以 Common Collections 中提供了許多方式,能讓我們對這些 Collection 做操作 或是對各種資料結構做封裝、抽象化,簡化原本 JDK 中複雜的操作方式 例如後面會提到的各種 Transformer,最主要就是用來對這些 Collection 做內容轉換的 也因為它的方便性和實用性,所以許多框架預設都有引用這個 Library 導致一旦底層 Library 出問題,上面所有框架都會接連一起爆炸...