渗透测试-Tomcat文件读取漏洞复现

简介: 渗透测试-Tomcat文件读取漏洞复现

漏洞介绍
Java 是目前 Web 开发中最主流的编程语言,而 Tomcat 是当前最流行的 Java 中间件服务器之一,从初版发布到现在已经有二十多年历史,在世界范围内广泛使用。

2020年2月20日,国家信息安全漏洞共享平台(CNVD)发布了Apache Tomcat 文件包含漏洞(CNVD-2020-10487 / CVE-2020-1938)。该漏洞的危害等级:高。目前厂商已发布新版本完成漏洞的修复。

漏洞简介

CVE-2020-1938 漏洞是由长亭科技安全研究员发现的存在于 Tomcat 中的安全漏洞。Tomcat 服务器作一个免费的开放源代码的Web 应用服务器,其安装后会默认开启ajp连接器,方便与其他web服务器通过ajp协议进行交互。

但由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。

该漏洞详细的原理分析可参见:【WEB安全】Tomcat-Ajp协议漏洞分析。

受影响版本

Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.51
Apache Tomcat 9 < 9.0.31
不受影响版本

Apache Tomcat = 7.0.100
Apache Tomcat = 8.5.51
Apache Tomcat = 9.0.31
因为本次漏洞影响范围比较大,所以这个漏洞在发布的初期,各大SRC漏洞平台上都刷疯了。在渗透测试过程中,如果发现目标网站的 Tomcat 版本号在受影响的版本范围内,可对其进行漏洞的验证测试。

漏洞复现
看网上好多博主复现该漏洞的方式是:虚拟机直接下载 Tomcat 存在漏洞的版本(如Tomcat-8.5.32)的 Docker 镜像,直接运行后便可执行 POC 脚本进行攻击,但我在复现的时候发现运行容器启动 Tomcat 服务后,8009 端口并未如博主们所述的那样处于开放状态(具体原因不详,知情大佬请留言赐教……),无法成功进行攻击。

但我发现在最新下载的 Vulhub 漏洞环境中发现已经集成了该漏洞(只是 Vulhub 官网的复现文档尚未同步),故下文基于 Vulhub 漏洞环境进行漏洞复现。
实验环境:

主机 作用 IP地址
Ubuntu 虚拟机 基于 Vulhub 漏洞环境搭建 Tomcat-9.0.30 靶场 172.31.1.135
Kali Liunx 虚拟机 使用 Nmap、POC脚本对靶机实施探测、攻击 172.31.3.198
1、在 Ubuntu 虚拟机对应的漏洞环境路径下开启终端,执行如下命令运行靶场环境:

2、可以看到 Vulub 为我们自动搭建并启动了基于 Tomcat-9.0.30 的靶场环境:

3、局域网内的 Kali 虚拟机可成功进行访问:

4、使用 Nmap 对靶机进行端口扫描,查看8009端口是否处于开放状态:

5、在 Kali 中从 Github 克隆 POC 脚本 到本地:
6、尝试读取靶机上 Tomcat 服务器的/usr/local/tomcat/webapps/ROOT/WEB-INF文件:
7、返回 Ubuntu 虚拟机,进入 Docker 容器,查看相应的文件是否与 Kali 攻击机获取到的一致:

至此,我们已成功复现 CVE-2020-1938 漏洞,利用文件包含漏洞进阶获得 RCE 的攻击方式可参考文章:CVE-2020-1938 幽灵猫漏洞RCE 。

修复方案
临时禁用AJP协议8009端口,在conf/server.xml配置文件中注释掉;
配置ajp配置中的secretRequired跟secret属性来限制认证;
官方下载最新版下载地址:
https://tomcat.apache.org/download-70.cgi
https://tomcat.apache.org/download-80.cgi
https://tomcat.apache.org/download-90.cgi
或Github下载:https://github.com/apache/tomcat/releases。
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_39190897/article/details/106887927

目录
相关文章
|
应用服务中间件
tomcat修改默认端口详细步骤(包含运行测试)
在tomcat端口被占用或者需要把默认的8080端口换成其他的端口,就可以修改默认端口。
1267 0
tomcat修改默认端口详细步骤(包含运行测试)
|
2月前
|
安全 应用服务中间件 网络安全
Python 渗透测试:漏洞的批量搜索与利用.(GlassFish 任意文件读取)
Python 渗透测试:漏洞的批量搜索与利用.(GlassFish 任意文件读取)
39 11
|
5月前
|
SQL 安全 测试技术
渗透测试基础之永恒之蓝漏洞复现
对于当下来说我们使用的电脑大多是win11或是win10,还是有很多政府和公司,或是学校中使用的系统还停留在win7系统.今天是我进行渗透测试的第一次实战,通过永恒之蓝漏洞利用对win7系统进行渗透,当然也会对渗透测试的流程进行一个详细的介绍.,渗透测试的流程信息较为详细,内容较多,如果想看实战流程,直接通过通过这次的渗透测试,虽然不是对web间进行渗透测试,但是通过实战能够使我能够熟悉渗透测试的流程,当然在实践过程中也出现了很多问题,例如从kali上传文件到win主机路径出现问题,配置攻击模块时将ip地址设置错误,但在我不断的思考和尝试下,最终解决了问题,对于我的解决问题的能力也是一种提升.
288 3
|
安全 应用服务中间件 Apache
Apache-Tomcat-Ajp文件读取漏洞(CVE-2020-1938、CNVD-2020-10487)
Apache-Tomcat-Ajp文件读取漏洞产生原因是由于Tomcat默认开启的AJP服务(8009端口)存在一处文件包含缺陷,攻击者可构造恶意的请求包进行文件包含操作,进而读取受影响Tomcat服务器上的Web目录文件
662 1
|
12月前
|
Java 应用服务中间件 Linux
HTTPS && Tomcat && Servlet && 博客系统 && 软件测试的概念 && Linux
HTTPS && Tomcat && Servlet && 博客系统 && 软件测试的概念 && Linux
53 0
|
Java 应用服务中间件 Linux
Linux系列——Tomcat安装、测试以及设置Tomcat开机启动
Linux系列——Tomcat安装、测试以及设置Tomcat开机启动
|
安全 Java 应用服务中间件
干货 | Tomcat漏洞复现总结
干货 | Tomcat漏洞复现总结
951 0
|
Web App开发 缓存 网络协议
HTTP/2服务端( nginx/tomcat)配置与测试
HTTP/2源于SPDY, 主要目标是解决HTTP 1.x的性能问题. 有别于HTTP/1.1在连接中的明文请求,HTTP/2与SPDY一样,将一个TCP连接分为若干个流(Stream),每个流中可以传输若干消息(Message),每个消息由若干最小的二进制帧(Frame)组成。这也是HTTP/1.1与HTTP/2最大的区别所在。
646 1
HTTP/2服务端( nginx/tomcat)配置与测试
|
测试技术 应用服务中间件
ant+Jacoco 统计tomcat远程部署后项目接口自动化测试或者功能测试代码覆盖率
ant+Jacoco 统计tomcat远程部署后项目接口自动化测试或者功能测试代码覆盖率
ant+Jacoco 统计tomcat远程部署后项目接口自动化测试或者功能测试代码覆盖率