2018年4月26日,Drupal官方發布新補丁和安全公告,修復了編號為CVE-2018-7602的遠程代碼執行漏洞,此漏洞源于3月28日的更新版中對編號為CVE-2018-7600的漏洞修復不完全,導致補丁被繞過,可以造成任意代碼執行。
目前,已經發現針對CVE-2018-7602/CVE-2018-7600漏洞的在野利用,且部分利用代碼已經公開。360-CERT對此漏洞進行了技術分析,建議使用Drupal開源內容管理系統的用戶盡快進行更新。
影響版本
Drupal 7.x,8.x
修復版本
Drupal 7.59,Drupal 8.5.3,Drupal 8.4.8
修復補丁
注意:此補丁只針對CVE-2018-7602漏洞,針對CVE-2018-7600修復方式查看
CVE-2018-7600:Drupal核心遠程代碼執行漏洞預警。
對CVE-2018-7600漏洞的補丁通過過濾帶有#
的輸入來處理請求(GET,POST,COOKIE,REQUEST)中數據。
但是Drupal 應用還會處理path?destination=URL
形式的請求,發起請求需要對destination=URL
中的URL進行URL編碼,當對URL中的#
進行編碼兩次,就可以繞過sanitize()
函數過濾。
構造特殊請求繞過過濾代碼
POST /drupal-7.59/drupal-7.59/node/9/delete?destination=node?q[%2523][]=passthru%26q[%2523type]=markup%26q[%2523markup]=whoami
其中%2523
是對#
的兩次URL編碼。
WEB中間件對%2523
解碼獲得%23
繞過sanitize()
,stripDangrousValues
函數檢查。
在Drupal應用對destination URL
進行處理時,會再次解碼%23
,獲得#
。
使用parse_str,并存入options,還需要通過其他步驟來觸發漏洞。
增加對destination URL
安全處理
限定parse_str只對string參數做處理
并在可能觸發漏洞的文件模塊增加處理
2018-03-28 Drupal 官方發布針對CVE-2018-7600漏洞的補丁和安全公告
2018-03-29 360-CERT 發布CVE-2018-7600:Drupal核心遠程代碼執行漏洞預警
2018-04-13 360-CERT 發布CVE-2018-7600:漏洞分析報告
2018-04-26 Drupal 官方發布針對CVE-2018-7602漏洞的補丁和安全公告
2018-04-26 360-CERT 發布CVE-2018-7602:Drupal核心遠程代碼執行漏洞分析預警