一个简易的基于woodpecker框架开发的反序列化利用插件,支持多种方式生成序列化payload。 除了基本的命令执行外,其中大部分利用链都已支持加载java字节码,少部分支持bcel字节码。
"URLDNS","CC2","CC3","CC4","CC5","CC6","CC7","CC8","CC9","CC11","CCK1","CCK2","CCK3","CCK4","CB1","CB1_183","Hibernate1","Hibernate2","C3P0URLClassLoader","C3P0ELInject","URLDNS","JRMPListener","JRMPClient"
另外项目也加入了一些特定系统的反序列化漏洞Gadget,如Hibernate_fr(帆软)
,Jackson_fr(帆软)
,CC3_tw(东方通)
(以上Gadget利用链的构造代码均来自互联网大师傅们的技术分享文章)
项目不定期更新,如果师傅们有其他Gadget需求可下载源码先自行添加。如果需要需要其他参数引入可到插件项目入口添加,并在相关Gadget上打上注解即可,项目会自行要求输入必要参数(自我感觉是应该比较方便的,即使是小白也能复制粘贴轻松实现^ω^)
目前项目中支持的Gadget可能不是很多,一部分是因为某些Gadget受Jdk版本限制无法兼容到项目中,另一部分纯粹是因为我还没有复现成功...
(^-^)
因为项目是我边学java反序列化边写的,可能对某些Gadget理解不是很深,如果代码实现有误,还请轻喷(手动狗头)
Gadget 使用的利用链
Type 利用类型,支持command,bytecode,bcel
Command 命令
ResourcePath 需要加载的文件绝对路径
UrlClassLocation 远程恶意类地址
DnsLog dnslog地址
Ip Ip
Port 端口
Zip 压缩方式
Encode 编码方式
LDAP_or_RMI LDAP或RMI地址
OutPath 输出文件
部分burp版本可能存在burp paste from file的数据流仍不能被服务器端正确反序列化,可以使用项目中的req.py脚本代替发包(这里需要将payload输出格式设置为Base64,复制粘贴到脚本即可)
同时也支持payload Hex编码后放入nuclei、yakit等工具进行验证利用
正常情况下设置参数生成payload后输出到指定文件后,burp paste from file即可(切勿直接复制粘贴)




诸如脏字符填充、针对TemplatesImpl对象的payload缩小技术等功能,由于实战经验不足,不确定其实际效果,所以暂时没有添加。如果有师傅有这方面的需求,后续可以添加。
https://github.com/woodpecker-framework/ysoserial-for-woodpecker
https://github.com/Y4er/ysoserial
https://github.com/frohoff/ysoserial
p牛 java安全漫谈系列
https://gv7.me/articles/2021/construct-java-detection-class-deserialization-gadget/
https://su18.org/post/ysoserial-su18-3