WordPress Security

XML-RPC คืออะไร ควรปิดใน WordPress ไหม

XML-RPC คืออะไร ควรปิดใน WordPress ไหม

XML-RPC เป็นโปรโตคอลเก่าแก่ที่ WordPress ใช้รับส่งข้อมูลจากระยะไกลมาตั้งแต่เวอร์ชัน 3.5 แต่ทุกวันนี้มันกลายเป็นหนึ่งในช่องโหว่ที่แฮกเกอร์ใช้โจมตีเว็บ WordPress บ่อยที่สุด หลายเจ้าของเว็บไม่รู้ด้วยซ้ำว่าตัวเองเปิดใช้งานอยู่ บทความนี้จะอธิบายว่า XML-RPC คืออะไร ทำงานอย่างไร เสี่ยงแค่ไหน และควรปิดเมื่อไหร่

nn

XML-RPC คืออะไร และทำงานอย่างไรใน WordPress

n

XML-RPC ย่อมาจาก XML Remote Procedure Call คือระบบที่อนุญาตให้โปรแกรมภายนอกเชื่อมต่อกับ WordPress ผ่านไฟล์ xmlrpc.php โดยส่งคำสั่งในรูปแบบ XML ผ่าน HTTP ในอดีตมันถูกใช้กับแอปบนมือถือ WordPress, Jetpack, Windows Live Writer รวมถึงระบบ pingback และ trackback เพื่อแจ้งเตือนเว็บอื่นว่ามีการอ้างอิงบทความ

n

ปัจจุบัน WordPress มี REST API ที่ทำงานได้ดีกว่า ปลอดภัยกว่า และรองรับการยืนยันตัวตนที่ทันสมัยกว่า ทำให้ XML-RPC แทบไม่จำเป็นสำหรับเว็บทั่วไปอีกต่อไป

nn

เสริมความปลอดภัย WordPress — WP Doctor Thailand
เสริมความปลอดภัยและปิดช่องโหว่ของ WordPress

nn

ทำไม XML-RPC ถึงเป็นความเสี่ยง

n

ปัญหาหลักของ XML-RPC คือมันเปิดประตูให้แฮกเกอร์โจมตีได้หลายรูปแบบ:

n

    n

  • Brute Force ผ่าน multicall: XML-RPC อนุญาตให้ส่งคำขอหลายพันครั้งในการเชื่อมต่อเดียว (system.multicall) แฮกเกอร์จึงทดสอบรหัสผ่านได้รวดเร็วกว่าการโจมตีหน้า wp-login.php หลายเท่า อ่านเพิ่มเติมเรื่อง Brute Force Attack WordPress คืออะไรและวิธีป้องกัน
  • n

  • DDoS ผ่าน Pingback: แฮกเกอร์ใช้ฟีเจอร์ pingback ของ XML-RPC เพื่อสั่งให้เว็บ WordPress หลายร้อยเว็บส่ง request ไปยังเป้าหมายพร้อมกัน ทำให้เว็บเป้าหมายล่ม
  • n

  • ยืนยันตัวตนด้วย credential ล้วน ๆ: ทุกการเรียกใช้ XML-RPC ต้องส่ง username และ password ในทุก request ซึ่งเพิ่มความเสี่ยงหาก credential รั่วไหล
  • n

n

ความเสี่ยงเหล่านี้เป็นส่วนหนึ่งของ Checklist ความปลอดภัย WordPress ที่เจ้าของเว็บควรตรวจสอบเป็นประจำ

nn

วิธีตรวจสอบว่าเว็บเปิด XML-RPC อยู่หรือไม่

n

สามารถตรวจสอบได้หลายวิธี:

n

    n

  • เปิดเบราว์เซอร์แล้วไปที่ https://yoursite.com/xmlrpc.php — ถ้าเห็นข้อความ “XML-RPC server accepts POST requests only” แสดงว่าเปิดใช้งานอยู่
  • n

  • ใช้เครื่องมือออนไลน์อย่าง WPScan หรือ Pingdom ตรวจสอบ endpoint
  • n

  • ดู access log ของ server ค้นหา request ที่ส่งไป xmlrpc.php จำนวนมากผิดปกติ
  • n

nn

สำรองข้อมูลและดูแล WordPress — WP Doctor Thailand
สำรองข้อมูล WordPress ทั้งไฟล์และฐานข้อมูลก่อนแก้ไข

nn

วิธีปิด XML-RPC ใน WordPress ทีละขั้นตอน

n

มีหลายวิธีปิด XML-RPC ขึ้นอยู่กับสิทธิ์การเข้าถึง server ของคุณ:

nn

วิธีที่ 1: ปิดผ่าน Plugin

n

ติดตั้ง plugin ชื่อ Disable XML-RPC หรือใช้ Wordfence ที่มีตัวเลือกบล็อก XML-RPC ในตัว เหมาะสำหรับผู้ที่ไม่ต้องการแก้ไขโค้ด อ่านเพิ่มเติมว่า Wordfence คืออะไรและเหมาะกับใคร

nn

วิธีที่ 2: บล็อกผ่าน .htaccess (Apache)

n

เพิ่มโค้ดต่อไปนี้ในไฟล์ .htaccess ที่ root ของเว็บ:

n

<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

n

วิธีนี้บล็อก request ตั้งแต่ระดับ server ก่อนที่ WordPress จะโหลด ประหยัด resource กว่าการปิดผ่าน plugin

nn

วิธีที่ 3: ปิดผ่าน functions.php

n

เพิ่มโค้ดใน functions.php ของ theme หรือใน mu-plugin:

n

add_filter('xmlrpc_enabled', '__return_false');

n

วิธีนี้ปิดการประมวลผล XML-RPC แต่ไฟล์ xmlrpc.php ยังสามารถเข้าถึงได้อยู่ จึงไม่ได้ลดภาระ server เท่าวิธี .htaccess

nn

สรุปสำคัญ: วิธีที่ดีที่สุดคือบล็อกผ่าน .htaccess หรือ Nginx config เพราะตัดการเชื่อมต่อตั้งแต่ต้น ไม่ให้ request ถึง PHP เลย ช่วยลด load server และป้องกัน brute force ได้ดีกว่า

nn

กรณีที่ยังต้องใช้ XML-RPC อยู่

n

ก่อนปิด ควรตรวจสอบก่อนว่าเว็บของคุณยังใช้ฟีเจอร์เหล่านี้อยู่หรือไม่:

n

    n

  • Jetpack: บางฟีเจอร์ของ Jetpack ยังพึ่ง XML-RPC แต่ Automattic กำลังย้ายไป REST API ทีละส่วน ตรวจสอบว่าฟีเจอร์ที่คุณใช้จำเป็นหรือไม่
  • n

  • แอป WordPress บนมือถือ (เวอร์ชันเก่า): แอปใหม่ใช้ REST API แล้ว ถ้าอัปเดตแอปแล้วไม่จำเป็นต้องเปิด XML-RPC
  • n

  • เครื่องมือ third-party: ตรวจสอบ API ที่ใช้อยู่ว่ายังพึ่ง XML-RPC หรือรองรับ REST API แล้ว
  • n

n

ถ้าไม่แน่ใจ ให้ลองปิดแล้วทดสอบว่าระบบยังทำงานปกติหรือไม่ก่อนตัดสินใจถาวร

nn

เมื่อไหร่ควรปรึกษาผู้เชี่ยวชาญ

n

หากคุณพบ request ไปที่ xmlrpc.php จำนวนมากผิดปกติใน log, เว็บช้าลงโดยไม่ทราบสาเหตุ, หรือไม่แน่ใจว่า server ของตัวเองรองรับการแก้ไข .htaccess แบบไหน ควรให้ผู้เชี่ยวชาญเข้ามาดูแล บริการ เสริมความปลอดภัย WordPress ของเราครอบคลุมการปิด XML-RPC, ตรวจสอบ log, และ hardening จุดอื่น ๆ ทั้งหมดในครั้งเดียว นอกจากนี้ยังควรศึกษาเรื่อง Website Security Hardening คืออะไร เพื่อเข้าใจภาพรวมการป้องกันเว็บในระดับลึกขึ้น

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

ถ้าปิด XML-RPC แล้ว WordPress จะทำงานได้ปกติไหม?

ในกรณีส่วนใหญ่ทำงานได้ปกติ เพราะ WordPress ใช้ REST API แทนแล้ว เว้นแต่คุณใช้ Jetpack บางฟีเจอร์หรือเครื่องมือเก่าที่ยังพึ่ง XML-RPC อยู่ ลองปิดแล้วทดสอบดูก่อน

XML-RPC เปิดอยู่โดย default ใน WordPress ไหม?

ใช่ WordPress เปิด XML-RPC ไว้โดย default ตั้งแต่เวอร์ชัน 3.5 ขึ้นมา ต้องปิดเองถ้าต้องการลดความเสี่ยง

Jetpack จำเป็นต้องใช้ XML-RPC ไหม?

บางฟีเจอร์ของ Jetpack เดิมพึ่ง XML-RPC แต่ Automattic กำลังย้ายมาใช้ REST API ทีละส่วน ถ้าใช้ Jetpack เวอร์ชันใหม่ และไม่ได้ใช้ฟีเจอร์เก่า ๆ มักปิด XML-RPC ได้โดยไม่มีปัญหา

วิธีบล็อก XML-RPC ผ่าน .htaccess ปลอดภัยกว่า plugin ไหม?

ปลอดภัยและมีประสิทธิภาพกว่า เพราะตัด request ตั้งแต่ระดับ web server ก่อนที่ PHP หรือ WordPress จะโหลด ช่วยลด load server ด้วย แต่ต้องมีสิทธิ์แก้ไขไฟล์ .htaccess บน server

อ่านบทความหลักของหมวดนี้ WordPress Security Checklist สำหรับเจ้าของเว็บไซต์

บทความอื่นในหมวดนี้

LINE ส่งปัญหา