渗透测试-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

修复方案

  1. 临时禁用AJP协议8009端口,在conf/server.xml配置文件中注释掉<Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />
  2. 配置ajp配置中的secretRequired跟secret属性来限制认证;
  3. 官方下载最新版下载地址:
    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。

复现Tomact_CVE-2020-1938漏洞,可以按照以下步骤进行操作: 1. 下载POC:可以使用以下命令下载POC文件: git clone https://github.com/sv3nbeast/CVE-2020-1938-Tomact-file_include-file_read/ 2. 在攻击机上搭建环境:确保攻击机上已经安装了Tomcat服务器,并且版本在3.4.3以下,可以使用以下命令下载并安装Tomcat 3.4.3版本: git clone https://github.com/sv3nbeast/CVE-2020-1938-Tomact-file_include-file_read/ 3. 配置Tomcat服务器:在Tomcat安装目录下,找到server.xml文件,在<Connector>标签中添加以下内容: protocol="org.apache.coyote.ajp.AjpNio2Protocol" secretRequired="false" 4. 启动Tomcat服务器:在Tomcat安装目录下运行启动脚本,如./catalina.sh run 5. 复现漏洞:使用以下命令触发漏洞复现: python3 file_include.py -u http://目标IP:目标端口/ -p /WEB-INF/web.xml 以上步骤可以帮助你复现Tomact_CVE-2020-1938漏洞。请注意,在进行漏洞复现时务必遵守道德规范,并获得合法授权进行测试。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [CVE-2020-1938 漏洞复现](https://blog.csdn.net/weixin_48799157/article/details/124889366)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [CVE-2020-1938 Tomcat文件包含漏洞复现](https://blog.csdn.net/qq_49279082/article/details/129018726)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tr0e

分享不易,望多鼓励~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值