Joomla เป็น CMS ที่แข็งแกร่งมาก พร้อมการสนับสนุนจากชุมชนที่ยิ่งใหญ่ นอกจากนี้ ยังปรับแต่งได้ยืดหยุ่นมาก เนื่องจากไซต์ที่รันบน Joomla หลากหลายตั้งแต่หน้าส่วนตัวไปจนถึงไซต์รัฐบาล ความนิยมที่แพร่หลายสามารถอธิบายได้ด้วยการรองรับภาษามากกว่า 90+ อย่างไรก็ตาม การเป็นที่นิยมก็ทำให้มันเป็นเป้าหมายของสแปมเมอร์และฮักเกอร์ บ่อยครั้งผู้ใช้ร้องเรียนบนฟอรัมชุมชน ว่า Joomla ของพวกเขาถูกแฮกส่งสแปม การโจมตีเหล่านี้พบได้บ่อย เนื่องจากจำนวนผู้ใช้ที่มาก บ่อยครั้ง อีเมลสแปมประกอบด้วยโฆษณายา ขายไวอากร้า ตามหนังสือ Joomla Web Security
สัญญาณว่า Joomla ถูกแฮกส่งสแปม
การค้นพบการโจมตีอีเมลสแปม มักใช้เวลาจากไม่กี่ชั่วโมงถึงหลายวัน ความล่าช้าเกิดจาก อีเมลใช้เวลากระจายตัว ดังนั้น จึงตรวจพบเมื่อผู้ใช้แจ้งให้คุณทราบเกี่ยวกับอีเมลสแปม อย่างไรก็ตาม ในบางกรณี แอดมินเว็บได้รับการแจ้งเตือน หากเขา/เธอ ใช้บริการออนไลน์ตรวจสอบสแปมก่อนส่ง บริการเหล่านี้อาจเปิดเผยว่าโดเมนถูก Blacklist สำหรับสแปม แม้โซลูชันความปลอดภัยออนไลน์บางอย่าง สามารถแจ้งเตือนผู้ใช้ล่วงหน้าได้ดีเกี่ยวกับภัยคุกคามดังกล่าว
ในบางกรณ่ พบว่า การโจมตีสแปมอาจทำให้แบนด์วิดท์ (Bandwidth) ติดขัด หลังจากนั้น ISP ของคุณอาจแจ้งเตือนเกี่ยวกับการไหลออกของอีเมลสแปม อินเทอร์เน็ตมีทรัพยากรมากมาย ที่ดูแลรายชื่อ Blacklist สแปมออนไลน์ หาก Joomla ของคุณถูกแฮกและส่งสแปม IP เซิร์ฟเวอร์ของคุณ จะถูก Blacklist หนึ่งบริการ Blacklist คุณ มันจะแพร่กระจายผ่าน Blacklist ทั้งหมด หลังจากนั้น เครื่องมือค้นหาเช่น Google จะ Blacklist ไซต์ของคุณสำหรับสแปม ดังนั้น เมื่อผู้ใช้เข้าชม พวกเขาอาจได้รับหน้าประมาณนี้
หลังจากสังเกตการกระจายอีเมลสแปมขนาดใหญ่จากไซต์ Google ได้จัดรายการเป็นหน้าโจมตี หน้านี้เตือนผู้ใช้อย่าเดินทางต่อบนไซต์ หากไซต์ของคุณแสดงอาการเหล่านี้ อาจเป็นเพราะ Joomla ถูกแฮกส่งสแปม!
ตัวอย่าง Joomla ถูกแฮกส่งสแปม
ปัญหา Joomla ถูกแฮกส่งสแปม ค่อนข้างแพร่หลาย ผู้ใช้หลายคนร้องเรียนเกี่ยวกับปัญหานี้ในฟอรัมชุมชน บางคนแม้แต่ติดเชื้อซ้ำ! นี่คือตัวอย่างไม่กี่อย่างจากฟอรัมชุมชน Joomla
Joomla ถูกแฮกส่งสแปม: สาเหตุ
SQL Injection
ฐานข้อมูล Joomla มักเป็นเป้าหมาย เนื่องจาก SQL Injection พบได้ทั่วไปบนเว็บ จึงถูกนำเข้าเป็นหนึ่งใน OWASP Top 10 vulnerabilities เมื่อโจมตีได้ยึดฐานข้อมูล คำสั่ง SQL สามารถใช้ระบุตารางที่มี อีเมลสมัครสมาชิก (signup email) หลังจากได้รายชื่อ โจมตีสามารถใช้สแปมผู้ใช้จำนวนมากได้ ดังนั้น จึงสำคัญมากที่จะรักษาความปลอดภัยฐานข้อมูล
ตัวอย่างเช่น Joomla มีส่วนขยายชื่อ Jimtawl ใช้สำหรับรันสถานีวิทยุบนเว็บ อย่างไรก็ตาม ส่วนประกอบนี้ถูกพบว่ามีช่องโหว่ SQLi พารามิเตอร์ที่เปราะบางคือ id URL เต็มมีลักษณะดังนี้:
ส่วนประกอบนี้อนุญาตให้ User input ที่ไม่ได้ Sanitize นำไปสู่ SQLi ที่นี่ ด้วยการผนวก SQL statements หลัง id โจมตีสามารถอ่านเนื้อหาฐานข้อมูลได้ ตัวอย่างเช่น เพื่อเปิดเผยเวอร์ชันฐานข้อมูลและผู้ใช้ คิวรีต่อไปนี้สามารถรันได้:
' AND EXTRACTVALUE(66,CONCAT(0x5c,(SELECT (ELT(66=66,1))),CONCAT_WS(0x203a20,USER(),DATABASE(),VERSION())))-- VerAyari
เครื่องหมายอพอสโทรฟีที่นี่ จบการป้อนข้อมูลของคำสั่งก่อนหน้า หลังจากนั้น คลอจ OR รัน SQL statement ถัดไป คำสั่งนี้ดึง User และ Database version Exploit สำหรับเรื่องนี้ได้ถูกปล่อยออกมาแล้ว นอกจากนี้ โจมตีสามารถใช้เครื่องมืออัตโนมัติเพื่อเร่งการโจมตี จากที่นี่ โจมตีสามารถค้นหาอีเมลทั้งหมดที่จัดเก็บในฐานข้อมูล
ในบางกรณี ที่ไซต์มีช่องโหว่า Stack Based SQLi โจมตีสามารถรันคำสั่ง (Commands) ได้ คำสั่งเหล่านี้รันผ่าน Database service ที่รันบน Local server การใช้คำสั่งเหล่านี้ ปัญหา Joomla ถูกแฮกส่งสแปม อาจเกิดได้ ดังนั้น สแปมอาจมาจาก Local SMTP server เอง นอกจาก Joomla ถูกแฮกส่งสแปม โจมตียังสามารถใช้ข้อมูลฐานข้อมูล โจมตีเว็บไซต์ในลักษณะอื่นได้!
ข้อมูลเข้าสู่ระบบอ่อนแอ (Weak Credentials)
เป็นไปได้ค่อนข้างว่า โจมตีอาจ Brute Force การเข้าสู่ระบบ SMTP server ของคุณ การใช้รหัสผ่านเริ่มต้นหรืออ่อนแอ ทำให้ไซต์เปราะบางต่อการโจมตีแบบนี้ เมื่อ SMTP server อยู่ภายใต้การควบคุมของโจมตี อาจนำไปสู่ Joomla ถูกแฮกส่งสแปม
พอร์ตเปิด (Open Ports)
พอร์ตเปิดอาจมอบเว็บไซต์ให้โจมตี SMTP ใช้ Port 25 เริ่มต้น อย่างไรก็ตาม หลีกเลี่ยงการใช้พอร์ตนี้ เนื่องจากมักเป็นเป้าหมายของสแปมเมอร์ ในบางกรณี ISP เองบล็อกพอร์ตนี้ Port 587 เป็นทางเลือกที่ดีกว่า เนื่องจากพอร์ตนี้รองรับ TLS Encryption Port 25 เป็นเป้าหมายหลักของมัลแวร์และสแปม โจมตีสามารถบุกผ่านพอร์ตเปิด นำไปสู่ Joomla ถูกแฮกส่งสแปม การเปิดเผย Port 25 สู่อินเทอร์เน็ท อาจนำไปสู่ Inbound spam จำนวนมาก!
การอัปโหลดสคริปต์ (Scripts Uploads)
โดยทั่วไป โจมตีใช้ประโยชน์จากเซิร์ฟเวอร์ด้วยเทคนิคที่ทราบข้างต้น หลังจากนั้น เพื่อเพิ่มประสิทธิภาพ Joomla ถูกแฮกส่งสแปม ใช้ Automation สคริปต์ PHP สามารถทำภารกิจนี้ได้อย่างมีประสิทธิภาพ สคริปต์เหล่านี้ใช้สร้างการเชื่อมต่อไปยัง SMTP server หรือ MX servers ในบางกรณี สคริปต์ทั่วไปจะมีโค้ดอย่างนี้:
ชัดเจนว่า เทคนิค Obfuscation โค้ด ถูกใช้ อย่างไรก็ตาม เมื่อถอดรหัสสคริปต์นี้ จะแปลได้ประมาณว่า
เห็นจากโค้ด สคริปต์ใช้คอนสตรัคต์ eval() คำสั่งนี้ประมวลผล Input string ให้เป็นโค้ด PHP แนวทางเขียนโค้ดปลอดภัย แนะนำให้หลีกเลี่ยงการใช้ eval() เนื่องจากช่วยให้โจมตีรันโค้ด arbitrary บนเซิร์ฟเวอร์ได้ นอกจากนี้ eval() สามารถใช้เก็บโค้ดในฐานข้อมูล โค้ดนี้ถูกรันภายหลัง และทำให้ Joomla ถูกแฮกส่งสแปม สคริปต์เหล่านี้สูบสแปมมวลชนได้ 2 วิธี:
- MTA Queue Spam: Message Transfer Agent (MTA) รับผิดชอบส่งเมลจาก Joomla ไซต์ไปยังผู้รับ บางครั้ง สคริปต์เอ็กซ์พลอยต์ ฉีดอีเมลสแปมจำนวนมากเข้าใน MTA Queues นี่อาจนำไปสู่ข้อความเตือนอย่าง “MTA Queue is too large!” หลังจากถึงขีดจำกัด อีเมลอาจถูกบล็อกโดย ISPs ด้วย ดังนั้น สคริปต์บางครั้งทำ Direct-to-MX connection
- Direct to MX Spam: Direct to MX อนุญาตให้เรา繞过 ISPs เป็นตัวกลาง Direct to MX เป็นบริการที่ถูกต้อง อนุญาตส่งเมลโดยตรงไปยัง Mail eXchange server ของผู้รับ นี่หลีกเลี่ยงอีเมลไม่ให้ไปถึง SMTP server ของ ISPs สคริปต์ใช้ประโยชน์จากฟีเจอร์นี้ ฉีดสแปมโดยตรงไปยังผู้รับ ทำเพื่อหลีกเลี่ยงการตรวจจับใน MTA queues
การแบ่งปัน Webspace (Sharing Webspace)
โฮสติ้งราคาถูกบ่อยครั้งมีค่าใช้จ่ายสูง การติดเชื้อแพร่กระจายเร็ว เมื่อหลายไซต์แชร์พื้นที่เดียวกัน ดังนั้น Joomla ถูกแฮกส่งสแปม อาจเกิดจากการติดเชื้อจากไซต์อื่น นี่ทำให้ยากที่จะตรวจจับว่า ไซต์ไหนกำลังสร้างสแปม!
ต้องการความช่วยเหลือมืออาชีพในการรักษาความปลอดภัยเซิร์ฟเวอร์หลัง Joomla ถูกแฮกส่งสแปม? ส่งข้อความผ่านแชทวิดเจ็ต เราจะยินดีช่วยคุณ แก้ไขสแปมอีเมล Joomla ของฉันตอนนี้
การรับอีเมลสแปม (Receiving Spam Emails)
Registration Spam (สแปมสมัครสมาชิก)
บ่อยครั้งสถานการณ์ Joomla ถูกแฮกส่งสแปม ถูกสังเกต แต่บางครั้ง ไซต์เองกลายเป็นเป้าหมายของสแปม จำนวนมากของ Fake signups อาจถูกมุ่งเป้าไปยังไซต์ของคุณ Joomla เคยมีช่องโหว่ที่ผู้ใช้สามารถส่งอีเมลได้ แม้ฟอร์มจะถูกปิดใช้งาน เกิดจาก ส่วนประกอบที่เปราะบางชื่อ com_contact ช่องโหว่นี้ได้ชื่อว่า CVE-2018-17859 ด้วยการเอ็กซ์พลอยต์นี้ โจมตีสามารถส่งอีเมลสแปมจำนวนมากได้ ในสถานการณ์นั้น หากไม่มีการตรวจสอบและถ่วงดุลที่เหมาะสม บอทสามารถทำลายล้างได้ ตารางสมัครสมาชิกเต็มไปด้วยอัตโนมัติ ในที่สุด จะยากที่จะแยกแยะว่าอีเมลไหนเป็นการสมัครจริง และไหนเป็นบอท!
นอกจากนี้ บางไซต์เปิดใช้งานการแจ้งเตือนเกี่ยวกับการสมัครสมาชิกใหม่แต่ละครั้ง ในกรณีนั้น สแปมสมัครสมาชิก อาจสร้างการแจ้งเตือนหลายครั้ง หากการแจ้งเตือนเหล่านี้ถึงขีดจำกัด บริการให้บริการจะ Flag ว่าเป็นสแปม ด้วยเหตุนี้ บล็อกบัญชีของคุณ และป้องกันการแจ้งเตือนสมัครสมาชิกใหม่ นอกจากสมัครสมาชิก การแจ้งเตือนอาจสร้างขึ้นเมื่อไซต์อยู่ภายใต้การโจมตี ดังนั้น เมื่อการแจ้งเตือนเกินขีดจำกัด ขั้นตอนเดียวกันจะถูกปฏิบัติ
Non-Delivery Reports Spam (สแปมรายงานส่งไม่สำเร็จ)
โปรโตคอล SMTP ออกแบบมาแบบที่ ฟิลด์ “From” และ “To” สามารถจัดการได้โดยใครก็ตาม แม้โดยผู้ใช้ทั่วไป สแปมเมอร์ใช้ประโยชน์จากนี้อย่างสม่ำเสมอ โดยวางโดเมนของคุณในฟิลด์ “From” ทำได้ดังนี้:
- Step 1: บอทสร้างรายการอีเมลปลอม (อีเมลที่ไม่มีอยู่จริง)
- Step 2: อีเมลแอดมินของคุณ admin@wsxdn.com ถูกใช้เป็น Sender ในตัวเลือก “From“
- Step 3: บอทส่งอีเมลไปยังบัญชีที่ไม่มีอยู่
- Step 4: การส่งอีเมลล้มเหลว
- Step 5: อีเมลรายงานการส่งไม่สำเร็จ (Non-delivery reports) กลับมาที่บัญชีของคุณ (admin@wsxdn.com) ทำให้เกิดการไหลเข้าของอีเมลสแปมจำนวนมาก
วิธีหยุดอีเมลสแปมใน Joomla: วิธีแก้ไข
แก้ไข Inbound Spam (สแปมเข้า)
Sender Policy Framework (SPF)
โปรโตคอล SMTP มีข้อจำกัดของตัวเอง เนื่องจากไม่สามารถหยุดใครบางคนที่ใช้โดเมนของคุณในตัวเลือก “From” ได้ อย่างไรก็ตาม มีการแก้ไขบางอย่าง Mail servers สามารถแจ้งเตือนได้ เกี่ยวกับ IP ไหนที่ได้รับอนุญาตให้ส่งเมลแทนโดเมนของคุณ ดังนั้น SPF เป็นประเภทหนึ่งของ DNS TXT Record ที่ทำภารกิจนี้ ขั้นตอนต่อไปนี้สามารถนำไปใช้เพื่อ Implement SPF:
- ก่อนอื่น ไปที่หน้า DNS Management
- จากนั้นไปที่ส่วน Records คลิก Add และเลือก TXT จากเมนู
- ตอนนี้กรอกฟิลด์ต่อไปนี้:
- Host: อาร์กิวเมนต์นี้ต้องการ Hostname ตัวอย่าง พิมพ์ @ เพื่อ Map record โดยตรงไปยังชื่อโดเมนของคุณ
- TXT Value – ใส่ค่าที่คุณต้องการกำหนด
- สุดท้าย คลิก Save
ในที่สุด จะมีลักษณะประมาณ YourDomain.com. IN TXT “v=spf1 mx ip4:123.123.123.123 -all”
นี่หมายความว่า YourDomain.com มีแหล่งอีเมลที่ถูกต้องเพียงสองแห่ง หนึ่งคือ Mail Exchange servers MX servers กำหนดโดเมนที่เป็นผู้รับอีเมลของคุณ และอีกหนึ่งคือ เซิร์ฟเวอร์ที่ 123.123.123.123 อีเมลอื่นๆ ทั้งหมด จะถูกจัดเป็นสแปม อย่างไรก็ตาม ค่าสังเกตที่นี่คือ เหมือน robots.txt นี่เป็น Convention (ข้อตกลง) Mail servers ส่วนใหญ่อาจปฏิบัติตาม ในขณะที่บางตัวอาจไม่!
ปรึกษาผู้เชี่ยวชาญด้านความปลอดภัย Astra ตอนนี้ สำหรับการทำความสะอาดมัลแวร์ทันที Firewall อันทรงพลังของเรารักษาความปลอดภัยเว็บไซต์ของคุณจาก XSS, LFI, RFI, SQL Injection, Bad bots, Automated Vulnerability Scanners และ 80+ ภัยคุกคามด้านความปลอดภัย รักษาความปลอดภัย Joomla ของฉันตอนนี้
แก้ไข Outbound Spam (สแปมออก)
ระบุและลบสคริปต์สแปม (Identify and Remove Spam Scripts)
Step 1: ก่อนอื่น จำเป็นต้องระบุสคริปต์ที่กำลังสร้างสแปม ดังนั้น Login เข้า Mail server ด้วยสิทธิ์แอดมิน (SUDO)
Step 2: เพื่อจับอีเมลออก (Outbound emails) โดยสคริปต์ ให้แน่ใจว่าไฟล์ PHP.ini ของคุณมีโค้ดต่อไปนี้ mail.add_x_header = On เมื่อทำสำเร็จแล้ว ดำเนินการตรวจสอบ Mail queue ของคุณ
Step 3: สามารถทำได้โดยคำสั่ง mailq คำสั่งนี้จะแสดงรายการอีเมลทั้งหมดใน Queue จากที่นี่ ให้บันทึก ID ของอีเมลที่คุณต้องการติดตามแหล่งที่มา
Step 4: ตอนนี้ คำสั่ง “grep” และ “postcat” จะช่วยได้ รันคำสั่งต่อไปนี้: postcat -q <ID obtained from mailq> | grep X-PHP-Originating-Script
Step 5: คำสั่งนี้จะให้ Output อย่าง, X-PHP-Originating-Script: 45:SPAMmailer.php ที่นี่ 45 คือ UID ของสคริปต์ SPAMmailer.php คำสั่งนี้ค้นพบสคริปต์ Joomla ถูกแฮกส่งสแปม สำเร็จ รวมถึง Local ID บนเซิร์ฟเวอร์ ลบสคริปต์และทำความสะอาดการติดตั้ง
อย่างไรก็ตาม ในกรณีของ Step 4 หากไม่ให้ Output อะไร แสดงว่าบัญชีอาจถูกบุกครอบครอง เปลี่ยนรหัสผ่านเป็นรหัสที่ปลอดภัย เพื่อป้องกัน Joomla ถูกแฮกส่งสแปม!
ข้อป้องกันอื่นๆ (Other Precautions)
- ทำความสะอาดและส่งไซต์ขอ Review (Review) หากถูก Blacklist โดย Google
- บล็อก Direct-to-MX เว้นแต่จะมีความจำเป็นอย่างยิ่ง
- หลีกเลี่ยงการใช้ Port 25 สำหรับ SMTP ทางเลือกที่ดีกว่าคือ Port 587
- พยายามใช้ Dedicated VPS Hosting เนื่องจากลดโอกาสการแพร่กระจายการติดเชื้อ Joomla ถูกแฮกส่งสแปม
- จัดการสิทธิ์ Read, Write, Execute ของโฟลเดอร์อย่างมีเหตุผล เนื่องจากสามารถป้องกันการรันโค้ดได้ แม้สคริปต์สแปมเมล์ถูกอัปโหลด
- ติดตั้งส่วนขยายที่น่าเชื่อถือ หลีกเลี่ยงการใช้ส่วนขยายที่ไม่รู้จักหรือ Null extensions
- จำกัดจำนวนครั้งการยืนยันตัวตนบน SMTP server สามารถป้องกัน Brute force attacks
- Update Update Update!
สรุป (Conclusion)
Joomla ถูกแฮกส่งสแปม สามารถส่งผลกระทบต่อชื่อเสียงของไซต์อย่างรุนแรง มาตรการป้องกันที่ดีที่สุดคือ ใช้โซลูชันความปลอดภัย มีโซลูชันความปลอดภัยจำนวนมาก พร้อม Firewall และ IDS พร้อมใช้งานออนไลน์วันนี้ โซลูชันความปลอดภัยอย่าง Astra มีความสามารถขยายได้สูง (Highly scalable) รองรับความต้องการของบล็อกส่วนตัว จนถึงธุรกิจขนาดใหญ่