溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

OMSA文件讀取漏洞CVE-2020-5377的示例分析

發(fā)布時(shí)間:2021-12-28 11:44:28 來(lái)源:億速云 閱讀:129 作者:小新 欄目:安全技術(shù)

小編給大家分享一下OMSA文件讀取漏洞CVE-2020-5377的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

OpenManage Server Administrator(OMSA)是什么?

根據(jù)OMSA的官方文檔描述:

“OpenManage Server Administrator(OMSA)是一個(gè)軟件代理,它通過(guò)兩種方式提供全面的一對(duì)一系統(tǒng)管理解決方案:即基于Web瀏覽器的圖形用戶(hù)接口,以及操作系統(tǒng)端的命令行接口?!?/p>

換句話(huà)說(shuō),OMSA可以幫助開(kāi)發(fā)人員對(duì)安裝了OMSA的服務(wù)器進(jìn)行中央監(jiān)控。OMSA還支持通過(guò)中央Web接口和分布式Web服務(wù)器(DWS),以及“管理系統(tǒng)登錄”功能來(lái)管理遠(yuǎn)程系統(tǒng)。

OMSA中的身份認(rèn)證繞過(guò)

為了簡(jiǎn)要概述繞過(guò)身份驗(yàn)證的工作方式,OMSA提供了使用中央服務(wù)器登錄遠(yuǎn)程系統(tǒng)的功能,以便利用分布式Web服務(wù)器(DWS)并通過(guò)單個(gè)Web界面對(duì)遠(yuǎn)程系統(tǒng)進(jìn)行管理。默認(rèn)配置下系統(tǒng)會(huì)自動(dòng)啟用該功能。

接下來(lái),我們就可以通過(guò)托管一個(gè)惡意遠(yuǎn)程節(jié)點(diǎn)來(lái)繞過(guò)身份驗(yàn)證,該節(jié)點(diǎn)響應(yīng)來(lái)自O(shè)MSA服務(wù)器的身份驗(yàn)證請(qǐng)求并驗(yàn)證登錄,從而導(dǎo)致OMSA服務(wù)器為用戶(hù)發(fā)出一個(gè)Web會(huì)話(huà)。這個(gè)Web會(huì)話(huà)僅用于在集中式Web界面中呈現(xiàn)來(lái)自遠(yuǎn)程節(jié)點(diǎn)的內(nèi)容。但是,我們發(fā)現(xiàn)在OMSA的9.4.0.0和9.4.0.2版本中,此會(huì)話(huà)將允許用戶(hù)對(duì)底層API進(jìn)行特權(quán)訪問(wèn)。

下圖顯示的是設(shè)置界面中管理系統(tǒng)登錄功能的開(kāi)啟和關(guān)閉:

OMSA文件讀取漏洞CVE-2020-5377的示例分析

下圖顯示的是OMSA身份認(rèn)證繞過(guò)步驟的流程圖:

OMSA文件讀取漏洞CVE-2020-5377的示例分析

在第四步中,服務(wù)器會(huì)發(fā)送一個(gè)JSESSIONID cookie和一個(gè)VID,并授權(quán)一個(gè)特權(quán)會(huì)話(huà)發(fā)送給OMSA Web接口,接下來(lái)我們就可以用它直接向OMSA服務(wù)器發(fā)出后續(xù)的特權(quán)API請(qǐng)求。

文件讀取漏洞細(xì)節(jié)

OMSA Web接口使用的是Apache Tomcat,通過(guò)分析web.xml,我們會(huì)發(fā)現(xiàn)身份認(rèn)證servlet會(huì)暴露在/DownloadServlet:

<servlet><servlet-name>DownloadServlet</servlet-name><servlet-class>com.dell.oma.servlet.secure.DownloadServlet</servlet-class></servlet>

反編譯OMSA.jar文件并分析類(lèi)文件后,我們發(fā)現(xiàn)了一個(gè)明顯的文件讀取漏洞:

string str1 = paramHttpServletRequest.getParameter("file");

<SNIP ----->

File file = new File(str1);

    if (false == oMAWPUtil.checkUserRights(paramHttpServletRequest, 7)) {

      String str4 = file.getCanonicalPath();

      String str5 = "apache-tomcat" + File.separator + "temp";

      OMALogging.getInstance().write(9, "DownloadServlet : Canonical path :" + str4);

      if (!str4.contains(str5)) {

        OMALogging.getInstance().write(9, "DownloadServlet : access denied to file :" + str1);

        return;

      }

    }

 

<SNIP--->

 

    FileInputStream fileInputStream = null;

    String str3 = getServletContext().getMimeType(str1);

    paramHttpServletResponse.setContentType(str3);

    paramHttpServletResponse.setHeader("Content-Disposition", "attachment; filename=\"" + str2 + "\";");

    paramHttpServletResponse.setContentLength((int)file.length());

    ServletOutputStream servletOutputStream = paramHttpServletResponse.getOutputStream();

    try {

      fileInputStream = new FileInputStream(str1);

      int j = 0;

      while ((j = fileInputStream.read()) != -1)

        servletOutputStream.write(j);

}

我們可以看到,“file”這個(gè)GET參數(shù)被設(shè)置為了“str1”,并被傳遞給了FileInputStream,然后讀取進(jìn)了應(yīng)用程序的響應(yīng)之中。這里唯一的檢測(cè)就是我們Web會(huì)話(huà)的“用戶(hù)權(quán)限”為“7”,這也是通過(guò)身份認(rèn)證繞過(guò)獲取到的會(huì)話(huà)所滿(mǎn)足的條件,這將允許我們?cè)谀繕?biāo)文件系統(tǒng)上讀取任何我們想要的路徑。

存在漏洞的請(qǐng)求如下:

https://omsa.server/{VID}/DownloadServlet?help=Certificate&app=oma&vid={VID}&file=C:\some\file

戴爾漏洞CVE-2021-21514:安全過(guò)濾器繞過(guò)

CVE-2020-5377漏洞修復(fù)后,開(kāi)發(fā)人員引入了一個(gè)安全過(guò)濾器,目的就是為了保護(hù)DownloadServlet這個(gè)servlet免受任意文件讀取漏洞的影響,但并沒(méi)有什么效果。

調(diào)用DownloadServlet時(shí),程序會(huì)使用過(guò)濾器查找傳遞到DownloadServlet的惡意路徑,惡意請(qǐng)求將會(huì)被拒絕。

過(guò)濾器如下:

<filter-name>PathManipulationFilter</filter-name>

<filter-class>security.web.PathManipulationFilter</filter-class>

相關(guān)的反編譯類(lèi)代碼段如下:

public static boolean isFileHandlerRequest(String paramString) {

    boolean bool = false;

    Set<String> set = a.keySet();

    Iterator<String> iterator = set.iterator();

    String str = null;

    while (iterator.hasNext()) {

      str = iterator.next();

      if (StringUtil.trim(paramString).contains(str)) {

        bool = true;

        break;

      }

    }

    return bool;

  }

 

<SNIP>

 static {

    a = new HashMap<>();

    HashMap<Object, Object> hashMap1 = new HashMap<>();

    hashMap1.put("file_1", "oma_\\d+.(log|html|zip)$");

    hashMap1.put("file_2", "\\.*(\\.cer|\\.CER)$");

    a.put("DownloadServlet", hashMap1);

    HashMap<Object, Object> hashMap2 = new HashMap<>();

    hashMap2.put("file_1", ".*");

    a.put("UploadServlet", hashMap2);

    HashMap<Object, Object> hashMap3 = new HashMap<>();

    hashMap3.put("file_1", ".*");

    a.put("UploadCertServlet", hashMap3);

    HashMap<Object, Object> hashMap4 = new HashMap<>();

    hashMap4.put("path_1", "(\\\\|\\/)(oma|upload)(\\\\|\\/)\\d+");

    hashMap4.put("path_2", "(\\\\|\\/)temp");

    a.put("ViewFile", hashMap4);

  }

上面的代碼顯示了過(guò)濾器代碼的一個(gè)片段,每個(gè)請(qǐng)求的URL都會(huì)被傳遞給isFileHandlerRequest方法,以測(cè)試URL是否包含HashMap “a”中列出的任何字符串。由于“a”只包含文本字符串,因此不用考慮任何類(lèi)型的編碼。只需對(duì)URL路徑的一部分進(jìn)行URL編碼,即可完全繞過(guò)此過(guò)濾器,從而導(dǎo)致isFileHandlerRequest方法返回false。

現(xiàn)在的URL如下:

https://omsa.server/{VID}/DownloadServle%74?help=Certificate&app=oma&vid={VID}&file=C:\some\file

其中的t被URL編碼后為%74,請(qǐng)求將成功。

漏洞概念驗(yàn)證PoC

為了驗(yàn)證漏洞的有效性,我們創(chuàng)建了一個(gè)【漏洞利用PoC】,其中包含一個(gè)有效的會(huì)話(huà)Cookie,并且可以使用這個(gè)會(huì)話(huà)從服務(wù)器端讀取一個(gè)文件。

漏洞緩解

為此,戴爾還是發(fā)布了一個(gè)漏洞修復(fù)方案。但是,們確定使用遠(yuǎn)程管理登錄繞過(guò)身份驗(yàn)證是預(yù)期的功能。這也就意味著,即使在安裝了修復(fù)補(bǔ)丁之后,我們?nèi)匀豢梢允褂帽疚乃榻B的身份認(rèn)證人熬過(guò)漏洞來(lái)獲得API的有效會(huì)話(huà)cookie。如果你不需要使用遠(yuǎn)程管理登錄功能的話(huà),則應(yīng)該禁用該功能以消除相關(guān)攻擊面。

我們可以通過(guò)以下步驟禁用托管系統(tǒng)登錄功能:

在登錄屏幕上,單擊“管理Web服務(wù)器”;

使用系統(tǒng)管理員憑據(jù)進(jìn)行登錄;

單擊“首選項(xiàng)”;

將“管理系統(tǒng)登錄”切換為“禁用”;

總結(jié)

利用這種身份認(rèn)證繞過(guò)技術(shù),將為我們提供很多的可能性,比如說(shuō)利用API來(lái)實(shí)現(xiàn)一些惡意操作等等,例如本文所介紹的任意文件讀取。

一旦獲得了有效的會(huì)話(huà)cookie,就可以訪問(wèn)其他危險(xiǎn)的功能。因此,如果您不使用OMSA Web界面訪問(wèn)遠(yuǎn)程系統(tǒng),我們強(qiáng)烈建議您禁用“托管系統(tǒng)登錄”功能。如果您根本不使用OMSA,則應(yīng)完全卸載或禁用該服務(wù)。如果它正在使用中,當(dāng)然,我們建議廣大用戶(hù)保持運(yùn)行OMSA的最新版本,或安裝最新的漏洞修復(fù)補(bǔ)丁。

看完了這篇文章,相信你對(duì)“OMSA文件讀取漏洞CVE-2020-5377的示例分析”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI