2026年11月12日
2026年11月12日
ตรวจช่องโหว่ปลั๊กอิน WordPress ด้วย WP-CLI, WPScan และฐานข้อมูลช่องโหว่
บทความนี้เป็นฉบับปรับให้เหมาะกับท้องถิ่นจากต้นฉบับภาษาญี่ปุ่น อ่านต้นฉบับภาษาญี่ปุ่น
ช่องโหว่ของปลั๊กอินบางครั้งถูกโจมตีหลังเปิดเผยเพียงระยะสั้น ๆ หลักพื้นฐานคือทำซ้ำเป็นประจำตามลำดับ คือ รู้ว่าติดตั้งปลั๊กอินอะไรเวอร์ชันใด เทียบกับช่องโหว่ที่รู้จัก และอัปเดตหากมีเวอร์ชันที่แก้ไขแล้ว บทความนี้อธิบายตามลำดับ ตั้งแต่การตรวจเวอร์ชันด้วย WP-CLI การเทียบด้วย WPScan วิธีอ่านฐานข้อมูลช่องโหว่ การตรวจว่าไฟล์ถูกแก้ไขหรือไม่ และการจัดการเมื่อพบ คำสั่งและเงื่อนไขค่าบริการเป็นเนื้อหาที่ตรวจจากเอกสารทางการแต่ละแห่ง ณ พฤศจิกายน 2026
1. ทำรายการปลั๊กอินที่ติดตั้งและเวอร์ชัน
ก่อนอื่นให้รู้ว่าติดตั้งอะไรไว้ในเวอร์ชันใด ตรวจได้ที่ "ปลั๊กอิน (Plugins) → ปลั๊กอินที่ติดตั้งแล้ว (Installed Plugins)" ในหน้าผู้ดูแล แต่หากใช้ WP-CLI จะบันทึกรายการไว้ได้
# แสดงชื่อ เวอร์ชัน เปิด/ปิดใช้งาน และมีการอัปเดตหรือไม่
wp plugin list --fields=name,version,status,update
# แสดงเฉพาะตัวที่มีการอัปเดต
wp plugin list --update=available
# บันทึกเป็น JSON เพื่อเก็บบันทึก
wp plugin list --fields=name,version,status --format=json > plugins.json
ปลั๊กอินที่ปิดใช้งานก็ปรากฏในรายการด้วย แม้ปิดใช้งานแต่ไฟล์ยังอยู่บนเซิร์ฟเวอร์ และอาจมีการเข้าถึงไฟล์ที่มีช่องโหว่โดยตรง จึงควรลบตัวที่ไม่ได้ใช้ ขั้นพื้นฐานของ WP-CLI อธิบายไว้ใน "วิธีจัดการปลั๊กอินด้วย WP-CLI"
2. เทียบกับช่องโหว่ที่รู้จักด้วย WPScan
WPScan เป็นเครื่องมือบรรทัดคำสั่งที่ตรวจเว็บไซต์ WordPress จากภายนอก ข้อมูลช่องโหว่ดึงมาจาก API ของ WPScan จึงต้องสร้างบัญชีที่ wpscan.com และออก API token มาใช้
ตามหน้าราคาของ WPScan แผนฟรีจำกัดเฉพาะการใช้งานที่ไม่ใช่เชิงพาณิชย์ และเรียก API ได้วันละ 25 ครั้ง หากใช้กับไซต์เชิงธุรกิจต้องมีไลเซนส์แบบเสียเงิน แม้ไม่ใช้ API token ก็ทำงานได้ แต่จะไม่แสดงข้อมูลช่องโหว่
# ติดตั้ง (กรณีติดตั้งด้วย gem ของ Ruby)
gem install wpscan
# กรณีใช้ Docker
docker pull wpscanteam/wpscan
# ตรวจปลั๊กอินที่มีรายงานช่องโหว่
wpscan --url https://example.com --api-token YOUR_API_TOKEN -e vp
# ใช้วิธีตรวจจับทั้ง passive และ aggressive
wpscan --url https://example.com --api-token YOUR_API_TOKEN -e vp --plugins-detection mixed
ค่าหลักของ -e มีดังนี้
| ค่า | เป้าหมาย |
|---|---|
vp |
ปลั๊กอินที่มีรายงานช่องโหว่ |
ap |
ปลั๊กอินทั้งหมด |
p |
ปลั๊กอินที่ใช้กันบ่อย |
vt |
ธีมที่มีรายงานช่องโหว่ |
การตรวจจับปลั๊กอินโดยมาตรฐานเป็นแบบ passive ซึ่งอ่านจาก HTML ของหน้าเว็บเป็นต้น ปลั๊กอินที่ไม่ทิ้งร่องรอยใน HTML อาจตรวจไม่พบ หากระบุ aggressive หรือ mixed การตรวจจับจะเพิ่มขึ้น แต่จำนวนคำขอก็เพิ่มด้วย
ใช้ WPScan ตรวจได้เฉพาะเว็บไซต์ที่ตนเองดูแล หรือเว็บไซต์ที่ได้รับอนุญาตเท่านั้น รายละเอียดการใช้งานดูเพิ่มเติมได้ที่ "ตรวจช่องโหว่ของไซต์ด้วย WPScan"
3. ยืนยันรายละเอียดด้วยฐานข้อมูลช่องโหว่
ปลั๊กอินที่ปรากฏในผลของ WPScan หรือถูกเอ่ยชื่อในข่าวด้านความปลอดภัย ให้ตรวจรายละเอียดในฐานข้อมูลต่อไปนี้
- WPScan Vulnerability Database (wpscan.com)
- Wordfence Intelligence (wordfence.com)
- Patchstack Database (patchstack.com)
- NVD (nvd.nist.gov, ค้นด้วยหมายเลข CVE)
หัวข้อที่ควรดูมีดังนี้
| หัวข้อ | สิ่งที่ต้องยืนยัน |
|---|---|
| เวอร์ชันที่ได้รับผลกระทบ | เวอร์ชันของตนอยู่ในช่วงนั้นหรือไม่ |
| เวอร์ชันที่แก้ไขแล้ว | หากอัปเดตแล้วจะหายหรือไม่ บางกรณียังไม่มีเวอร์ชันที่แก้ไข |
| สิทธิ์ที่ต้องมี | ใช้โจมตีได้โดยไม่ต้องล็อกอินหรือไม่ หรือต้องมีสิทธิ์ผู้เขียนหรือสมาชิก |
| ความรุนแรง (CVSS) | ตัวเลข 0-10 ยิ่งสูงยิ่งกระทบมาก |
| ประเภท | XSS, SQL injection, การยกระดับสิทธิ์, การอัปโหลดไฟล์ใดก็ได้ เป็นต้น |
ให้จัดการสิ่งที่โจมตีได้โดยไม่ต้องล็อกอิน และสิ่งที่มีความรุนแรงสูงก่อน ส่วนสิ่งที่โจมตีได้ด้วยสิทธิ์ของสมาชิก หากเป็นไซต์ที่เปิดรับลงทะเบียนผู้ใช้ (ไซต์สมาชิก ร้านค้า เป็นต้น) ให้รีบจัดการ
4. ตรวจว่าไฟล์ถูกแก้ไขหรือไม่
เมื่อมีความเป็นไปได้ว่าช่องโหว่ถูกใช้โจมตี ให้ตรวจว่าไฟล์ยังเหมือนตอนแจกจ่ายหรือไม่ verify-checksums ของ WP-CLI จะเทียบไฟล์กับ checksum ที่ WordPress.org เผยแพร่
# ตรวจปลั๊กอินทั้งหมด
wp plugin verify-checksums --all
# ตรวจเฉพาะปลั๊กอินที่ระบุ
wp plugin verify-checksums contact-form-7
# ตรวจไฟล์ของแกนหลัก WordPress
wp core verify-checksums
หากไม่มีปัญหาจะแสดงข้อความอย่าง Success: Verified 8 of 8 plugins. หากมีไฟล์ที่ถูกเพิ่มหรือมีเนื้อหาต่างไป จะแสดงรายการของไฟล์เหล่านั้น
ปลั๊กอินแบบเสียเงินที่ไม่ได้แจกจ่ายที่ WordPress.org ไม่มี checksum จึงตรวจด้วยวิธีนี้ไม่ได้ ในกรณีนั้น ให้ดาวน์โหลดเวอร์ชันเดียวกันจากผู้แจกจ่ายมาเปรียบเทียบไฟล์
5. วิธีจัดการเมื่อพบช่องโหว่
# กรณีมีเวอร์ชันที่แก้ไขแล้ว: อัปเดต
wp plugin update contact-form-7
# กรณีไม่มีเวอร์ชันที่แก้ไข: ปิดใช้งาน และลบหากไม่ได้ใช้
wp plugin deactivate vulnerable-plugin
wp plugin delete vulnerable-plugin
# ก่อนอัปเดตทั้งหมดพร้อมกัน ให้ตรวจว่าจะมีอะไรถูกอัปเดตบ้าง
wp plugin update --all --dry-run
vulnerable-plugin เป็นเพียงตัวอย่าง ให้แทนที่ด้วย slug จริง (คอลัมน์ name ของ wp plugin list)
- ก่อนอัปเดตให้สำรองข้อมูล และหลังอัปเดตให้ตรวจว่าหน้าจอหลัก (ฟอร์มติดต่อ ระบบชำระเงิน เป็นต้น) ทำงานได้
- ปลั๊กอินที่ไม่มีเวอร์ชันที่แก้ไขและหยุดพัฒนาแล้ว ให้พิจารณาย้ายไปใช้ปลั๊กอินอื่นที่มีฟังก์ชันเดียวกัน ปลั๊กอินที่ WordPress.org หยุดแจกจ่ายจะมีการแจ้งการหยุดแจกจ่ายในหน้าของปลั๊กอิน
- หากมีร่องรอยการถูกแก้ไข การอัปเดตอย่างเดียวไม่พอ ให้ตรวจการเพิ่มผู้ใช้ผู้ดูแล ไฟล์ PHP ที่ถูกวางใน uploads การเปลี่ยนแปลงของ wp-config.php และอื่น ๆ ด้วย และหากจำเป็นให้กู้คืนจากข้อมูลสำรอง
6. ทำให้การตรวจเป็นนิสัย
- ในหน้า "ปลั๊กอิน (Plugins)" ของหน้าผู้ดูแล เปิดการอัปเดตอัตโนมัติรายปลั๊กอินได้ (WordPress 5.5 ขึ้นไป) ให้เริ่มจากปลั๊กอินที่ไม่ค่อยเสี่ยงที่การอัปเดตจะทำให้การแสดงผลเพี้ยน ดูรายละเอียดที่ "วิธีตั้งค่าการอัปเดตปลั๊กอินอัตโนมัติ"
- หากรัน WPScan เป็นระยะด้วย cron ให้ระวังโควตาฟรีวันละ 25 ครั้งและเงื่อนไขที่ต้องไม่ใช่เชิงพาณิชย์
- Wordfence ซึ่งเป็นปลั๊กอินด้านความปลอดภัยก็แจ้งปลั๊กอินที่ต้องอัปเดตจากการสแกนเช่นกัน วิธีใช้อธิบายไว้ใน "สแกนไซต์ด้วย Wordfence"
สรุป
การตรวจช่องโหว่ของปลั๊กอินทำตามลำดับ คือ ทำรายการ (wp plugin list) เทียบกับช่องโหว่ที่รู้จัก (WPScan หรือฐานข้อมูลช่องโหว่) ตรวจว่ามีการแก้ไขไฟล์หรือไม่ (wp plugin verify-checksums) และจัดการด้วยการอัปเดตหรือลบ การลบปลั๊กอินที่ไม่ได้ใช้เป็นมาตรการที่ใช้แรงน้อยที่สุด
มีคำถามเกี่ยวกับ WordPress ไหม ผู้เผยแพร่เว็บไซต์นี้อยู่ที่ญี่ปุ่นและตอบเป็นภาษาญี่ปุ่น ติดต่อ (ภาษาญี่ปุ่น)