关于Java反序列化攻击的最新Foxglove Security article以及用于定位主要应用服务器以及Spring和Groovy应用程序的示例代码的链接,引起了许多人的惊愕。该文章指出这些漏洞利用绕过身份验证,因为在完成身份验证检查之前,对象有效负载已反序列化。尽管如此,它并没有特别命名或讨论Spring HttpInvoker,而且我还没有能够在其他地方找到明确的声明。
对于通过Spring HttpInvoker公开的远程服务,使用带有基本身份验证的Spring Security,验证检查是否会在 (可能是恶意的)对象有效负载被反序列化之前执行?或者文章的断言是"身份验证不会保护您免受这种攻击的影响"也适用于HttpInvoker服务?
答案 0 :(得分:2)
决定自己测试一下。为了在处理入站HTTP Invoker服务调用时测试事件序列,我按如下方式设置了一个简单的Spring Boot入门应用程序:
我为Spring Security和Spring Remoting调试了调试级别,然后通过一个简单的JUnit测试客户端远程调用了HelloWorldService。我通过控制台日志确认Spring Security正在验证并授权调用者在之前进行反序列化。
当我思考一系列事件时,这是有道理的。 Spring Security作为过滤器链实现,而HTTP Invoker逻辑由DispatcherServlet处理,在过滤器预先执行之后,它将在逻辑上获得控制权。
如果任何Spring专家能够确认这是一个准确的解释(或者特别是如果有任何模糊的边缘情况"反序列化仍然可以在调用者被认证之前咬我们),那将是非常感谢。
答案 1 :(得分:0)
我正在搜索ysoserial有效负载生成器。使用每个选项创建有效负载,然后使用正确的内容类型集将其卷曲到您的端点。我们在我的工作中做到了这一点,并且惊讶于我们可以在我们的开发服务器上远程执行代码。