เนื่องจากการมีอยู่ทั่วไปของ WordPress แฮกเกอร์จริงๆ แล้วพยายามอย่างไม่หยุดยุ้มเพื่อผ่านทุกปลั๊กอิน WordPress ยอดนิยม ผลคือ การเปิดเผยช่องโหว่ในปลั๊กอิน WordPress เกือบดูเหมือนกระบวนการที่ไม่มีที่สิ้นสุด คราวนี้เป็น FB messenger live chat โดย Zotabox ดังนั้น ช่องโหว่ XSS แบบ Persistent (Stored XSS) ใน FB messenger live chat โดย Zotabox ถูกค้นพบ
ปลั๊กอิน WordPress นี้มีการติดตั้งใช้งานมากกว่า 30,000 ตามไดเรกทอรีปลั๊กอิน WordPress อย่างเป็นทางการ ตาม WordPress.org มันได้รับการอัปเดตเมื่อวานนี้ด้วยเวอร์ชัน 1.4.9 ที่แพตช์ช่องโหว่แล้ว
รายละเอียดช่องโหว่ XSS ใน FB messenger live chat
ผ่านฟังก์ชัน WordPress AJAX ซึ่งรับผิดชอบส่งข้อมูลไปยังสคริปต์และรับข้อมูลกลับโดยไม่ต้องโหลดหน้าใหม่ ฟังก์ชัน update_zb_fbc_code เข้าถึงได้โดยทุกคน
ตามที่คุณจะเห็นในบรรทัดโค้ดต่อไปนี้ wp_ajax_update_zb_fbc_code (สำหรับผู้ใช้ที่ล็อกอินแล้ว) & wp_ajax_nopriv_update_zb_fbc_code (สำหรับผู้ใช้ที่ไม่มีสิทธิ์) ทั้งคู่ใช้ฟังก์ชันเดียวกันคือ "update_zb_fbc_code" ดังนั้น อนุญาตให้ผู้ใช้ทุกคน (ล็อกอินหรือไม่) แก้ไขการตั้งค่าปลั๊กอินได้ ฉันไม่สามารถเน้นย้ำได้พอว่า ช่องโหว่นี้วิกฤตแค่ไหน และอาจถูกใช้ประโยชน์อย่างไร
154 add_action("wp_ajax_update_zb_fbc_code", "update_zb_fbc_code"); 155 add_action("wp_ajax_nopriv_update_zb_fbc_code", "update_zb_fbc_code");
นอกจากนี้ ฟังก์ชัน update_zb_fbc_code ไม่ตรวจสอบ ไม่มีความสามารถในการตรวจสอบ หรือการตรวจสอบเพื่อป้องกัน cross-site request forgery (CSRF) ก่อนอนุญาตให้เปลี่ยนการตั้งค่าปลั๊กอิน เพิ่มเติม การทำความสะอาด (sanitization) และการตรวจสอบความถูกต้อง (validation) ของข้อมูลนำเข้าเพื่อปรับเปลี่ยนการตั้งค่าของฟังก์ชันนี้ จำกัดมาก มีเพียงการกรอง () ซึ่งไม่เพียงพอ เนื่องจากการตั้งค่าที่เปลี่ยนแปลงถูกแสดงผลบน front end
157 function update_zb_fbc_code(){ 158 header('Access-Control-Allow-Origin: *'); 159 header('Access-Control-Allow-Credentials: true'); 160 $domain = addslashes($_REQUEST['domain']); 161 $public_key = addslashes($_REQUEST['access']); 162 $id = intval($_REQUEST['customer']); 163 $zbEmail = addslashes($_REQUEST['email']); 164 if(!isset($domain) || empty($domain)){ 165 header("Location: ".admin_url()."admin.php?page=zb_fbc"); 166 }else{ 167 update_option( 'ztb_domainid', $domain ); 168 update_option( 'ztb_access_key', $public_key ); 169 update_option( 'ztb_id', $id ); 170 update_option( 'ztb_email', $zbEmail ); 171 update_option( 'ztb_status_disconnect', 2 ); 172 wp_send_json( array( 173 'error' => false, 174 'message' => 'Update Zotabox embedded code successful !' 175 ) 176 ); 177 } 178 }
เนื่องจากช่องโหว่ XSS ใน FB messenger live chat กระบวนการต่อไปก็ได้รับผลกระทบ ปลั๊กอินลงทะเบียน insert_zb_fbc_code() เพื่อรันเมื่อโหลดหน้า WordPress:
151 add_action( 'wp_head', 'insert_zb_fbc_code' );
จากนั้นส่งต่อไปยังฟังก์ชัน print_zb_fbc_code() และต่อไป
139 function insert_zb_fbc_code(){ 140 if(!is_admin()){ 141 $domain = get_option( 'ztb_domainid', '' ); 142 $ztb_source = get_option('ztb_source',''); 143 $ztb_status_disconnect = get_option('ztb_status_disconnect',''); 144 $connected = 2; 145 if(!empty($domain) && strlen($domain) > 0 && $ztb_status_disconnect == 146$connected){ 147 print_r(html_entity_decode(print_zb_fbc_code($domain))); 148 } 149 } 150 }
180 function print_zb_fbc_code($domainSecureID = "", $isHtml = false) { 181 182 $ds1 = substr($domainSecureID, 0, 1); 183 $ds2 = substr($domainSecureID, 1, 1); 184 $baseUrl = '//static.zotabox.com'; 185 $code = <<<STRING 186 <script type="text/javascript"> 187 (function(d,s,id){var z=d.createElement(s);z.type="text/javascript";z.id=id;z.async=true;z.src=" {$baseUrl}/{$ds1}/{$ds2}/{$domainSecureID}/widgets.js";var sz=d.getElementsByTagName(s)[0];sz.parentNode.insertBefore(z,sz)}(document,"script","zb-embed-code")); 188 </script> 189 STRING; 190 return $code; 191 }
อัปเดตเพื่อความปลอดภ
มาตรการความปลอดภที่ชัดเจนที่สุดและสำคัญที่สุดคือการอัปเดตเป็นเวอร์ชันที่แพตช์แล้วของปลั๊กอิน ปลั๊กอิน FB messenger live chat ได้รับการอัปเดตเป็นเวอร์ชัน 1.4.9 โปรดแน่ใจว่าคุณอัปเดตเป็นเวอร์ชันนี้โดยเร็วที่สุด เพื่อลดทอนความพยายามในการใช้ประโยชน์จากช่องโหว่
เพิ่มเติม ระบบการทำความสะอาดและตรวจสอบความถูกต้องที่แข็งแกร็ง สามารถป้องกันเว็บไซต์ของคุณจากกรณีอย่าง XSS และ CSRF ฯลฯ
โซลูชันความปลอดภครบวงจร
การหยั่งรอยความปลอดภจะทำให้คุณเสียทุนมากในช่วงเวลานี้ การมีระบบตรวจสอบที่ต่อเนื่องและครบวงจรสำหรับเว็บไซต์ของคุณ จะช่วยยาวนานในการรักษาความปลอดภเว็บไซต์ โซลูชันความปลอดภอย่าง Astra WordPress Security Suite ที่ปรับแต่งสำหรับ WordPress สามารถเป็นผู้ช่วยชีวิตได้ Astra เสนอ Firewall สำหรับเว็บไซต์ของคุณ ซึ่งตั้งกำแพงกั้น XSS, CSRF, Bad bots, SQLi และ 100+ การโจมตีที่เป็นไปได้อื่นๆ รับ demo Astra ตอนนี้ หรือส่งข้อความที่นี่ เราจะยินดีช่วยเหลือ