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

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请求

漏洞利用条件较为苛刻

本文来源于: https://xz.aliyun.com/t/7803

相关推荐

phpmyadmin<4.8.3 XSS挖掘

前言 最近在审计phpmyadmin的时候发现了一个XSS漏洞,后来发现在版本大于4.8.3以后该漏洞被修复了。看了下之前公布的CVE,有个CVE和此漏洞很相似但没有漏洞细节,于是乎便有了这篇文章。 准备 需要的环境 phpmyadmin

Intigriti的2020年5月XSS挑战

分析题目 在访问Challenge.intigriti.io 时,显示以下页面 引起我的注意:我看到的第一件事是黑体字,指出XSS仅在Firefox(恰好是我的主要浏览器)中工作。考虑到这一点,我按了CTRL + U来查看页面的静态HTML

都0202年了老嗨还在用的 - 各种姿势jsp webshell

最近,我的朋友“老嗨”,他参加了一个某云举办的号称可能史上最强的使用了AI技术的Webshell检测系统挑战赛...因为我没什么时间去搞这个,所以,我把我珍藏多年,姿势比较多的JSP Webshell发给了老嗨,老嗨跟我说,全部bypass

WordPress Page Buider插件 CSRF to XSS漏洞分析

前言 Page Builder by SiteOrigin是一个安装量超过100W的WordPress页面生成器插件,该插件可帮助用户使用基于小工具的页面生成器轻松构建响应式页面内容 近日wordfence安全人员披露了一个Page Bui

Spring Boot漏洞复现

复现一下Sprint Boot的一些漏洞 环境搭建 Dump环境 Mvn构建项目 启动项目 端点信息 路径 描述 /autoconfig 提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过 /beans 描述应用程序上下文里全部

wireshark和威胁分析

TL;DR 前段时间看了一个介绍wireshark和威胁分析相关的议题(视频演讲和pdf见参考链接),现在抽出点儿时间总结和记录一下。 由于工作需要,那段时间搜集和整理了wireshark基本使用和技巧相关资料,但是总感觉不太完整不够深入,

PHPYUN人才系统一个正常函数不正常用法引发的逻辑隐患(审计思路)

一般来说审计的话都可以从入口文件代码开始看起,因为从入口文件代码中可以给到非常多的信息为后面审计做好铺垫,比如根目录下的 index.php 基本都会为程序的入口文件。 index.php: include(dirname(__FILE__

基于机器学习的GitHub敏感信息泄露监控

背景 现在很多公司都会面临,内部敏感信息,比如代码,内部系统服务器地址,账号,密码等等泄露到GitHub上的风险,有恶意的也有非恶意的。这个问题有时很难完全规避掉,为了降低可能的恶劣影响,一般都是会内部搭建一个GitHub敏感信息泄露的监控

Django 初次尝试编写 Web 漏洞扫描器挖坑记录

相关技术 Python 3.8.0 Python 3.8 支持许多高级特性,在 Web 漏扫这一块 Python 编写也十分灵活。 Django 3 使用了最新的 Django 版本,Django 是 Python 语言中文档比较全的一个

DNS隧道搭建及反弹shell之脱坑

介绍及场景 在内网环境中,通常出于安全考虑,网络防火墙会对主机的网络协议进行限制,只会放行主机服务需要的协议,当处于内网中的shell需要与外部进行流量交互的时候,就需要通过放行的协议建立网络隧道,此时DNS协议往往是一个常用的选择。 搭建

emlog博客系统的一次审计

前言 最近想做一下博客迁移,发现了emlog博客系统,发现很久没有更新,去CNVD上搜索发现了几个归档的漏洞,这里对照其中的描述进行分析下,本文中emblog版本为6.0 漏洞分析 后台sql注入(一) 漏洞点位于/admin/tag.ph