使用SpringHTTP调用程序的应用程序是否面临Java序列化攻击的风险?

使用SpringHTTP调用程序的应用程序是否面临Java序列化攻击的风险?,java,spring,security,Java,Spring,Security,我有一个应用程序,它使用Spring中的HttpInvokerServiceExporter公开端点。我一直在试图调查Java(Apache commons collections)序列化漏洞(如详细所述)是否会导致这种情况 我一直在尝试生成可以发送到端点进行测试的有效负载,但到目前为止我还没有得到一个明确的答案。我已经签出了用于生成有效负载的项目,但我认为问题在于HttpInvoker希望序列化对象的类型为RemoteInvocation,而不是ysoserial生成的类型 因此,我的问题是:

我有一个应用程序,它使用Spring中的
HttpInvokerServiceExporter
公开端点。我一直在试图调查Java(Apache commons collections)序列化漏洞(如详细所述)是否会导致这种情况

我一直在尝试生成可以发送到端点进行测试的有效负载,但到目前为止我还没有得到一个明确的答案。我已经签出了用于生成有效负载的项目,但我认为问题在于HttpInvoker希望序列化对象的类型为
RemoteInvocation
,而不是
ysoserial
生成的类型

因此,我的问题是:

  • 这样配置的Spring端点是否存在风险
  • 我如何生成一个有效负载来利用它,以便在修复后验证我是否已关闭该漏洞

  • 我找到了自己问题的答案:

  • 对。我已经成功地利用我的服务器,使用一个到Spring端点的简单http post
  • SpringHTTP调用程序希望它接收的对象是
    RemoteInvocation
    实例,其中包含一个要在服务器端执行的方法(即,在某个接口上公开的方法)。它具有以下构造函数:

    公共远程调用(字符串方法名、类[]参数类型、对象[]参数)

  • 因此,要使用该漏洞,您只需将ysoserial生成的对象放入
    object[]
    参数中。这将导致它在尝试在公开接口上执行方法并失败之前被取消序列化,因此它将执行您指定的命令