作者:Rico @騰訊安全云鼎實驗室
公眾號:https://mp.weixin.qq.com/s/EQD4-K6HgBY9wdzeXeyzkg
0. 漏洞背景
2 月 20 日 Drupal 官方披露了一個 Drupal 的遠程命令執行漏洞:
https://www.drupal.org/sa-core-2019-003
漏洞的觸發條件為開啟了 RESTful Web Services,且允許 POST / PATCH 請求。
根據 Drupal 的配置,此漏洞可能不需要任何權限即可觸發,但普適性不高。一旦該漏洞被利用,攻擊者則可以直接在 Web 服務器上執行任意 PHP 代碼,造成服務器被入侵、用戶信息泄露等后果。
騰訊云不受該漏洞影響,此漏洞爆發后,騰訊云安全團隊第一時間進行跟蹤分析,且對云上客戶進行預警通知。
1. 漏洞定位
漏洞通告指出了 Drupal 8 在開啟了 RESTful Web Services 模塊,同時允許了 PATCH / POST 方法請求后,可以造成代碼執行漏洞。
根據 commit log [注1] 可以定位到漏洞的觸發原因在于反序列化的操作:
可以推測應該是在進行 REST API 操作的過程中,options 參數的內容帶入到 unserialize 函數導致的。通過 diff 可以發現 LinkItem.php 和 MapItem.php 都受到影響,這里從 LinkItem 來向上挖掘漏洞點。
查看 core\modules\link\src\Plugin\Field\FieldType\LinkItem.php:
梳理了其整個調用鏈,從 REST 請求開始,先通過用戶傳入的 JSON 的 _links.type 獲取了其對應的 Entity,再獲取 Entity 內的 Fields 列表,遍歷這個列表得到 key,從用戶傳入的 JSON 內取出 key,拼接成為 field_item:key 的形式(過程略),最終在 getDefinition 內查找了 definitions 數組內的字段定義,得到一個對應的 Field 的實例對象,過程大體如下:
接著 FieldNormalizer 的 denormalize 方法調用了 Field 的 setValue 方法。
也就是說,我們如果可以將 $field_item 控制為 LinkItem 或者 MapItem,即可觸發反序列化。
2. 觸發點構造
我們在 Drupal 后臺配置好 RESTful Web Service 插件,選擇一個可以進行 POST 的操作。
為了盡可能模擬網站管理員的配置,我們這里允許對于 /user/register 的 POST 操作。
于情于理,用戶注冊處必然可以作為匿名用戶來進行操作。開啟 /user/register :
設置允許匿名用戶利用 POST 來訪問 /user/register 。
上文中提到,我們需要一個 Entity 內存在 LinkItem Field。通過對 Entity 的查找,定位到 MenuLinkContent 和 Shortcut 使用了 LinkItem,利用 Shortcut 來進行進一步的測試。
Shortcut 的 _links.type 為:http://127.0.0.1/rest/type/shortcut/default 。
向 /user/register 發送 POST 請求,同時在 PHPStorm 內將斷點下在
core\modules\hal\src\Normalizer\FieldItemNormalizer.php 的 denormalize 函數:
可以發現,在調用 setValue 方法的現場,values 為一個數組。且 $values['options'] 存在,那么就執行反序列化操作。我們修改 payload 為即可觸發反序列化。
驗證視頻:
攻擊者利用此反序列化可以在服務器上執行任意代碼,利用此漏洞在服務器上彈出計算器的視頻如下:
3. 安全建議
修復方案如下:
-
Drupal 8.6.x 版本升級到 8.6.10 版本
-
Drupal 8.5.x 或更早期版本版本升級到 8.5.11 版本
-
Drupal 7 暫無更新
緩解措施如下:
-
禁用 RESTful Web Services 模塊
-
配置服務器不允許 POST/PATCH 請求
注1:
https://github.com/drupal/core/commit/24b3fae89eab2b3951f17f80a02e19d9a24750f5
騰訊安全云鼎實驗室
關注云主機與云內流量的安全研究和安全運營。利用機器學習與大數據技術實時監控并分析各類風險信息,幫助客戶抵御高級可持續攻擊;聯合騰訊所有安全實驗室進行安全漏洞的研究,確保云計算平臺整體的安全性。相關能力通過騰訊云開放出來,為用戶提供黑客入侵檢測和漏洞風險預警等服務,幫助企業解決服務器安全問題。
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/821/
暫無評論