作為我們對Sucuri防火墻定期研究審計的一部分,我們發(fā)現(xiàn)了一個愿望清單插件YITH WooCommerce Wishlist,存在SQL注入漏洞。據(jù)統(tǒng)計,該插件目前至少已被50000+的wordpress站點(diǎn)安裝使用。
受影響范圍
這個漏洞主要出現(xiàn)在2.2.0版本以下,主要是因?yàn)樵摪姹救鄙賹τ脩糨斎霐?shù)據(jù)進(jìn)行嚴(yán)格過濾措施。攻擊者(至少有一個用戶帳戶)可能會利用該缺陷盜取用戶敏感數(shù)據(jù),甚至通過某些配置項(xiàng)危害你整個的WordPress安裝。
需要提醒的是在MySQL版本低于5.7的服務(wù)器中,該漏洞極易被利用。
這個漏洞有個非常有意思的地方,也是我們決定要發(fā)布該安全公告的原因,就是使用這個插件的站點(diǎn)通常會啟用免費(fèi)“用戶注冊”功能,以允許用戶的偏好(例如愿望清單)被存儲和訪問,以便后續(xù)使用。
技術(shù)細(xì)節(jié)
產(chǎn)生漏洞的代碼,可在2.1.2版本中的includes/class.yith-wcwl-shortcode.php的第523行中找到。這段代碼是get_products()函數(shù)的一部分,用于返回特定用戶的所有wishlist元素:
如果攻擊者控制了$limit變量,就可以為其賦任意值。例如構(gòu)建一個查詢語句。這樣攻擊者將有可能直接獲取走,幾臺服務(wù)器上的所有敏感數(shù)據(jù)。例如加密哈希和電子郵件等。
攻擊者想要達(dá)到構(gòu)建查詢的目的必須滿足以下條件:
分頁值必須為“yes”
count變量必須大于1(此變量存儲特定用戶的wishlist元素數(shù)量)
limit變量必須被設(shè)置
攻擊者可以通過 includes/class.yith-wcwl-shortcode.php中定義的短代碼yith_wcwl_wishlist來滿足所有這些條件:
攻擊者唯一要做的就是創(chuàng)建一個用戶帳戶,并調(diào)用漏洞短代碼(具體可以參考我們此前的文章)。
緊急措施
檢查你的插件版本,并盡快將其更新到最新版!
如果由于某種原因你無法升級,我們建議你使用Sucuri或其它WAF來保障你的站點(diǎn)安全。