S2-052
前言 S2-052的RCE漏洞和以前的有些不同,不再是ognl表达式注入了,而是xml反序列化漏洞导致的RCE(另外还有S2-055漏洞是fastjson的反序列化漏洞)。我复现的时候遇到一个坑,导致一直复现不成功,就是必须要jdk1.8以上的版本才行。 正文 之前讲过执行action之前会先经过一些内置的拦截器,使用rest插件之后也是类似的,只不过经过的拦截器有变化了,如下图: 这次的漏洞就出现在ContentTypeInterceptor中,debug进去看看: 可以看到,通过getHandlerForRequest获得一个Handler后,调用handler的toObject方法,而输入的参数就是请求body,跟进getHandlerForRequest: 发现是通过请求头Content-Type来选择对应的Handler的,这是的漏洞就出现在,当Content-Type时会选用XStreamHandler,调用它的toObject() 很明显,调用了Xstream的fromXML方法,导致了xml的反序列化漏洞。 发送一个post请求,修改请求头信息为Content-Type: application/xml,发送post数据就是POC了,使用marshalsec工具( https://github.com/mbechler/marshalsec)生成如下poc: