这个项目能做什么
ysoserial 是一款用于生成利用不安全对象反序列化漏洞的 Java 序列化载荷的概念验证安全工具。它最初作为 AppSecCali 2015 演讲“Marshalling Pickles: how deserializing objects will ruin your day”的一部分发布,最初包含针对 Apache Commons Collections(3.x 和 4.x)、Spring Beans/Core(4.x)和 Groovy(2.3.x)的 gadget 链,后来扩展至 JRE 1.7u21 及许多其他库。
主驱动程序接收用户指定的命令,将其包装在用户指定的 gadget 链中。gadget 链是由常见 Java 库中的类组成的面向属性编程序列,随后将生成的对象序列化到 stdout。如果某个应用程序的类路径包含所需的 gadgets,并以不安全方式反序列化这些数据,该链就会自动触发,并在应用程序主机上执行命令。该项目强调,漏洞在于应用程序执行了不安全的反序列化,而不在于类路径中仅仅存在 gadget 库。
该工具附带了由众多研究人员贡献的三十多种载荷类型,包括覆盖 commons-collections 3.x 和 commons-collections4 4.x 的七个 CommonsCollections 变体,以及 CommonsBeanutils、Spring(两种变体)、Groovy、Hibernate(两种变体)、C3P0、BeanShell、Jython、Clojure、Mozilla Rhino(两种变体)、ROME、JSON-lib、MyFaces(两种变体)、Click、FileUpload、Vaadin、Wicket、Javassist/Weld、JBoss interceptors、AspectJWeaver、Jdk7u21、URLDNS(不列出依赖项)和 JRMPClient/JRMPListener 的链。示例中展示了用于向 RMI registry 投递载荷的内置辅助程序 ysoserial.exploit.RMIRegistryExploit。
使用方式是一条命令,例如:java -jar ysoserial.jar CommonsCollections1 calc.exe。生成的载荷可以直接通过管道传输给目标,也可以保存到文件中,README 中以 netcat 为例进行了演示。预编译的 jars 可从 GitHub releases 获取,项目也可使用 Java 1.7+ 和 Maven 3.x+ 通过“mvn clean package -DskipTests”从源码构建。
维护者明确表示,该软件纯粹用于学术研究和开发有效的防御技术,除明确获得授权的情况外,不应用于攻击系统;用户应负责任地使用它。README 中提到的相关项目包括 marshalsec(一个涵盖其他 Java 反序列化格式和库的姊妹项目)、ysoserial.net(.NET 等效项目)以及 Java-Deserialization-Cheat-Sheet(收集相关漏洞、工具和文章)。
评论
0 评分人数达到10人后显示
登录后参与讨论。