Drupal ถูกมองว่าปลอดภัยมาก และนี่คือเหตุผลที่มันนิยม Drupal เป็น CMS แบบโอเพนซอร์สและรู้จักกันดีว่าแข็งแกร่ง เนื่องจากเป็นโอเพนซอร์ส โค้ดต้นฉบับจึงมองเห็นได้สาธารณะ นี่คือเหมืองทองสำหรับนักล่ารางวัลบั๊ก (bug bounty hunters) Drupal ประสบกับ "Pharma Hack" ร้ายแรง ถึง "Kitty Cryptomining Malware" ในเดือนๆ ล่ามา อาการติดเชื้อที่เพิ่มขึ้นอีกคือ "Drupal hack redirect" ที่เปลี่ยนเส้นทางผู้เยี่ยมชมเว็บไซต์ของคุณไปหน้าเว็บสแปม
การแฮกเปลี่ยนเส้นทาง Drupal เกิดขึ้นหลังผู้โจมตีใช้ช่องโหว่ในเว็บไซต์และแก้ไขเนื้อหาเว็บไซต์เพื่อติดตั้งมัลแวร์ ผลคือผู้เยี่ยมชมเว็บไซต์ถูกเปลี่ยนเส้นทางไปลิงก์สแปมและน่าสงสัย เจ้าของเว็บไซต์รายงานว่ามัลแวร์นี้เปลี่ยนเส้นทางผู้ใช้ไปหน้าฟิชชิงและหน้าผู้ใหญ่ขายไวอากราหรือโป๊
การแฮกเปลี่ยนเส้นทาง Drupal ดูอย่างไร?
มีหลายประเภทของการติดเชื้อการเปลี่ยนเส้นทางนี้:
- ผู้เยี่ยมชมเว็บไซต์ถูกเปลี่ยนเส้นทางไปหน้าสแปมเมื่อเข้าชมหน้าแรก
- ทุกครั้งที่คลิกปุ่ม/ลิงก์ หน้าจะเปลี่ยนเส้นทางไปหน้าขายยาปลอม Viagra, Cialis
เพื่อดูว่าเว็บไซต์ Drupal ของคุณติดเชื้อรูปแบบที่สองหรือไม่ คุณสามารถใช้ Google dork คำสั่ง Google dork ต่อไปนี้ให้ข้อมูลเบื้องต้นเกี่ยวกับสิ่งที่เราจะเจาะลึก
site:your-website.com "viagra"
ที่นี่ dork นี้แสดงเว็บไซต์ Drupal ทั้งหมดที่เปลี่ยนเส้นทางไปหน้า viagra อย่างไรก็ตาม คุณสามารถค้นหาการเปลี่ยนเส้นทางเพิ่มเติมได้โดยแทนคำว่า viagra ด้วยคีย์เวิร์ดอื่น เช่น: 'poker', 'porn', 'loans' ฯลฯ
หลังจากคลิกลิงก์เว็บไซต์แรกที่ผลิตขึ้น เกิดข้อผิดพลาดดังต่อไปนี้
นี่หมายความว่าผู้โจมตีใช้ช่องโหว่ของเว็บไซต์และมันกำลังเปลี่ยนเส้นทาง อย่างไรก็ตาม เนื่องจากปัจจัยอื่นๆ การเปลี่ยนเส้นทางอาจไม่ทำงานตอนนี้
ประเภทของการแฮกเปลี่ยนเส้นทาง Drupal (รหัสสถานะ HTTP) :
- 301 Redirect: เรียกได้ว่า การเปลี่ยนเส้นทางถาวร เมื่อ Google หรือเครื่องมือค้นหาอื่นๆ มองที่ URL นี้ จะระบุว่า URL ย้ายไปตำแหน่งใหม่ ดังนั้นอัปเดตความสัมพันธ์ก่อนหน้าทั้งหมด แฮกเกอร์น่าจะใช้การเปลี่ยนเส้นทางนี้มากที่สุดเพราะความเรียบง่าย
- 302 Redirect: การใช้ 302 ไม่ได้ใช้แล้ว เพราะถูกแทนที่ด้วย 303 การเปลี่ยนเส้นทาง 303 ระบุว่าเอกสารพร้อมใช้งานชั่วคราว
- 303 Redirect: เป็นรูปแบบที่ปรับปรุงของ 302 การเปลี่ยนเส้นทาง 303 ให้หน้าชั่วคราวที่อาจไม่มีอยู่ที่ที่อยู่เดิมในอนาคต อาจเป็นฟอร์มข้อมูลบัตรเครดิต ตัวสร้างรายละเอียดชั่วคราว ฯลฯ นี่คือสิ่งที่คาดการณ์ได้น้อยที่สุดจากผู้โจมตี เว้นแต่จะเป็นการโจมตีที่ซับซ้อนมาก
- 307 Redirect: เป็นรูปแบบแปรผันของ 303 redirect พร้อมความแตกต่างเล็กน้อย เพิ่มเติมมี 308 redirect ซึ่งเป็นการเปลี่ยนเส้นทางทดลอง ไม่น่าจะใช้แต่ไม่สามารถตัดความเป็นไปได้ได้
เครื่องหมายของมัลแวร์เปลี่ยนเส้นทาง Drupal:
- ทรัฟฟิกเว็บไซต์สูงผิดปกติ
- ไฟล์ไม่รู้จักถูกเพิ่มในเว็บไซต์ Drupal
- ผู้ใช้ใหม่พร้อมสิทธิ์แอดมินถูกสร้าง
- การคลิกลิงก์บนหน้าแรกเว็บไซต์เปลี่ยนเส้นทางไปสแปม
- โฆษณาอันตรายหรือโป๊ปอัปขึ้นบนเว็บไซต์
- โหนด ไฟล์ ฯลฯ ที่ไม่รู้จักมาก่อน อาจปรากฏ
- เครื่องมือค้นหาอาจแสดงเนื้อหาสแปม
- คำเตือนความปลอดภัยหรือบล็อคลิสต์โดยเครื่องมือค้นหาเช่น Google, Bing ฯลฯ
สาเหตุของปัญหาการแฮกเปลี่ยนเส้นทาง Drupal:
สาเหตุของการแฮกเปลี่ยนเส้นทาง Drupal อาจหลากหลายมากและไม่สามารถสรุปในบทความเดียวได้ อย่างไรก็ตาม เราสามารถดูสาเหตุหลักๆ แบบสั้นๆ ได้:
การเปลี่ยนเส้นทาง DNS (DNS Redirect)
การเปลี่ยนเส้นทาง DNS เกิดขึ้นเมื่อใครสักคนแก้ไขรายการของเซิร์ฟเวอร์ DNS ของคุณ ดังนั้นเมื่อใครขอเว็บไซต์ของคุณ เซิร์ฟเวอร์ DNS จะส่งผู้ใช้ไปที่รายการนั้น เป็นการทดสอบฮยูริสติก คุณสามารถทำ DNS lookup ได้ Windows มีเครื่องมือ traceroute เริ่มต้น เข้าถึงได้ผ่านบรรทัดคำสั่ง tracert www.your-site.com ผู้ใช้ Linux สามารถใช้ host www.your-site.com หาก DNS lookup คืนค่า IP ผิด ปัญหาอยู่ที่ DNS ไใช่เว็บไซต์ของคุณ ผู้ใช้ขั้นสูงสามารถตรวจสอบรายการเซิร์ฟเวอร์ DNS ผิดปกติได้
การแก้ไขไฟล์ (Tampering files)
ผู้โจมตีอาจแก้ไขไฟล์ .htaccess และ index.php น่าจะต้องคอยดูโค้ดอันตรายภายใน โค้ดอาจอยู่ในรูปแบบต่อไปนี้:
data:text/html,<html><meta http-equiv="refresh" content="0; url=https://malicious_site.com/process/route/1673246826.html?refresh=non-ie&bl=0"></html>
ที่นี่ โค้ดชิ้นนี้กำลังเปลี่ยนเส้นทางเว็บไซต์ไปโดเมน https://malicious_site.com
ความสมบูรณ์ของไฟล์หลัก (Core Integrity)
การตรวจสอบด้วยตนเองอย่างละเอียดของไฟล์ทั้งหมดเป็นไปไม่ได้ ดังนั้นขั้นตอนแรกในทิศทางนี้คือการตรวจสอบค่าความสมบูรณ์ของไฟล์ที่ติดตั้ง เริ่มต้นด้วย:
mkdir drupal-8.3.5
cd drupal-8.3.5
wget https://github.com/drupal/core/archive/8.3.5.tar.gz
tar-zxvf core-8.3.5.tar.gz
โค้ดชิ้นนี้สร้างไดเรกทอรีชื่อ Drupal-8.3.5 และเปลี่ยนไปที่นั่น บรรทัดที่สามดาวน์โหลดไฟล์ติดตั้งต้นฉบับจาก Github repository และบรรทัดที่สี่แตกไฟล์ ตอนนี้มาถึงส่วนสำคัญของการเปรียบเทียบ diff -r core-8.3.5 ./public_html คำสั่งนี้จะให้การเปลี่ยนแปลงในไฟล์ของเราเทียบกับการติดตั้งต้นฉบับ ดำเนินต่อในรูปแบบนี้เพื่อตรวจสอบไฟล์ทั้งหมด
สาเหตุอื่นๆ
- การอภิปรายสาธารณะครั้งแรกของ SQL injection เขียนไว้ตั้งแต่ปี 1998 มีเหตุผลว่าทำไมมันยังหลอกลวงเว็บไซต์จนถึงวันนี้ การเกิด SQL injection เป็นผลมาจากอินพุตที่ไม่ได้ทำความสะอาด (unsanitized input) การข้ามเพียงอักขระ semicolon ในการเขียนโค้ดก็นำไปสู่ช่องโหว่ SQL injection ได้
- น่าจะต้องคอยดูชื่อโมดูลที่น่าสงสัยอย่าง
modules/system/wxeboa.phpไม่ใช่ส่วนหนึ่งของการติดตั้งต้นฉบับ - รายงานความโปร่งใสของ Google ช่วยได้มากขณะล่าสาเหตุของการแฮกเปลี่ยนเส้นทาง Drupal มันบอกรายละเอียดมากเกี่ยวกับเว็บไซต์ของคุณ
- รหัสผ่าน FTP หรือเว็บไซต์ที่อ่อนแอ อาจเป็นสาเหตุของการแฮกเปลี่ยนเส้นทาง Drupal หากคุณใช้การตั้งค่าเริ่มต้น ให้เปลี่ยนทันที!
การควบคุมความเสียหายสำหรับปัญหาการแฮกเปลี่ยนเส้นทาง Drupal:
อิงจาก Referrer ที่มีคีย์เวิร์ด
กฎข้อมือของความปลอดภัยไซเบอร์คือ คุณไม่สามารถกำจัดความเป็นไปได้ของการโจมตีได้ คุณสามารถล่าช้ามันได้เท่านั้น ในทิศทางนี้ อีกทริกเกอร์ฉลาดคือแก้ไขไฟล์ .htaccess ไฟล์สามารถแก้ไขได้ بحيث แม้จะมีการติดเชื้อในอนาคต เว็บไซต์ของคุณก็จะบล็อกผู้ใช้ไม่ให้เข้าถึงสแปม นี่จะสร้างความไว้วางใจในผู้ใช้ ดังนั้นแม้จะมีการติดเชื้อ เครื่องมือค้นหาก็ไม่ได้บล็อคลิสต์คุณ เพราะคุณบล็อกสแปมอัตโนมัติ นี่จะซื้อเวลาให้คุณและช่วยอันดับการค้นหาไม่ให้ล้มลง ดังนั้นจึงทำงานเป็นการควบคุมความเสียหาย
<Limit GET>
order allow, deny
allow from all
deny from env = spammer
SetEnvIfNoCase Referer ". * (Poker | credit | money). *" Spammer
</ Limit>
โค้ดชิ้นนี้บล็อกผู้ใช้ไม่ให้เข้าถึงหน้าที่มีลิงก์อย่าง poker, credit ฯลฯ ตามตัวระบุ (HTTP referrers) เนื่องจากเว็บไซต์ของเราไม่มีคำเหล่านี้ เราสามารถบล็อกคำเหล่านี้ได้ ทำงานเป็นตัวกรองกับตัวแทน (wildcards)
อิงจากตัวระบุของตัวมันเอง (Based on Its own Identifiers)
วิธีที่สอง คือการบล็อกการเข้าถึงอิงจากตัวระบุของตัวมันเอง (HTTP REFERRERS)
Rewrite Engine On
RewriteBase /
# allow referrals from search engines:
RewriteCond% {HTTP_REFERER}!. * xyz \ .com /.*$ [NC]
RewriteCond% {HTTP_REFERER}! ^ Http: // ([^ /] +) google \ .. * $ [NC]
ต่อไปแทนคำว่า google ด้วยเครื่องมือค้นหาทั้งหมดอย่าง yahoo, bing ฯลฯ ที่คุณต้องการอนุญาต
# Conditions for don`t wanted referrals
RewriteCond% {HTTP_REFERER} ^. * Loans. * $ [OR]
ต่อไปแทนคำว่า loan ด้วยคำสแปมอย่าง viagra, porn ฯลฯ ที่คุณต้องการบล็อก อย่างไรก็ตาม สังเกตรงนี้ Apache's ModRewrite ต้องเปิดใช้งานสำหรับสิ่งนี้จะทำงาน เพิ่มเติม คุณยังสามารถจำกัด IP บาง IP ที่รู้จักสาธารณะสำหรับสแปมได้
การทำความสะอาดเว็บไซต์ที่ติดเชื้อมัลแวร์เปลี่ยนเส้นทาง Drupal
การทำความสะอาดฐานข้อมูล (Database Cleanup):
การตรวจสอบผู้ใช้ (Checking users)
ขั้นแรก เราจะเริ่มด้วยการตรวจสอบ SQL injection คอยหาตารางน่าสงสัยอย่าง Sqlmap ตารางชื่อ Sqlmap เป็นผลมาจากคำสั่งขยะขณะใช้เครื่องมือทดสอบการเจาะรูปแบบอัตโนมัติ Sqlmap ต่อเว็บไซต์ ในการแสดงตารางทั้งหมด ใช้คำสั่ง show tables ; ผู้โจมตีอาจสร้างรายการผู้ใช้ใหม่และได้สิทธิ์แอดมิน ในการตรวจสอบใช้:
Select * from users as u
AND u.created > UNIX_TIMESTAMP(STR_TO_DATE('Oct 15 2018', '%M %d %Y '));
ที่นี่ จะแสดงผู้ใช้ทั้งหมดที่สร้างหลัง 15 ตุลาคม 2018 คุณสามารถปรับบรรทัดนี้เป็นวันที่คุณต้องการ หากตรวจพบผู้ใช้หรือตารางผิดปกติ คุณสามารถลบได้โดยใช้ drop database database-name.dbo;
การบล็อกผู้ใช้ (Blocking users)
เพิ่มเติม คุณสามารถบล็อกผู้ใช้หรือเปลี่ยนรหัสผ่านทุกผู้ใช้ ใช้คำสั่งต่อไปนี้:
update users set pass = concat('ZZZ', sha(concat(pass, md5(rand()))));
คำสั่ง SQL นี้เปลี่ยนรหัสผ่านผู้ใช้เป็นรูปแบบ MD5 รูปแบบ MD5 เป็นฟังก์ชันความปลอดภัยทางเข้ารหัส อย่าเก็บรหัสผ่านในรูปแบบ plain text ค่อนข้างง่ายสำหรับผู้โจมตีที่จะดึงรหัสผ่าน plain text จากฐานข้อมูลที่ถูกแฮก ค่า MD5 ยังให้ชั้นความปลอดภัยเพิ่มเติม เนื่องจากคำว่า admin จะให้แฮช 86fb269d190d2c85f6e0468ceca42a20 เนื่องจากเป็นฟังก์ชันหนึ่งทาง (one-way function) จึงยากที่จะคำนวณย้อนกลับ
การทำความสะอาดไฟล์ (Files Cleanup):
- ย้อนกลับการติดตั้งเป็นสำเนาสำรองข้อมูลของไฟล์
- โมดูลภายนอกสามารถใช้สแกนการติดเชื้อ โมดูล hacked module เป็นผลิตภัณฑ์ยอดนิยมหนึ่ง
- ห้ามการเข้าถึงไฟล์ละเอียดอ่อนภายนอกและไดเรกทอรีราก
- ปิดการรายงานข้อผิดพลาดเพื่อปิดช่องรั่วข้อมูลละเอียดอ่อน
- หากการติดตั้งของคุณล้าสมัย ให้อัปเดต! อัปเดต! อัปเดต!
- รีเซ็ต API keys และรหัสผ่าน FTP ที่ใช้ก่อนหน้านี้ทั้งหมด ให้แน่ใจว่าใช้รหัสผ่านแข็งแกร่ง
- ล้างแคชด้วยคำสั่ง:
drush cache-rebuild(Drupal 8) หรือdrush cache-clear all(Drupal 7) - ใช้โซลูชัน WAF บางอย่างเป็นชั้นความปลอดภัยเพิ่มเติมต่อการแฮกเปลี่ยนเส้นทาง Drupal
อย่างไรก็ตาม ยังมีอีกมากที่อาจผิดพลาดและนำไปสู่การแฮกเปลี่ยนเส้นทาง Drupal หากคุณยังไม่สามารถแก้ไขได้ ติดต่อผู้เชี่ยวชาญ หากการทำความสะอาดด้วยตนเองดูเหนื่อยล้า ให้ใช้เครื่องมืออัตโนมัติ อัปเดตเป็นประจำจากบล็อก เว็บไซต์ ฯลฯ เกี่ยวกับช่องโหว่ที่ค้นพบใน CMS ของคุณ