CVE-2018-7600漏洞分析
大家好,我是小編
小米正式提交IPO
那些曾經不看好它的黑粉們
Are you OK?
前言
3月底,Drupal核心安全團隊發布了安全諮詢SA-CORE-2018-002,該安全諮詢討論了一個非常嚴重的漏洞CVE-2018-7600,該漏洞存在於眾多Drupal版本中,本文將對該漏洞進行詳細分析。
這個漏洞影響著超過一百萬個Drupal用戶和網站,它可以啟用遠程代碼執行,並且可以在Drupal 7 Form API上進行不完整的輸入驗證。
攻擊者可以使用此漏洞強制運行Drupal的伺服器,並執行可能危害Drupal安裝的惡意代碼。根據具體配置的不同,這也很可能會危及到主機。
由於沒有任何措施可以緩解對該漏洞的訪問,所以這個漏洞顯得尤為嚴重,這代表著匿名用戶使用此漏洞遠程執行代碼而無需身份驗證。
脆弱性根源分析
「可渲染數組(Renderable Arrays)」是在Drupal 7中正式引入的。這些結構由關聯數組實現,並將鍵值對作為函數參數或表單數據傳遞,以便更好的呈現標記和UI元素。
標記元素屬性具有以「#」字元為前綴的鍵。以下是在普通PHP函數中使用的渲染數組的示例。
圖1.渲染數組鍵值對的Drupal核心示例
在對Drupal安全補丁的快速檢查中發現了一個名為RequestSanitizer的分類。值得注意的是stripDangerousValues方法,該方法在另一個稱為sanitize的方法中調用。
前面的函數從數組參數的索引零處去掉了一個控制字元「#」。以下是補丁函數的一個片段。
圖2. Drupal補丁從參數化輸入中剝離「#」
基於Drupal安全團隊的補丁內容以及Drupal Form API的分析,42位研究人員推斷某些Form API函數能夠執行任意代碼,並且需要對通過前導「#」字元傳遞參數的輸入進行清理,以嘗試和防止代碼執行攻擊。
為了利用此漏洞,攻擊代碼必須將惡意代碼傳遞給Form API可執行函數之一的頁面載入,或者傳遞給AJAX請求的呈現階段。
我們確定可以用於遠程代碼執行的四種可利用的Form API函數是:
[#post_render]
[#pre_render]
[#access_callback]
[#lazy_builder]
利用方法分析
Drupal專家與安全研究人員協作的報告指出,默認配置在新用戶註冊頁面中有一些欄位,在Drupal補丁之前未正確清理。/ user / register中的默認頁面可以被迫發送特定的AJAX請求,該請求可以針對各種表單欄位,包括受漏洞影響的表單欄位,從而執行攻擊者的代碼。
概念證明(POC)代碼在2018年4月12日發布。初始POC使用#post_render函數針對郵件數組執行PHP函數exec,後者執行底層操作系統函數Web伺服器用戶的上下文。
以下是在本地地址10.3.228.197處捕獲到易受攻擊的Drupal實例的流量。它使用的PHP命令是exec,有效載荷是一個簡單的wget命令,用於外部IP地址172.217.6.36。
在POST內容類型:application / x-www-form-urlencoded和multipart / form-data傳遞時,可以利用已知的POC進行開發。
圖4. x-www-form-urlencoded表單數據有效載荷
研究人員發現的第二個POC以時區格式欄位為目標。伺服器響應一個HTTP 500服務不可用的響應。
圖5.利用時區和#lazy_builder函數進行利用
圖6.通過multipart / form-data的時區#lazy_builder
由於8.x和7.x版本上的/ user / register頁面的默認配置,第一個公開可用的POC出現在脆弱的Drupal 8.x實例上才有效。
其他默認配置URI包括/ user / password頁面,可以成功地利用7.x版本。這個特定的漏洞利用目標是_triggering_element_name表單,並要求發送兩個請求。
圖7.通過兩個HTTP請求開發Drupal 7.x
在進行這樣的分析時,攻擊者試圖對惡意有效載荷調用wget,curl和其他第二階段機制,以啟動對Drupal站點的收購。就像任何遠程代碼執行漏洞一樣,已經發現了包含反向shell,後門,殭屍網路,甚至加密礦工的武器化有效載荷。
潛在的威脅
幾乎所有公開可用的POC樣本都通過將[#post_render] []的渲染數組鍵與PHP函數exec的值一起傳遞給Drupal的易受攻擊實例,緊接著是第二個鍵值對[#markup],其值為操作系統函數由exec調用。
但是,其他成功的漏洞利用了上面列出的四個表單API函數([#post_render],[#pre_render],[#access_callback]和[#lazy_builder])。
我們在Palo Alto Networks覆蓋利用這些API函數的流量,以及可能被利用的其他「危險」PHP函數。應該篩選的PHP函數包括:
Exec
` (backtick)
$ (dollar)
system
popen
pcntl_exec
eval
preg_replace
create_function
include
require
passthru
shell_exec
proc_open
assert
include_once
require_once
$_GET
$_POST
$_SERVER
$_FILES
$_REQUEST
$_SESSION
$_ENV
$_COOKIE
除exec外,惡意軟體樣本還包括系統、passthru和eval。可以肯定的是,更多攻擊者將會製作利用這些功能的請求。
結論和緩解
CVE-2018-7600處於瘋狂傳播狀態,未來很可能會繼續被利用。具體措施請參照Drupal小組的說明:
Palo Alto Networks客戶可以通過以下產品和服務免受此漏洞的侵害:
威脅防護簽名40627,用於識別包含漏洞利用代碼的HTTP請求
PAN-DB阻止攻擊者的C&C伺服器IP和域
WildFire和Antivirus標識並阻止開發負載
※利用Apple漏洞逃離沙箱
※礦機失竊,4G、思科屢爆漏洞,50萬PC被感染……
TAG:漏洞銀行 |