作者:墨云科技VLab Team
原文鏈接:https://mp.weixin.qq.com/s/2DqN3EsHqG24AjMy8scecA

漏洞簡述

WooCommerce Currency Switcher (WOOCS)是WooCommerce的多貨幣插件,它允許你的網站訪問者根據設定的貨幣匯率實時切換產品價格的貨幣,并以選定的貨幣支付。允許為WooCommerce商店添加任何貨幣, 是WooCommerce商城系統不可或缺的貨幣切換器及多貨幣付款WordPress插件。WOOCS在WordPress官方統計有6W+的用戶量。

漏洞分析

先查看WordPress官方倉庫,對比下有哪些文件進行了改動。

可以看到修改的文件較多,對官方文檔進行閱讀后發現,該插件可以支持使用短標簽shortcode方式調用顯示,并且支持對短標簽進行傳入值,在classes/woocs.php中找到了注冊shortcode的部分。

逐一看一下其具體實現的代碼

首先會通過args接收短標簽傳入的值等配置信息,然后進過內部的賦值等操作到最后一步會調用render_html會傳入兩個值,一個是寫死的woocs.php的路徑,另一個為短標簽接收到的參數,跟進該方法看一下具體邏輯

   public function render_html($pagepath, $data = array()) {
        @extract($data);
        ob_start();
        include($pagepath);
        return ob_get_clean();
    }

可以看到該代碼非常簡單,在第一步就調用了

extract

而該函數可以從數組中將變量導入到當前的符號表,即將數組中的鍵值對注冊成函數,使用數組鍵名作為變量名,使用數組鍵值作為變量值。

這樣就會導致變量覆蓋的問題,接著看到下面直接調用了

include($pagepath)

看到這大家應該就明白了,只需要給傳入的pagepath,從而導致達到任意文件包含的問題。然后我們制作一個圖片馬,就可以輕松將LFI漏洞升級為RCE漏洞。

漏洞驗證

LFI:

RCE:

時間線

  • 2021年7月19日WOOCS插件發布更新
  • 2021年7月26日VLab實驗室監測到漏洞通告
  • 2021年7月26日VLab實驗室完成該漏洞復現

影響版本

WooCommerce Currency Switcher(<= 1.3.6.2)

修復建議

登錄WordPress后臺,將相關插件更新至最新版。


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/2021/