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

ป้องกันการบุกแผงควบคุมผู้ดูแล Magento: สาเหตุ อาการ และวิธีแก้ไขที่มีประสิทธิภาพ

Magento มีส่วนช่วยในการเติบโตของอีคอมเมิร์ซบนอินเทอร์เน็ต พร้อมใช้งานทั้งแบบฟรี (Community Edition) และแบบจ่าย (Enterprise Edition) Magento นำตลาดซอฟต์แวร์อีคอมเมิร์ซโอเพนซอร์ส Magento 2 ได้ถูกปล่อยออกมาแล้วพักใหญ่ และมีการอัปเดตความปลอดภและประสิทธิภาพที่รุนแรง อย่างไรก็ตาม เว็บไซต์ส่วนใหญ่ไม่น่าจะอัปเดตเป็นเวอร์ชันใหม่ ซึ่งทำให้เปราะบางต่อ Magento Admin hack และการโจมตีอื่นๆ Mark Lavelle CEO ของ Magento เข้าใจความเสี่ยงด้านความปลอดภและดังนั้นแสดงความคิดเห็นว่า

ตัวอย่างการบุกแผงควบคุมผู้ดูแล Magento

แผงควบคุมผู้ดูแลเป็นหนึ่งในพื้นที่ที่ทรัพยากรมากที่สุดของร้าน Magento เนื่องจากให้การเข้าถึงระดับสูง (high privileged access) ไปยังเว็บไซต์ ดังนั้น เมื่อถูกบุกเนื่องจาก Magento admin hack ผู้ใช้ไม่มีทางรักษาอื่นนอกจากขอความช่วยเหลือ ผู้ใช้ที่ถูกบุกสามารถหาได้ขอการสนับสนุนบนฟอรั่มชุมชน

ป้องกันการบุกแผงควบคุมผู้ดูแล Magento: สาเหตุ อาการ และวิธีแก้ไขที่มีประสิทธิภาพ ป้องกันการบุกแผงควบคุมผู้ดูแล Magento: สาเหตุ อาการ และวิธีแก้ไขที่มีประสิทธิภาพ

อาการการบุกแผงควบคุมผู้ดูแล Magento

  • ลูกค้าร้องเรียนเรื่องข้อมูลบัตรเครดิตถูกขโมย
  • ผู้ดูแลหลายคนปรากฏบนแดชบอร์ด Magento
  • เว็บไซต์ถูกเข้าถึงจาก IP ไม่รู้จักหลายแห่ง
  • ร้าน Magento ถูกบิดเบือนหน้าตา (deface)
  • การสแกนเว็บไซต์แสดงข้อมูลบัตรเครดิตที่บันทึกไว้
  • บันทึก FTP แสดงการเชื่อมต่อสำเร็จจากอุปกรณ์ไม่รู้จัก
  • โค้ดอันตรายถูกฉีดเข้าไปในไฟล์ซึ่ง redirect ผู้ดูแลไปหน้าลับลวง (phishing page)
  • ร้าน Magento ถูก แบนโดยเครื่องมือค้นหา
  • หากคุณใช้โฮสติ้งของบุคคลที่สาม และข้อความ 'Your account has been suspended!' ปรากฏ
ป้องกันการบุกแผงควบคุมผู้ดูแล Magento: สาเหตุ อาการ และวิธีแก้ไขที่มีประสิทธิภาพ

ไฟล์ที่มักติดเชื้อจากการบุกแผงควบคุมผู้ดูแล Magento

ก) config.php & env.php

Config.php และ Env.php เป็นไฟล์สำคัญของการติดตั้ง Magento เป็นส่วนหนึ่งของการปรับใช้ Magento 2 และประกอบด้วย shared config และ system-specific config สำหรับการติดตั้ง Magento 2 การปรับใช้ของ Magento แบ่งระหว่าง app/etc/config.php และ app/etc/env.php ไฟล์เหล่านี้พื้นฐานแล้วอำนวยความสะดวกในการเชื่อมต่อระหว่างระบบไฟล์และฐานข้อมูล env.php มีข้อมูลประจำตัวการเชื่อมต่อฐานข้อมูล นอกจากนี้ ยังสามารถใช้เพื่อ:

  • กำหนดคีย์ความปลอดภ (security keys)
  • ระบุ database prefix
  • ตั้งค่าภาษาเริ่มต้นสำหรับแผงควบคุมผู้ดูแล

app/etc/config.php เป็นไฟล์ที่สร้างอัตโนมัติ (auto-generated) ซึ่งเก็บรายการโมดูล ธีม และแพ็กเกจภาษาที่ติดตั้ง นอกจาก shared configuration settings ไฟล์นี้ไม่มีอยู่ใน Magento 2 repo/release เพราะมันถูกสร้างอัตโนมัติ

Magento 2

ตั้งแต่ Magento 2.2 ไฟล์ app/etc/config.php ไม่ได้เป็นรายการในไฟล์ .gitignore อีกต่อไป สิ่งนี้ทำเพื่ออำนวยความสะดวกในการพัฒนาซอฟต์แวร์ให้ดียิ่งขึ้น

อัปเดต: ส่วนนี้อัปเดตให้สอดคล้องกับ Magento DevDocs (https://devdocs.magento.com/guides/v2.3/config-guide/config/config-php.html) หลังจากได้รับความคิดเห็นจากผู้อ่าน

หลายครั้ง config.php ถูกติดเชื้อโค้ดอันตรายโดยแฮกเกอร์เพื่อขโมยข้อมูลประจำตัวผู้ใช้ นี่คือตัวอย่างมัลแวร์หนึ่งที่พบ:

ป้องกันการบุกแผงควบคุมผู้ดูแล Magento: สาเหตุ อาการ และวิธีแก้ไขที่มีประสิทธิภาพ

บรรทัดแรกๆ ของโค้ดมีฟังก์ชันอันตรายชื่อ patch ซึ่งปรับเปลี่ยนเนื้อหาของไฟล์ ไฟล์ที่ถูกปรับเปลี่ยนถูกฉีดโค้ดอันตรายที่ได้จากแหล่งภายนอก (Pastebin) ส่งผลกระทบต่อไฟล์การชำระเงินและผู้ใช้ทั้งหมด เช่น:

/app/code/core/Mage/Payment/Model/Method/Cc.php /app/code/core/Mage/Payment/Model/Method/Abstract.php /app/code/core/Mage/Admin/Model/Session.php /app/code/core/Mage/Admin/Model/Config.php

นอกจากนี้ มันใช้ base64 encoding เพื่อหลบหลีกการตรวจจับ นอกจากนี้ยังใช้เทคนิคฉลาดอื่นๆ เพื่อซ่อนตัว ตัวอย่างเช่น โค้ด $link_a = $link.'YTGgAnrv'; สามารถแปลได้เป็น $link_a = 'hxxp://pastebin[.]com/raw/YTGgAnrv'; นอกจากนี้ ข้อมูลล็อกอินผู้ดูแลและรายละเอียดบัตรเครดิตที่ถูกขโมยถูกส่งไปยัง 2 โดเมนคือ:

hxxp://magento.ontools[.]net/update hxxp://www.bgsvetlina[.[com/post.php

มัลแวร์ยังใช้ "error_reporting(0);" ซึ่งจะปิดการรายงานข้อผิดพลาดที่อาจเปิดเผยการติดเชื้อบนร้าน Magento ดังนั้น มัลแวร์นี้สามารถทำได้ทั้งการขโมยบัตรเครดิต (CC stealing) และการบุกพื้นที่ผู้ดูแล Magento (Magento admin area hack)

ข) Index.php

Index.php เป็นหน้าแรก (landing page) ของร้าน Magento ดังนั้น โจมตีใช้มันสำหรับการโจมตีต่างๆ เช่น การบิดเบือนร้าน (defacing) หรือบางครั้ง ransomware อาจเข้ารหัสเนื้อหาไฟล์ทั้งหมด ทิ้งแค่ index.php พร้อมคำขอค่าไถ่ นอกจากนี้ อัปเดตอาจก่อให้เกิดปัญหากับไฟล์ index.php บางผู้ดูแลเว็บเพียงแค่เปลี่ยนชื่อไฟล์ index เป็น index.php.old ขณะอัปเดตระบบ ไฟล์ดังกล่าวมีข้อมูลสำคัญและอาจถูกค้นพบภายหลังโดยโจมตีที่ใช้สแกนเนอร์อัตโนมัติ

ค) .htaccess

การเปลี่ยนแปลงการตั้งค่าของ Magento ต่อไดเรกทอรี สามารถทำได้โดยใช้ไฟล์ .htaccess มันอนุญาตให้ผู้ใช้ปรับเปลี่ยนการตั้งค่าหลักที่กำหนดใน httpd.conf/apache.conf คำแนะนำในไฟล์ .htaccess จะถูกนำไปใช้กับโฟลเดอร์และซับโฟลเดอร์ทั้งหมดในไดเรกทอรีที่ไฟล์นี้อยู่ นอกจากนี้ .htaccess ช่วยปรับเปลี่ยนวิธีการเข้าถึงเว็บไซต์ อีกทั้ง .htaccess สามารถใช้เพื่อ:

  • บล็อกการเข้าถึงโฟลเดอร์บางส่วนของร้าน Magento
  • สร้าง Redirects สำหรับร้าน
  • บังคับ HTTPS
  • ลดทอนการโจมตีฉีดสคริปต์บางอย่างบนร้าน
  • บล็อก username enumeration โดย bots
  • บล็อก image hotlinking
  • บังคับดาวน์โหลดไฟล์อัตโนมัติจากร้าน

เมื่อไฟล์อันทรงพลังนี้ถูกบุก มันสามารถถูกใช้โดยโจมตีเพื่อบริการสแปม ไฟล์ .htaccess สามารถฉีดโค้ดอันตรายเพื่อ redirect ผู้ใช้ เพื่ออธิบายเพิ่มเติม ลายเซ็นโค้ดอันตรายหนึ่งแสดงด้านล่าง:

RewriteEngine On RewriteOptions inherit RewriteCond %{HTTP_REFERER} .*ask.com.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*google.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*search.yahoo*$ [NC] RewriteRule .* https://PhishingDomain.tld/phish.php?t=3 [R,L]

โค้ดอันตรายในบรรทัดสุดท้าย redirect traffic ผู้ใช้จากเว็บไซต์ ผู้ใช้ถูก redirect ไป https://PhishingDomain.tld จากนั้นพยายามโหลดสคริปต์ phish.php สคริปต์นี้อาจดูเหมือนแผงควบคุมผู้ดูแลต้นฉบับ ผู้ใช้ที่ไม่ได้ตั้งใจอาจส่งมอบข้อมูลประจำตัวให้โจมตี ซึ่งนำไปสู่ Magento admin area hack

การโจมตีทั่วไปของการบุกแผงควบคุมผู้ดูแล Magento

Magento ได้ปล่อยชุดอัปเดตสำคัญชื่อ SUPEE-10975 เมื่อวันที่ 28 พฤศจิกายน 2018 ชุดนี้มีอัปเดตความปลอดภสำคัญเกี่ยวกับช่องโหว่ที่อาจนำไปสู่การถูกบุกของร้าน Magento บางการโจมตีทั่วไปคือ:

1) Magento Authentication Brute Force

การโจมตี Magento authentication brute force อนุญาตให้โจมตีลองรหัสผ่านหลายครั้งจนพบรหัสที่ถูกต้อง ช่องโหว่หนึ่งชื่อ PRODSECBUG-1589 ถูกค้นพบ ส่งผลต่อ Magento Open Source ก่อน 1.9.4.0 และ Magento Commerce ก่อน 1.14.4.0 ด้วยการใช้ประโยชน์จากนี้ โจมตีสามารถ brute force requests ไปยัง RSS nodes บางโหนดต้องการการตรวจสอบสิทธิ์ผู้ดูแล ดังนั้น โจมตีจึงสามารถเดารหัสผ่านผู้ดูแลได้ ช่องโหว่รุนแรงมากจนได้คะแนน 9 ช่องโหว่นี้สามารถบุกแผงควบคุมผู้ดูแล Magento ได้

2) Magento Remote Code Execution

ช่องโหว่ RCE อนุญาตให้โจมตีรันโค้ดที่ไม่ได้รับการตรวจสอบบนร้าน Magento Magento Community Edition และ Enterprise Edition ก่อน 2.0.6 เปราะบางต่อบั๊ก RCE ช่องโหว่นี้อนุญาตให้โจมตีระยะไกลดำเนินการ PHP object injection attacks ซึ่งจะอนุญาตให้รัน PHP code ทางสุ่มผ่าน serialized shopping cart data ที่สร้างขึ้น Exploit สำหรับบั๊งี้ได้ถูกเผยแพร่และมีโมดูล Metasploit ให้ใช้ ช่องโหว่ RCE อีกอย่างชื่อ PRODSECBUG-2159 ถูกค้นพบใน Magento Open Source ก่อน 1.9.4.0, และ Magento Commerce ก่อน 1.14.4.0 และ Magento 2.1 ก่อน 2.1.16, Magento 2.2 ก่อน 2.2.7 มี CVSSv3 Severity score 8.5 นอกจากนี้ อัปเดตความปลอดภ SUPEE-10975 มีอัปเดตความปลอดภหลายอย่างเกี่ยวกับ RCE บางอย่างง่ายต่อการใช้ประโยชน์อย่างการอัปโหลดไฟล์ขณะแนบวิดีโอ (PRODSECBUG-2156)

3) Magento Cross-Site Scripting

ช่องโหว่ XSS เป็นหนึ่งในช่องโหว่ที่พบบ่อยที่สุดบนเว็บที่ส่งผลต่อร้าน Magento ช่องโหว่ XSS หนึ่งได้ชื่อว่า ODSECBUG-2053 ส่งผลต่อ Magento Open Source ก่อน 1.9.4.0, และ Magento Commerce ก่อน 1.14.4.0, Magento 2.1 ก่อน 2.1.16, Magento 2.2 ก่อน 2.2.7 เวอร์ชันเหล่านี้ เปราะบางต่อการโจมตี XSS ผ่าน Newsletter template การโจมตี XSS อาจอนุญาตให้โจมตีหลอกล่อผู้ดูแลเปิดเผยข้อมูลล็อกอินผ่าน phishing javascript นำไปสู่ Magento admin hack

4) Magento Cross-Site Request Forgery

การโจมตี Magento CSRF หลอกล่อผู้ใช้ให้รันคำขอที่ปลอมบนเว็บแอปที่พวกเขาใช้ อย่างไรก็ตาม ควรทราบว่าโจมตีสามารถรันคำขอได้อย่างเดียว ไม่มีทางให้โจมตีเห็น response หมายถึง ไม่มีการขโมยข้อมูล ช่องโหว่ CSRF หลายอย่างถูกค้นพบใน Magento ชื่อ PRODSECBUG-2125, PRODSECBUG-2088, และ PRODSECBUG-2140 สามารถหลอกล่อผู้ใช้ให้ลบ:

  • ทุกบล็อกพร้อมกัน
  • กลุ่มลูกค้าต่างๆ ของร้าน Magento ผ่านสิทธิ์ที่เพิ่มขึ้น
  • Sitemap ของร้าน Magento

ต้องการความช่วยเหลือจากผู้เชี่ยวชาญทำความสะอาดเว็บไซต์ Magento ที่ถูกแฮก? ส่งข้อความผ่านแชทวิดเจ็ต เราจะช่วยคุณทันที แก้ไข Magento Admin Hack ตอนนี้

5) Magento Admin Hack: การทำความสะอาดไฟล์

ขั้นแรก เพื่อรักษาความปลอดภแผงควบคุมผู้ดูแล Magento ให้เปลี่ยนรหัสผ่านเป็นรหัสที่ปลอดภ สามารถทำได้สำหรับ Magento 1 และ 2 ด้วยคำสั่ง SQL ต่อไปนี้ update users set pass = concat(‘ZZZ’, sha(concat(pass, md5(rand()))));

สำหรับ Magento 1 และ 2 ตอนนี้ ตรวจสอบโค้ดอันตรายภายในไฟล์ที่ติดเชื้อจากการบุกแผงควบคุมผู้ดูแล Magento บางไฟล์ทั่วไปคือ:

Index.php .htaccess config.php Cron Jobs

ภายในไฟล์เหล่านี้ พยายามหาโค้ดอันตรายและคอมเมนต์ไว้เพื่อลบภายหลัง นอกจากนี้ ค้นหาโค้ดอันตรายที่เข้ารหัส Base64 คำสั่งง่ายๆ สามารถทำได้

find . -name "*.php" -exec grep "base64"'{}'; -print &> hiddencode.txt

โค้ดสนิปเพทนี้จะสแกนหาโค้ดที่เข้ารหัส base64 และบันทึกไว้ใน hiddencode.txt ใช้ เครื่องมือออนไลน์ สำหรับการวิเคราะห์โค้ดนี้ต่อไป เครื่องมืออย่าง phpMyAdmin ช่วยได้มากในการค้นหาไฟล์ที่ติดเชื้อจากการบุกแผงควบคุมผู้ดูแล Magento หลายไฟล์พร้อมกัน ค้นหาโค้ดอันตรายด้วย phpMyAdmin ตามภาพด้านล่าง

ป้องกันการบุกแผงควบคุมผู้ดูแล Magento: สาเหตุ อาการ และวิธีแก้ไขที่มีประสิทธิภาพ

การรักษาความปลอดภแผงควบคุมผู้ดูแล Magento

1) อัปเดตและสำรองข้อมูล

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

ป้องกันการบุกแผงควบคุมผู้ดูแล Magento: สาเหตุ อาการ และวิธีแก้ไขที่มีประสิทธิภาพ

2) ใช้ HTTPS

สำคัญที่จะต้องเข้ารหัสการแลกเปลี่ยนข้อมูลระหว่างลูกค้าและร้าน Magento ดังนั้น ใช้มาตรฐาน SSL เพื่อปกป้องธุรกรรมออนไลน์ของลูกค้า สำหรับ Magento 1 สามารถทำได้ 3 ขั้นตอนง่ายๆ:

  1. ไปที่ Admin Panel > System > Configuration > General > Web > Secure.
  2. เปลี่ยนการตั้งค่า Base_url จาก "http" เป็น "https"
  3. เปิดใช้งาน secure URLs ใน Frontend และ Admin
ป้องกันการบุกแผงควบคุมผู้ดูแล Magento: สาเหตุ อาการ และวิธีแก้ไขที่มีประสิทธิภาพ

สำหรับ Magento 2 ไปที่ Stores > Settings > Configuration > Web > General, ตามภาพด้านล่าง

ป้องกันการบุกแผงควบคุมผู้ดูแล Magento: สาเหตุ อาการ และวิธีแก้ไขที่มีประสิทธิภาพ

3) สุ่ม Default Admin URL

ถ้าบันทึก (logs) แสดงการโจมตี brute force บนแผงควบคุมผู้ดูแล Magento บ่อยๆ วิธีแก้ที่ดีที่สุดคือสุ่ม URL เปลี่ยนเป็น URL ที่คุณเลือกและหลีกเลี่ยงค่าเริ่มต้น สามารถเปลี่ยนใน Magento 1 โดยไปที่:  Admin > Stores > Configuration > Advanced > Admin

ป้องกันการบุกแผงควบคุมผู้ดูแล Magento: สาเหตุ อาการ และวิธีแก้ไขที่มีประสิทธิภาพ

สำหรับ Magento 2 ขั้นตอนเดียวกันใช้ได้ ไปที่ Stores > Configuration > Advanced. ดูภาพด้านล่างเพื่อความชัดเจน

ป้องกันการบุกแผงควบคุมผู้ดูแล Magento: สาเหตุ อาการ และวิธีแก้ไขที่มีประสิทธิภาพ

4) ใช้ Two Factor Authentication (2FA)

Two-factor authentication เพิ่มชั้นความปลอดภเพิ่มเติมให้แผงควบคุมผู้ดูแล Magento มันพื้นฐานมาจากแอปพลิเคชัน Google Authentication ตอนแรก ผู้ดูแลต้องสแกน QR code ซึ่งจะสร้างตัวเลขสุ่ม 6 หลัก Timeout คือ 30 วินาที ดังนั้น แผงควบคุมผู้ดูแล Magento จึงเข้าถึงได้ก็ต่อเมื่อใส่ verification key พร้อมกับข้อมูลล็อกอิน อย่างไรก็ตาม คุณสมบัตินี้ไม่มีใน Magento โดยค่าเริ่มต้น และคุณต้องซื้อปลั๊กอินของบุคคลที่สามเพื่อใช้งาน ปลั๊กอินเหล่านี้ทำงานได้กับ Magento 1 และ Magento 2 ทั้งคู่

5) จำกัดการเข้าถึง

แผงควบคุมผู้ดูแลไม่ได้ตั้งใจให้ผู้อื่นเข้าถึงนอกจากผู้ดูแล ดังนั้น การอนุญาตให้เฉพาะ IP บาง IP เข้าถึงได้จึงเป็นการตัดสินใจที่ฉลาด สามารถทำได้ด้วยไฟล์ .htaccess ใน Magento 1 และ 2 ทั้งคู่ เพื่ออนุญาตเฉพาะ IP ที่คุณเลือก ให้เพิ่มโค้ดต่อไปนี้ลงในไฟล์ .htaccess

order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx

6) ใช้โซลูชันความปลอดภ

แม้หลังทำความสะอาดและกู้คืนเว็บไซต์ การบุกแผงควบคุมผู้ดูแล Magento อาจเกิดซ้ำ เหตุผลอาจเป็นประตูหลังที่โจมตีทิ้งไว้ หรือเพียงแค่ช่องโหว่ที่ยังไม่ได้แพตช์ เพื่อหลีกเลี่ยงสถานการณ์ดังกล่าว ขอแนะนำอย่างยิ่งให้ใช้ WAF หรือโซลูชันความปลอดภบางอย่าง งานหลักคือการหาไฟร์วอลล์ที่เหมาะสมสำหรับร้าน Magento ของคุณ ปัจจัยหลายอย่างเช่น scalability, ease of use, ทรัพยากรที่มี ฯลฯ ต้องพิจารณาก่อนซื้อ Astra Website Protection แนะนำอย่างยิ่งเพราะตอบสนองความต้องการทั้งหมดของคุณได้ง่าย ไฟร์วอลล์ Astra มี scalability สูง อนุญาตให้คุณรักษาความปลอดภบล็อกส่วนตัวหรือร้านใหญ่พร้อมกัน นอกจากนี้ การใช้ Astra ไม่ต้องการความรู้ความปลอดภที่ซับซ้อน เพราะทุกอย่างจัดการได้ผ่านแดชบอร์ดที่เรียบง่าย

นอกจากไฟร์วอลล์แล้ว Astra ยังเสนอการตรวจสอบความปลอดภครบวงจรและ pentesting สิ่งนี้ให้คุณได้เปรียบกว่าโจมตีในการค้นหาช่องโหว่ภายในร้าน Magento ของคุณ