當地時間4月17日,北京時間4月18日凌晨,Oracle官方發布了4月份的關鍵補丁更新CPU(Critical Patch Update)其中包含一個高危的Weblogic反序列化漏洞(CVE-2018-2628),通過該漏洞,攻擊者可以在未授權的情況下遠程執行任意代碼。
參考鏈接:
http://www.oracle.com/technetwork/security-advisory/cpuapr2018-3678067.html
漏洞影響范圍
l??Weblogic 10.3.6.0
l??Weblogic 12.1.3.0
l??Weblogic 12.2.1.2
l??Weblogic 12.2.1.3
根據NTI(綠盟態勢感知平臺)反饋的結果,在全球范圍內對互聯網開放weblogic服務的資產數量多達19229,其中歸屬中國地區的受影響資產為1787。

對應中國歸屬各省市的的分布情況如下圖所示,北京地區開放的資產數量較多。

技術防護方案
用戶自查
使用如下命令檢查Weblogic版本是否在受影響范圍內:
$ cd /lopt/bea92sp2/weblogic92/server/lib
$java -cp weblogic.jar weblogic.version
同時檢查是否對外開放了7001端口(Weblogic默認端口)。
官方修復方案
官方已經在本日發布的關鍵補丁更新中修復了該漏洞,請用戶及時下載更新進行防護。
參考鏈接:
http://www.oracle.com/technetwork/security-advisory/cpuapr2018-3678067.html
注:Oracle官方補丁需要用戶持有正版軟件的許可賬號,使用該賬號登陸https://support.oracle.com后,可以下載最新補丁。
臨時解決方案
CVE-2018-2628漏洞利用的第一步是與Weblogic服務器開放在服務端口上的T3服務建立socket連接,可通過控制T3協議的訪問來臨時阻斷攻擊行為。WebLogic Server?提供了名為weblogic.security.net.ConnectionFilterImpl?的默認連接篩選器。此連接篩選器接受所有傳入連接,可通過此連接篩選器配置規則,對t3及t3s協議進行訪問控制。
1.???進入Weblogic控制臺,在base_domain的配置頁面中,進入“安全”選項卡頁面,點擊“篩選器”,進入連接篩選器配置。

2.???在連接篩選器中輸入:weblogic.security.net.ConnectionFilterImpl,在連接篩選器規則中輸入:* * 7001 deny t3 t3s

3.???保存后規則即可生效,無需重新啟動。

|
連接篩選器規則格式如:target localAddress localPort action protocols,其中:
l??target?指定一個或多個要篩選的服務器。
l??localAddress?可定義服務器的主機地址。(如果指定為一個星號?(*),則返回的匹配結果將是所有本地?IP?地址。)
l??localPort?定義服務器正在監聽的端口。(如果指定了星號,則匹配返回的結果將是服務器上所有可用的端口)。
l??action?指定要執行的操作。(值必須為“allow”或“deny”。)
l??protocols?是要進行匹配的協議名列表。(必須指定下列其中一個協議:http、https、t3、t3s、giop、giops、dcom?或?ftp。)?如果未定義協議,則所有協議都將與一個規則匹配。
|
綠盟科技防護建議
綠盟科技檢測類產品與服務
1、公網資產可使用綠盟云 緊急漏洞在線檢測,檢測地址如下:
https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?page_id=12
2、內網資產可以使用綠盟科技的入侵檢測系統(IDS),遠程安全評估系統(RSAS V6)和Web應用漏洞掃描系統(WVSS) 進行檢測。
http://update.nsfocus.com/update/listIds
http://update.nsfocus.com/update/listRsasDetail/v/vulweb
通過上述鏈接,升級至最新版本即可進行檢測
使用綠盟科技防護類產品(IPS/NF)進行防護:
http://update.nsfocus.com/update/listIps
http://update.nsfocus.com/update/listNf
通過上述鏈接,升級至最新版本即可進行防護!
TRG安全平臺提供應急響應手冊
1. TSA(綠盟態勢感知平臺)
1.1 添加“weblogic漏洞攻擊嘗試”事件規則:
進入BSA態勢感知主頁,進入規則引擎APP,如圖1.1.

圖1.1進入規則引擎APP
1.2?新建規則

圖 1.2?新建規則
1.3 再新建頁面
規則模式:專家模式
規則分類:網絡入侵規則
規則sql:
select sip dip sum(last_times) as atk_count sip dip min(timestamp) as start_time max(timestamp) as end_time concat_agg(related_id_list) as related_id_list
from internal_app_bsaips.ipslog
where rule_id in (2417424022236142307421757217582145629116303122368563299232676262760689663446163666197661896619560862)
group by sip dip

圖1.3?新建規則-專家模式填寫
1.4 點擊下一步,出現規則屬性設置頁面
名稱:weblogic漏洞攻擊嘗試
安全等級:中
事件階段:偵查
超時時間:1800(默認值)
持續時間:3600(默認值)
歸并屬性:sip,dip
事件類型:系統入侵事件-?漏洞攻擊
規則描述:該事件是攻擊者對weblogic服務器漏洞做攻擊嘗試。
規則建議:如果攻擊發起者為我方資產,則說明該資產已失陷。否則,如被攻擊系統為我方資產,并且部署有weblogic服務,請確認是該資產是否存在事件詳情中的漏洞。

圖1.4?新建規則-規則屬性設置
點擊完成,完成該規則配置。
1.5?在規則列表中使之生效

圖1.5?使規則生效
2. ESP(綠盟企業安全平臺)
2.1?添加“weblogic漏洞攻擊嘗試”事件規則
打開ESP綠盟企業安全平臺,進入 量化分析->?事件分析->?事件規則,點擊“創建規則”,如圖2.1所示,彈出如圖2.2所示的創建規則窗口。

圖2.1?選擇創建規則
2.2 在[創建規則->基本設置]中填入以下信息
規則名稱:weblogic漏洞攻擊嘗試
日志類型:入侵防護日志
窗口設置:空白(默認)
規則描述:該事件是攻擊者對weblogic服務器漏洞做攻擊嘗試。如果攻擊發起者為我方資產,則說明該資產已失陷。否則,如被攻擊系統為我方資產,并且部署有weblogic服務,請確認是該資產是否存在事件詳情中的漏洞。

圖2.2?創建規則-基本設置
2.3 點擊下一步,在[創建規則->創建規則]中填入以下信息
選中[過濾條件(where)]
[告警事件規則]屬性in(2417424022236142307421757217582145629116303122368563299232676262760689663446163666197661896619560862)

圖2.3?創建規則-規則設置
2.4 點擊下一步,在[創建規則->事件設置]中填入以下信息
事件類型:攻擊入侵(只利用該設備告警不能確認攻擊是否成功,只能判斷是針對系統中可能存在的weblogic服務漏洞的攻擊嘗試)
風險等級:3

圖2.4?創建規則-事件設置
2.5?點擊創建,完成規則創建

圖2.5?規則創建完成后效果
3.?TAM新版本(綠盟全流量分析平臺)
添加“weblogic漏洞攻擊嘗試”事件規則
3.1 進入全流量事件規則配置文件文件目錄(/home/bsauser/BSA/apps/bsa_tam2/conf),備份mergeconf.xml文件,然后利用vi打開mergeconf.xml文件

圖3.1打開全流量事件規則配置文件
3.2 用utf-8編碼格式的編輯器打開“全流量平臺規則_weblogic漏洞攻擊嘗試事件.xml”,復制其中的內容插入到rules節點中,并保持退出,新規則自動生效。

圖3.2插入新規則到rules節點
互聯網資產影響排查
綠盟科技威脅情報中心提供對互聯網開放網絡資產信息查看的功能,企業用戶可通過在NTI上檢索自有資產信息端口開放情況,查看企業資產是否受此漏洞影響。

綠盟科技威脅情報中心為企業客戶提供互聯網資產核查服務,使得企業客戶能夠及時掌握自身資產的安全態勢以及資產變動情況,服務詳情可咨詢:[email protected],或者咨詢對應的客戶經理。
技術分析
漏洞簡析
該服務會解包Object結構,通過一步步的readObject去第二步服務器上的1099端口請求惡意封裝的代碼。

然后在本地彈出計算器。

Weblogic已經將互聯網暴露的PoC都已經加入了黑名單,如果要繞過他的黑名單的限制就只能自己動手構造。來看看InboundMsgAbbrev中resolveProxyClass的實現,resolveProxyClass是處理rmi接口類型的,只判斷了java.rmi.registry.Registry,其實隨便找一個rmi接口即可繞過。
|
protected?Class?resolveProxyClass(String[]?interfaces)?throws?IOException?ClassNotFoundException?{
String[]?arr$?=?interfaces;
int?len$?=?interfaces.length;
for(int?i$?=?0;?i$?<?len$;?++i$)?{
String?intf?=?arr$[i$];
if(intf.equals("java.rmi.registry.Registry"))?{
throw?new?InvalidObjectException("Unauthorized?proxy?deserialization");
}
}
return?super.resolveProxyClass(interfaces);
}
|
聲?明
本安全公告僅用來描述可能存在的安全問題,綠盟科技不為此安全公告提供任何保證或承諾。由于傳播、利用此安全公告所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,綠盟科技以及安全公告作者不為此承擔任何責任。綠盟科技擁有對此安全公告的修改和解釋權。如欲轉載或傳播此安全公告,必須保證此安全公告的完整性,包括版權聲明等全部內容。未經綠盟科技允許,不得任意修改或者增減此安全公告內容,不得以任何方式將其用于商業目的。