Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบเครือข่าย >> ความปลอดภัยเครือข่าย

วิธีหยุดการแฮกเปลี่ยนเส้นทาง Drupal: อาการ สาเหตุ และวิธีแก้ไข

Drupal ถูกมองว่าปลอดภัยมาก และนี่คือเหตุผลที่มันนิยม Drupal เป็น CMS แบบโอเพนซอร์สและรู้จักกันดีว่าแข็งแกร่ง เนื่องจากเป็นโอเพนซอร์ส โค้ดต้นฉบับจึงมองเห็นได้สาธารณะ นี่คือเหมืองทองสำหรับนักล่ารางวัลบั๊ก (bug bounty hunters) Drupal ประสบกับ "Pharma Hack" ร้ายแรง ถึง "Kitty Cryptomining Malware" ในเดือนๆ ล่ามา อาการติดเชื้อที่เพิ่มขึ้นอีกคือ "Drupal hack redirect" ที่เปลี่ยนเส้นทางผู้เยี่ยมชมเว็บไซต์ของคุณไปหน้าเว็บสแปม

การแฮกเปลี่ยนเส้นทาง Drupal เกิดขึ้นหลังผู้โจมตีใช้ช่องโหว่ในเว็บไซต์และแก้ไขเนื้อหาเว็บไซต์เพื่อติดตั้งมัลแวร์ ผลคือผู้เยี่ยมชมเว็บไซต์ถูกเปลี่ยนเส้นทางไปลิงก์สแปมและน่าสงสัย เจ้าของเว็บไซต์รายงานว่ามัลแวร์นี้เปลี่ยนเส้นทางผู้ใช้ไปหน้าฟิชชิงและหน้าผู้ใหญ่ขายไวอากราหรือโป๊

การแฮกเปลี่ยนเส้นทาง Drupal ดูอย่างไร?

มีหลายประเภทของการติดเชื้อการเปลี่ยนเส้นทางนี้:

  1. ผู้เยี่ยมชมเว็บไซต์ถูกเปลี่ยนเส้นทางไปหน้าสแปมเมื่อเข้าชมหน้าแรก
  2. ทุกครั้งที่คลิกปุ่ม/ลิงก์ หน้าจะเปลี่ยนเส้นทางไปหน้าขายยาปลอม Viagra, Cialis

เพื่อดูว่าเว็บไซต์ Drupal ของคุณติดเชื้อรูปแบบที่สองหรือไม่ คุณสามารถใช้ Google dork คำสั่ง Google dork ต่อไปนี้ให้ข้อมูลเบื้องต้นเกี่ยวกับสิ่งที่เราจะเจาะลึก

site:your-website.com "viagra"

ที่นี่ dork นี้แสดงเว็บไซต์ Drupal ทั้งหมดที่เปลี่ยนเส้นทางไปหน้า viagra อย่างไรก็ตาม คุณสามารถค้นหาการเปลี่ยนเส้นทางเพิ่มเติมได้โดยแทนคำว่า viagra ด้วยคีย์เวิร์ดอื่น เช่น: 'poker', 'porn', 'loans' ฯลฯ

วิธีหยุดการแฮกเปลี่ยนเส้นทาง Drupal: อาการ สาเหตุ และวิธีแก้ไข

หลังจากคลิกลิงก์เว็บไซต์แรกที่ผลิตขึ้น เกิดข้อผิดพลาดดังต่อไปนี้

วิธีหยุดการแฮกเปลี่ยนเส้นทาง Drupal: อาการ สาเหตุ และวิธีแก้ไข

นี่หมายความว่าผู้โจมตีใช้ช่องโหว่ของเว็บไซต์และมันกำลังเปลี่ยนเส้นทาง อย่างไรก็ตาม เนื่องจากปัจจัยอื่นๆ การเปลี่ยนเส้นทางอาจไม่ทำงานตอนนี้

วิธีหยุดการแฮกเปลี่ยนเส้นทาง Drupal: อาการ สาเหตุ และวิธีแก้ไข

ประเภทของการแฮกเปลี่ยนเส้นทาง Drupal (รหัสสถานะ HTTP) :

  1. 301 Redirect: เรียกได้ว่า การเปลี่ยนเส้นทางถาวร เมื่อ Google หรือเครื่องมือค้นหาอื่นๆ มองที่ URL นี้ จะระบุว่า URL ย้ายไปตำแหน่งใหม่ ดังนั้นอัปเดตความสัมพันธ์ก่อนหน้าทั้งหมด แฮกเกอร์น่าจะใช้การเปลี่ยนเส้นทางนี้มากที่สุดเพราะความเรียบง่าย
  2. 302 Redirect: การใช้ 302 ไม่ได้ใช้แล้ว เพราะถูกแทนที่ด้วย 303 การเปลี่ยนเส้นทาง 303 ระบุว่าเอกสารพร้อมใช้งานชั่วคราว
  3. 303 Redirect: เป็นรูปแบบที่ปรับปรุงของ 302 การเปลี่ยนเส้นทาง 303 ให้หน้าชั่วคราวที่อาจไม่มีอยู่ที่ที่อยู่เดิมในอนาคต อาจเป็นฟอร์มข้อมูลบัตรเครดิต ตัวสร้างรายละเอียดชั่วคราว ฯลฯ นี่คือสิ่งที่คาดการณ์ได้น้อยที่สุดจากผู้โจมตี เว้นแต่จะเป็นการโจมตีที่ซับซ้อนมาก
  4. 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 ของคุณ