本项目记录笔者积累的Java反序列化利用链的代码演示与相关文字描述。
根据每一个链,都单独建立了一个项目,在复现时可以单拎一个目录到IDEA里。
每一个链的文字描述都在对应项目下的README.md文件中。
Gadget清单:
笔者按照如下顺序依次完成项目的构建与文字描述,因此在写文时存在思路上的连贯性,并不构成学习顺序上的暗示。
- ✅ URLDNS
- ✅ CommonsCollections1
- ✅ JNDIForHighVersionJDKWithLocalFactory
- ✅ C3P0
- ✅ Jdk7u21(内附:TemplatesImpl)
- ✅ CommonsCollections6
- ✅ JNDIForHighVersionJDKWithLDAPUnserial
- 🚩 CommonsCollections2
- 🚩 CommonsCollections3
- 🚩 Jdk8u20
- 🚩 CommonsBeanutils1
- 🚩 Groovy1
- 🚩 FileUpload1
Gadget备注:
Gadget | 依赖版本 | JDK版本 |
---|---|---|
URLDNS | - | - |
CommonsCollections1 | Commons-Collections 3.1-3.2.1 | JDK8u71以前 |
CommonsCollections2 | Commons-Collections 4.0 | |
CommonsCollections3 | Commons-Collections 3.1-3.2.1 | JDK8u71以前 |
CommonsCollections4 | Commons-Collections 4.0 | |
CommonsCollections5 | Commons-Collections 3.1-3.2.1 | JDK8u76以前,8u181也可以 |
CommonsCollections6 | Commons-Collections 3.1-3.2.1 | |
CommonsCollections7 | Commons-Collections 3.1 | |
CommonsBeanutil1 | Commons-Collections 3.1 | |
Jdk7u21 | - | jdk6u45及以前,jdk7u21及以前 |
Jdk8u20 | - | jdk8u20及以前 |