CVE-2020-2555:WebLogic RCE漏洞分析

2020-12-14 百家號

轉載:nosec 作者:iso60001

0x00 前言

不安全的反序列化漏洞已經逐漸成為攻擊者/研究人員在面對Java Web應用時尋找的目標。這些漏洞通常能得到可靠的遠程代碼執行(RCE)效果,並且修復起來比較困難。在本文中,我們將分析CVE-2020-2555(ZDI-20-128)漏洞,該漏洞由來自VNPT ISC的Jang提交。這個漏洞級別較高(CVSS評分9.8),存在於Oracle Coherence庫中,從而影響使用該庫的Oracle WebLogic伺服器等常見產品。官方在1月份修復了包括該漏洞在內的300多個漏洞。

0x01 補丁分析

漏洞根源存在於某個Java方法中,攻擊者可以調用該方法,並且能控制相關參數。在Java中,當重新創建對象圖時,類的readob ject()或readExternal()會被自動調用。因此,這兩個方法(以及在方法內部可達的其他方法)可以被視為反序列化gadget的根源點。

CVE-2020-2555的補丁引入了非常有趣的一處修改,涉及LimitFilter類的toString()方法:

補丁在toString()中刪除了對extract()方法的所有調用語句,下文中將重點分析extract()方法的重要性。這種修改操作非常有趣,因為我們可以通過各種標準的JRE類(如BadAttributeValueExpException)的readob ject()方法,成功訪問toString()方法。

如上圖所示,經過序列化的BadAttributeValueExpException類實例可以用來調用任意類的toString()方法。這種技術可以用來訪問受此補丁影響的LimitFilter類的toString()方法。

關於使用toString()作為入口點的gadget,大家可以參考ysoserial項目的CommonsCollections5 gadget.

0x02 尋找sink點

Sink點指的是具有各種副作用的Java方法調用,這類副作用包括:

1、通過調用FileOutputStream.write()實現任意文件創建;

2、通過調用Runtime.exec()實現任意命令執行;

3、通過調用Method.invoke()實現任意方法調用。

對於該漏洞,我們主要關注的是Method.invoke(),該調用能通過反射來調用任意Java方法。了解該信息後,我們開始查找具備extract()方法的所有實例(根據前文分析,該方法正是補丁分析後我們得出的根源點),並且最終會調用Method.invoke()。在Coherence庫中,似乎只有一個可序列化類(實現Serializable或者Externalizable接口)實例滿足條件。

觀察ReflectionExtractor類後,我們可以進一步確認前面的猜測:

ReflectionExtractor提供了一種較為危險的操作原語,可以讓攻擊者調用任意方法,並且攻擊者可以控制具體方法及相關參數。

0x03 實現RCE

通常情況下,攻擊者需要調用多個方法才能實現RCE。比如,在常見的Apache Commons Collections gadget中,攻擊者需要使用ChainedTransformer將任意方法調用串接起來,從而實現RCE。與此類似,Coherence庫中也提供了這樣一個類(ChainedExtractor),可以讓我們串接extract()調用:

將以上信息結合起來,我們可以使用如下調用鏈,最終實現遠程代碼執行:

因此,如果有目標環境使用了Coherence庫,並且攻擊者可以投遞惡意序列化對象,那麼攻擊者就能實現遠程代碼執行。為了演示攻擊環境,這裡我們以WebLogic的T3協議作為目標,具體操作過程可參考此處視頻。

0x04 總結

自從Chris Frohoff和Gabriel Lawrence在AppSecCali提出Java反序列化相關概念後,研究人員就一直在尋找反序列化漏洞,以實現可靠的代碼執行。在針對SCADA應用的Pwn2Own Miami活動中,我們已經收到了多個這類報告,這也是我們在相關報告中特別關注反序列化問題的原因之一。

◆來源:安全客

相關焦點

  • CVE-2020-14882&14883weblogic未授權命令執行漏洞復現
    本文涉及靶場知識點-CVE-2020-14882&14883 weblogic未授權訪問漏洞https://www.hetianlab.com/expc.do?概述10 月 21 日,Oracle 官方發布數百個組件的高危漏洞公告。其中組合利用 CVE-2020-14882/CVE-2020-14883 可使未經授權的攻擊者繞過 WebLogic 後臺登錄等限制,最終遠程執行代碼接管 WebLogic 伺服器,利用難度極低,風險極大。
  • 「漏洞復現」Weblogic反序列化漏洞(CVE-2018-2628)
    攻擊者可以通過T3協議發送惡意的的反序列化數據, 進行反序列化, 實現對存在漏洞的weblogic組件的遠程代碼執行攻擊。>命令:java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 8889 Jdk7u21 "touch /tmp/jadoreshell"4.使用ysoserial-0.1-cve
  • 復現:Windows遠程桌面服務漏洞CVE-2019-0708
    漏洞簡介: 2019年5月14日微軟官方發布安全補丁,修復了windows遠程桌面服務的遠程代碼執行漏洞,該漏洞影響了某些舊版本的Windows系統。此漏洞是預身份驗證且無需用戶交互,這就意味著這個漏洞可以通過網絡蠕蟲的方式被利用。
  • 漏洞復現之三:CVE-2021-2109 Weblogic Server RCE
    0x00 漏洞描述CVE-2021-2109,該漏洞為Weblogic的遠程代碼執行漏洞。
  • Weblogic XMLDecoder 漏洞觸發鏈分析
    跟進近幾年weblogic漏洞分析與利用技術,進一步填補自己在Java分析技術方面的空白,本文分析近幾年weblogic爆出的經典漏洞,以及調試環境。近年來weblogic不斷爆出了各種反序列化漏洞及補丁繞過漏洞,我也對最近的Weblogic漏洞進行分析和利用。
  • Weblogic IIOP反序列化分析(CVE-2020-2551)
    No.2 漏洞概述2020年1月15日, Oracle官方發布了CVE-2020-2551的漏洞通告,漏洞等級為高危,CVVS評分為9.8分,漏洞利用難度低。No.4 Weblogic IIOP搜索weblogic IIOP關鍵字的時候,找到一些關鍵詞,比如 Invoking-weblogic-ejb-iiop ,還有下圖中的一些demo,似乎和這些有關係。
  • 【獨家】K8S漏洞報告|近期多個CVE漏洞解讀
    安全漏洞CVE-2019-11247/ CVE-2019-11248/ CVE-2019-11249分析Kubernetes v1.15+ Bug Fix數據分析安全漏洞CVE-2019-11247/ CVE-2019-11248/ CVE-2019-11249分析近期Kubernetes社區通過Google
  • CVE-2013-3906漏洞分析
    CVE-2013-3906是一個位於ogl.dll內的整數溢出漏洞,這是一個比較經典的整數溢出漏洞,當時是McAfee公司抓到的一個0day
  • CVE-2020-9484 tomcat session反序列化漏洞分析
    本文藉助CVE-2020-9484 Tomcat漏洞詳細的介紹了本地和遠程調試Tomcat 源碼。分析漏洞成因以及補丁修補情況,以及分析ysoserial反序列化鏈。0x01 漏洞簡介Apache Tomcat發布通告稱修復了一個源於持久化Session的遠程代碼執行漏洞(CVE-2020-9484)。
  • 研究人員揭露Microsoft Teams桌機版App零點擊RCE漏洞
    (圖片來源/https://github.com/oskarsve/ms-teams-rce/blob/main/README.md) 一名研究人員本周揭露位於微軟協同工具Teams Mac、Windows及Linux等桌機版存在一個不需用戶交互即可遠端執進程序碼,甚至可利用SSO機制存取公司系統的漏洞。
  • Golang TLS雙向身份認證DoS漏洞分析(CVE-2018-16875)
    原文作者:apisecurity翻譯來源:安全客原文連結:https://apisecurity.io/mutual-tls-authentication-vulnerability-in-go-cve-2018-16875/譯文連結:https://www.anquanke.com
  • 關於CVE-2020-11989 Apache Shiro身份驗證繞過漏洞通告
    04參考連結https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11989https://nvd.nist.gov/vuln/detail/CVE-2020-11989https://lists.apache.org/thread.html/r72815a124a119c450b86189767d06848e0d380b1795c6c511d54a675%
  • Yii2 反序列化漏洞復現分析
    1、漏洞描述Yii是一套基於組件、用於開發大型Web應用的高性能PHP框架。Yii2 2.0.38 之前的版本存在反序列化漏洞,程序在調用unserialize() 時,攻擊者可通過構造特定的惡意請求執行任意命令。
  • 分享一個超實用的中間件ApacheTomcat漏洞升級方案
    分享一個超實用的中間件ApacheTomcat漏洞升級方案 最近公司漏洞掃描發現了一大批的高危漏洞,需儘快修復,今天來說一說中間件Tomcat漏洞修複方法,Tomcat是一款開源的軟體,官方沒有補丁這麼一說,只能小版本進行升級,具體操作清下看!
  • 蘋果watchOS 7.1以下發現任意代碼執行漏洞 需要儘快升級
    最近,Apple watchOS發現了一些需要儘快升級的重要漏洞。以下是漏洞的詳細信息:資料來源:https://Support.apple.com/zh-cn/HT2119281.cve-2020-27910,cve 2020-27916,cve 2020-10017,cve 2020-27909(官方尚未說明嚴重程度,如下所示)處理惡意製作的音頻文件可能導致任意代碼執行2.2020年-10003
  • ISC 2020漏洞管理與研究論壇拉開帷幕,現場揭秘國產手機晶片漏洞
    在此背景下,8月13日,第八屆網際網路安全大會(ISC 2020)漏洞管理與研究論壇正式開幕,360 Vulcan Team漏洞挖掘與利用高級專家、虛擬化安全研究員肖偉,盤古實驗室安全研究員Slipper,安全研究員、ZDI多年白金獎得主、2020 Pwn2Own Maiami站冠軍Steven Seeley,華為終端安全高級研究員Rancho Han分別就漏洞安全相關問題帶來主題演講。
  • CVE-2020-1472漏洞實戰 深度剖析
    本文作者:Faith(Ms08067實驗室 內網安全攻防知識星球) 0x00漏洞說明 CVE-2020-1472是繼MS17010之後一個比較好用的內網提權漏洞,影響Windows Server
  • Cve-maker是一個python工具,用於在當前或遠程計算機上檢測,查找,編譯和執行CVE.
    連結:https://github.com/msd0pe-1/cve-maker.gitEsn技術社區學習紀念U盤最新動態:所有預定/購買install.sh即可獲得對程序有用的庫:sh install.sh用法:Usage: python cve-maker.py [options] siteOptions:--version show program's version number and exit