WordPress เป็น CMS ที่ได้รับความนิยมสูงสุดในโลก แต่ด้วยความนิยมนี้เองทำให้ตกเป็นเป้าหมายของแฮกเกอร์อย่างต่อเนื่อง เมื่อเว็บของคุณติดมัลแวร์ ผลกระทบรุนแรงกว่าที่คิด ตั้งแต่ Google ขึ้นคำเตือน "เว็บนี้อาจเป็นอันตราย" ไปจนถึง Hosting ระงับบัญชีเพราะส่ง Spam อีเมลออกหลักพันฉบับต่อชั่วโมง บทความนี้จะพาคุณทำความเข้าใจตั้งแต่การตรวจสอบสัญญาณเตือน ไปจนถึงขั้นตอนล้างมัลแวร์อย่างละเอียดด้วยตัวเองบน Shared Hosting พร้อมวิธีป้องกันไม่ให้ติดซ้ำ

สัญญาณบ่งชี้ว่า WordPress ติดมัลแวร์

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

ถ้าพบสัญญาณใดสัญญาณหนึ่งข้างต้น ให้ดำเนินการตรวจสอบและล้างทันที การรอนานยิ่งทำให้ Google ลด Trust Score ของเว็บและใช้เวลาฟื้นฟูอันดับนานขึ้น

ประเภทมัลแวร์ที่พบบ่อยบน WordPress

การเข้าใจว่ามัลแวร์ที่ติดอยู่เป็นประเภทใดช่วยให้ค้นหาและล้างได้ตรงจุดมากขึ้น มัลแวร์บน WordPress แบ่งได้เป็นหลายประเภทหลัก:

ประเภทมัลแวร์ วิธีทำงาน สัญญาณที่เห็น ความอันตราย
Backdoor ฝังไว้เพื่อให้แฮกเกอร์กลับเข้ามาได้ทุกเมื่อ ไฟล์ PHP แปลกปลอม, ไฟล์ core ถูกแก้ไข สูงมาก — ล้างแล้วอาจกลับมาถ้าไม่เจอทุกไฟล์
SEO Spam แทรกลิงก์สแปมในเนื้อหาหรือสร้างหน้าแปลกๆ Google Index เห็นหน้าสแปม เจ้าของเว็บไม่เห็น กลาง — ทำลาย SEO ระยะยาว
Malicious Redirect Redirect ผู้เยี่ยมชมไปเว็บอันตราย ผู้เยี่ยมชมร้องเรียนถูกพาไปเว็บแปลก สูง — ทำลาย Reputation และ Google Ranking
Spam Mailer ใช้ Server ส่ง Email Spam จำนวนมาก Hosting ระงับบัญชี, CPU/RAM พุ่ง สูง — IP เข้า Blacklist ส่ง Email จริงไม่ได้
Phishing Page ฝังหน้าปลอมของธนาคารหรือบริการดังๆ Google Search Console แจ้ง Phishing สูงมาก — Google Blacklist ทันที
Cryptominer ขุด Cryptocurrency โดยใช้ CPU ของ Server CPU สูงตลอดเวลา เว็บช้ามาก กลาง-สูง — เปลืองทรัพยากร Hosting

เตรียมตัวก่อนล้างมัลแวร์ — ขั้นตอนสำคัญที่ต้องทำก่อน

ก่อนเริ่มล้างมัลแวร์ต้องเตรียมการให้พร้อมเพื่อไม่ให้สูญเสียข้อมูลและสามารถ Rollback ได้หากเกิดปัญหา:

1. สำรองข้อมูลทั้งหมดก่อน (แม้จะติดมัลแวร์)

การ Backup ก่อนล้างมีเหตุผลชัดเจน: ถ้าล้างแล้วเว็บพัง คุณยังมีไฟล์กลับมา Restore ได้ และ Backup มัลแวร์ไว้เพื่อวิเคราะห์หาต้นตอในภายหลัง ทำได้ผ่าน DirectAdmin File Manager หรือ FTP:

# Backup ทั้ง public_html ผ่าน DirectAdmin File Manager
# หรือใช้ CLI บน Server (ถ้า Hosting รองรับ SSH)
tar -czf backup-before-clean-$(date +%Y%m%d).tar.gz public_html/
mysqldump -u USER -p DATABASE_NAME > backup-db-$(date +%Y%m%d).sql

นอกจากนี้ให้ Backup ผ่าน DirectAdmin → Backup/Restore → Create Backup เพื่อมี Full Backup ไว้ด้วย

2. เปิด Maintenance Mode ชั่วคราว

สร้างไฟล์ .maintenance ใน root ของ WordPress เพื่อป้องกันผู้เยี่ยมชมรับ Malware Script ระหว่างล้าง:

<?php $upgrading = time(); ?>

บันทึกเป็น public_html/.maintenance — WordPress จะแสดงหน้า Maintenance อัตโนมัติ

3. เปลี่ยน Password ทั้งหมดทันที

ก่อนเริ่มล้าง ให้เปลี่ยน Password ดังต่อไปนี้ก่อน เพราะถ้าแฮกเกอร์ยังมี Credential อยู่ก็กลับมาได้เสมอ:

วิธีสแกนหามัลแวร์ด้วย Plugin (วิธีง่ายที่สุด)

ถ้ายังเข้า WordPress Admin ได้ ให้ใช้ Plugin ช่วยสแกนเพื่อประเมินความรุนแรงก่อน:

Wordfence Security (แนะนำสำหรับมือใหม่)

Wordfence เป็น Security Plugin ยอดนิยมที่สแกนไฟล์ทั้งหมดเทียบกับ WordPress Repository และฐานข้อมูลมัลแวร์ที่อัพเดตอยู่เสมอ:

# ติดตั้งผ่าน WordPress Admin
# Plugins → Add New → ค้นหา "Wordfence Security" → Install → Activate

# หลัง Activate
# Wordfence → Scan → Start New Scan
# รอผลสแกน (อาจใช้เวลา 5-30 นาทีขึ้นอยู่กับขนาดเว็บ)

Wordfence จะแสดงรายการไฟล์ที่น่าสงสัยพร้อมระดับความอันตราย (Critical/High/Medium/Low) และให้ตัวเลือก Repair หรือ Delete ทันที

MalCare Security

MalCare สแกนโดยไม่ใช้ทรัพยากร Server เพราะทำบน Cloud ของตัวเอง เหมาะกับ Shared Hosting ที่มีข้อจำกัดด้าน CPU ทำงานคล้ายกัน: ติดตั้ง Plugin → เชื่อมกับ Account ที่เว็บ malcare.com → Scan → ดูผล

ล้างมัลแวร์ด้วยมือผ่าน File Manager (วิธีละเอียดที่สุด)

เมื่อ Plugin ล้างไม่ได้หมด หรือเข้า WP Admin ไม่ได้เลย ต้องล้างด้วยมือผ่าน DirectAdmin File Manager หรือ FTP:

ขั้นตอนที่ 1: ตรวจไฟล์ WordPress Core

มัลแวร์มักแก้ไขไฟล์ Core ของ WordPress เช่น wp-settings.php, wp-load.php, wp-blog-header.php และไฟล์ใน wp-includes/ เพื่อฝัง Code อันตราย ให้ Download WordPress ตัวสะอาดจาก WordPress.org แล้วเทียบไฟล์:

# Download WordPress version ล่าสุด (เทียบกับ version ที่ติดตั้ง)
wget https://wordpress.org/wordpress-6.5.zip
unzip wordpress-6.5.zip

# เทียบไฟล์ด้วย diff (ถ้าทำบน Local)
diff -rq wordpress/ public_html/ --exclude="wp-config.php" \
  --exclude-dir="wp-content" --exclude-dir=".git"

# ไฟล์ที่ต่างกันโดยที่ไม่ควรต่าง = อาจถูกแก้ไขโดยมัลแวร์

ขั้นตอนที่ 2: หาไฟล์ PHP ที่มีโค้ดอันตราย

มัลแวร์มักใช้ฟังก์ชัน PHP บางตัวเพื่อซ่อน Code และ Execute คำสั่งอันตราย ค้นหาได้ด้วย:

# ค้นหาไฟล์ที่ใช้ฟังก์ชันอันตราย (ทำบน Server ถ้า SSH เข้าได้)
grep -rn "eval(base64_decode" public_html/ --include="*.php"
grep -rn "str_rot13\|gzinflate\|gzuncompress\|str_ireplace" public_html/ --include="*.php"
grep -rn "preg_replace.*\/e\b" public_html/ --include="*.php"
grep -rn "assert\s*(" public_html/ --include="*.php"
grep -rn "system\s*(\|exec\s*(\|shell_exec\s*(\|passthru\s*(" public_html/ --include="*.php"

# ค้นหาไฟล์ PHP ใน upload folder (ไม่ควรมีเลย)
find public_html/wp-content/uploads/ -name "*.php" -type f

ขั้นตอนที่ 3: ตรวจสอบ wp-config.php และ .htaccess

สองไฟล์นี้เป็นเป้าหมายยอดนิยม ตรวจ wp-config.php ว่ามีโค้ดที่ไม่ใช่ WordPress Standard หรือมีการ Require/Include ไฟล์แปลกปลอมหรือไม่ และตรวจ .htaccess ว่ามี Redirect Rule แปลกๆ:

# .htaccess ปกติของ WordPress มีแค่นี้
# ถ้ามีอะไรเพิ่มเติมนอกจากนี้ให้สงสัยทันที
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

# ตัวอย่างโค้ดอันตรายที่มักเจอใน .htaccess:
# RewriteCond %{HTTP_REFERER} .*google.* [OR]
# RewriteCond %{HTTP_REFERER} .*yahoo.*
# RewriteRule ^(.*)$ https://spam-site.com/ [R=301,L]

ขั้นตอนที่ 4: ล้างมัลแวร์ใน Theme และ Plugin

ลบ Theme ที่ไม่ได้ใช้งานออกทั้งหมด เพราะแฮกเกอร์มักฝัง Backdoor ใน Theme ที่ไม่ได้ Activate แต่ยังคงอยู่ใน Server สำหรับ Plugin ที่ไม่ได้ใช้ให้ลบออกเช่นกัน จากนั้น Reinstall Theme และ Plugin ที่ใช้งานอยู่โดยดาวน์โหลดจากแหล่งที่เชื่อถือได้ใหม่ทั้งหมด อย่า Restore จาก Backup ที่อาจติดมัลแวร์แล้ว

# ลบ Plugin ที่ไม่ใช้ผ่าน WP CLI (ถ้า Hosting รองรับ)
wp plugin list --status=inactive
wp plugin delete plugin-slug-1 plugin-slug-2

# Reinstall Core WordPress
wp core download --force

# Reinstall Plugin ที่ใช้งาน
wp plugin install woocommerce --force
wp plugin install contact-form-7 --force

ขั้นตอนที่ 5: ล้างฐานข้อมูล

มัลแวร์บางประเภทฝัง Code ใน Database เช่น ใน wp_options ตัว siteurl หรือ home ถูกเปลี่ยน หรือมี spam links ใน post_content ตรวจสอบได้ผ่าน phpMyAdmin:

-- ตรวจสอบ siteurl และ home ใน wp_options
SELECT option_name, option_value
FROM wp_options
WHERE option_name IN ('siteurl', 'home', 'admin_email');

-- หา JavaScript แปลกปลอมใน post_content
SELECT ID, post_title, LEFT(post_content, 200)
FROM wp_posts
WHERE post_content LIKE '%<script%'
  AND post_status = 'publish'
LIMIT 20;

-- หา Links ไปยังโดเมนแปลกปลอม
SELECT ID, post_title FROM wp_posts
WHERE post_content LIKE '%spam-domain.com%'
  OR post_content LIKE '%eval(base64%';

เคล็ดลับสำคัญ: หลังล้างมัลแวร์เสร็จทุกขั้นตอนแล้ว ให้สร้าง Secret Keys ใหม่ทั้งหมดใน wp-config.php โดยไปที่ https://api.wordpress.org/secret-key/1.1/salt/ แล้ว Copy ค่าใหม่มาแทน Keys เดิม วิธีนี้จะ Force Logout Session ทั้งหมด รวมถึงของแฮกเกอร์ที่อาจยังล็อกอินอยู่ด้วย

ตั้งค่า File Permission ให้ถูกต้องหลังล้าง

File Permission ที่หละหลวมเป็นหนึ่งในสาเหตุหลักที่ทำให้ WordPress ติดมัลแวร์ซ้ำ หลังล้างเสร็จต้องตั้งค่าให้ถูกต้อง:

# Folders ควรเป็น 755 (Owner: rwx, Group: r-x, Other: r-x)
find public_html/ -type d -exec chmod 755 {} \;

# Files ควรเป็น 644 (Owner: rw-, Group: r--, Other: r--)
find public_html/ -type f -exec chmod 644 {} \;

# wp-config.php ควรเป็น 640 หรือ 600 (ป้องกันไม่ให้อ่านได้จากภายนอก)
chmod 640 public_html/wp-config.php

# .htaccess ควรเป็น 644
chmod 644 public_html/.htaccess

สิ่งที่ห้ามทำเด็ดขาดคือตั้ง Permission เป็น 777 (ทุกคนเขียนได้) เพราะเปิดโอกาสให้ Scripts ภายนอกสร้างหรือแก้ไขไฟล์ใดก็ได้บน Server ซึ่งเป็นจุดเริ่มต้นของการติดมัลแวร์ที่พบบ่อยที่สุด

ขอให้ Google ถอด Blacklist หลังล้างเสร็จ

ถ้า Google ขึ้นคำเตือน "เว็บนี้อาจเป็นอันตราย" หรือมี Manual Action ใน Search Console ต้องยื่น Request ให้ Google Review เว็บใหม่หลังล้างเสร็จแล้ว:

ถ้าใช้ Google Safe Browsing ตรวจสอบสถานะได้ที่ transparencyreport.google.com/safe-browsing/search?url=yourdomain.com — ถ้ายังขึ้น Unsafe ให้รอให้ Google Crawl ใหม่หลังจาก Submit Sitemap ใน Search Console

วิธีป้องกัน WordPress ไม่ให้ติดมัลแวร์ซ้ำ

การป้องกันสำคัญกว่าการล้าง เพราะเว็บที่เคยถูกแฮกแล้วมีโอกาสถูกแฮกซ้ำสูงกว่าเว็บทั่วไปหลายเท่า เพราะแฮกเกอร์มักทิ้ง Backdoor ไว้หลายชั้น:

1. อัพเดตอยู่เสมอ

สาเหตุอันดับหนึ่งของการติดมัลแวร์บน WordPress คือการใช้ Version เก่าที่มี Vulnerability ที่เป็นที่รู้จักแล้ว เปิด Auto Update สำหรับ Security Release:

# เพิ่มใน wp-config.php เพื่อ Auto Update Security Patches
define('WP_AUTO_UPDATE_CORE', 'minor'); // อัพ Minor และ Security Releases อัตโนมัติ

2. ติดตั้ง Security Plugin

Wordfence (Free tier) ทำหน้าที่เป็นทั้ง Firewall และ Scanner — บล็อก IP ที่พยายาม Brute Force, ตรวจไฟล์เปลี่ยนแปลง และแจ้งเตือนทางอีเมลเมื่อเจอปัญหา ติดตั้งไว้ตั้งแต่วันแรกเป็นนิสัย

3. ใช้ Password แข็งแกร่งและ 2FA

Brute Force Attack ยังคงเป็นวิธีที่แฮกเกอร์ใช้บ่อยที่สุด ตั้ง Password Admin อย่างน้อย 16 ตัวอักษร ผสมพิมพ์ใหญ่-เล็ก-ตัวเลข-สัญลักษณ์ และเปิดใช้ Two-Factor Authentication ด้วย Plugin เช่น WP 2FA หรือ Google Authenticator

4. จำกัด Login Attempts

# เพิ่มใน .htaccess เพื่อบล็อก IP ที่ Login ผิดเกิน 5 ครั้ง
# (ใช้ร่วมกับ Plugin Limit Login Attempts Reloaded)

# หรือซ่อน wp-login.php ด้วย Security Plugin
# ที่ Settings → WPS Hide Login → เปลี่ยน URL Login เป็น URL ที่รู้จักเฉพาะเจ้าของ

5. ลบ Plugin และ Theme ที่ไม่ใช้

แต่ละ Plugin ที่ติดตั้งไว้คือ "ประตู" เพิ่มเติมที่อาจมีช่องโหว่ ลบ Plugin และ Theme ที่ไม่ใช้งานออกให้หมดเพื่อลด Attack Surface ลง

6. Backup อัตโนมัติรายวัน

Hosting ที่ดีควรมี Backup รายวันให้อยู่แล้ว แต่แนะนำให้ตั้ง Backup เพิ่มเองด้วย Plugin เช่น UpdraftPlus ส่งไปเก็บที่ Google Drive หรือ Dropbox เพื่อให้มีสำเนาที่ Hosting ไม่สามารถเข้าถึงได้หากเกิดกรณีร้ายแรง

คำถามที่พบบ่อย (FAQ)

เว็บ WordPress ติดมัลแวร์รู้ได้อย่างไร

สัญญาณที่พบบ่อยคือ: เว็บโหลดช้าผิดปกติหรือ Redirect ไปหน้าแปลกๆ, Google แสดงคำเตือน "เว็บนี้อาจเป็นอันตราย", Hosting ส่งอีเมลแจ้งใช้ CPU/RAM เกิน, ไฟล์ใน public_html มีไฟล์ .php แปลกปลอมที่ตัวเองไม่ได้สร้าง, Googlebot เจอหน้าสแปมที่คุณไม่ได้ทำ หรือ WordPress Admin เข้าไม่ได้เพราะถูกเปลี่ยน Password

ล้างมัลแวร์ WordPress ต้องใช้ Plugin หรือทำเองได้

ทำเองได้ทั้งคู่ ถ้าติดไม่หนักสามารถใช้ Plugin เช่น Wordfence หรือ MalCare สแกนและล้างอัตโนมัติได้เลย แต่ถ้าติดหนักจนเข้า WP Admin ไม่ได้ ต้องล้างด้วยมือผ่าน File Manager หรือ FTP โดยตรวจไฟล์ Core, Plugin, Theme ทีละตัว ลบโค้ดแปลกปลอม แล้ว Restore ไฟล์ Clean จาก WordPress.org แทน

หลังล้างมัลแวร์แล้วต้องทำอะไรเพิ่มเติม

หลังล้างมัลแวร์เสร็จต้องทำหลายอย่างเพื่อป้องกันการติดซ้ำ: เปลี่ยน Password ทั้งหมด (WordPress Admin, FTP, DirectAdmin, MySQL), อัพเดต WordPress Core, Plugin, Theme ให้เป็น Version ล่าสุด, ลบ Plugin/Theme ที่ไม่ได้ใช้ออก, เพิ่ม Plugin Security เช่น Wordfence, ตั้งค่า File Permission ให้ถูกต้อง (Folders 755, Files 644), และส่ง URL ให้ Google Review ผ่าน Search Console เพื่อถอดคำเตือน

Shared Hosting ติดมัลแวร์จะลามไปเว็บอื่นในเซิร์ฟเวอร์เดียวกันไหม

บน Shared Hosting ที่ดีจะมี Isolation ระหว่าง Account ทำให้มัลแวร์ใน Account หนึ่งไม่ลามไปยัง Account อื่นได้โดยตรง อย่างไรก็ตามถ้ามัลแวร์ Exploit ช่องโหว่ระดับ Server หรือ PHP ก็มีโอกาสลุกลาม Hosting ที่มีระบบ Security ดีอย่าง Imunify360 จะตรวจจับและกักกันไฟล์อันตรายไว้ก่อนที่จะลาม แต่ก็ควรรีบล้างทันทีไม่ว่ากรณีใด

Hosting DirectAdmin ครบชุดของ AsiaGB

AsiaGB Hosting รองรับ DirectAdmin เต็มรูปแบบ PHP 8.3 MySQL เริ่มต้น 500 บาท/ปี

ดูแพ็กเกจ Hosting