คู่มือฉบับสมบูรณ์เกี่ยวกับ xmlrpc.php ใน WordPress (มันคืออะไร มีความเสี่ยงด้านความปลอดภัย วิธีปิดการใช้งาน)

เผยแพร่แล้ว: 2020-07-06

ข้อกำหนด XML-RPC WordPress ได้รับการพัฒนาเพื่อสร้างมาตรฐานการสื่อสารระหว่างระบบต่างๆ ซึ่งหมายความว่าแอปพลิเคชันภายนอก WordPress (เช่น แพลตฟอร์มบล็อกอื่นๆ และไคลเอ็นต์เดสก์ท็อป) สามารถโต้ตอบกับ WordPress ได้

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

อย่างไรก็ตาม xmlrpc.php มีข้อเสียอยู่ มันสามารถแนะนำช่องโหว่ให้กับไซต์ WordPress ของคุณและตอนนี้ถูกแทนที่โดย WordPress REST API ซึ่งทำงานได้ดีกว่ามากในการเปิด WordPress ไปยังแอปพลิเคชันอื่น

ในบทความนี้ เราจะอธิบายว่า xmlrpc.php คืออะไร เหตุใดคุณจึงควรปิดการใช้งาน และช่วยให้คุณระบุได้ว่าไฟล์นั้นทำงานอยู่บนไซต์ WordPress ของคุณหรือไม่

พร้อม? มาดำน้ำกันเถอะ!

xmlrpc.php คืออะไร?

XML-RPC เป็นข้อกำหนดที่ช่วยให้สามารถสื่อสารระหว่าง WordPress และระบบอื่นๆ โดยทำสิ่งนี้โดยกำหนดมาตรฐานการสื่อสารเหล่านั้น โดยใช้ HTTP เป็นกลไกการขนส่งและ XML เป็นกลไกการเข้ารหัส

XML-RPC ถือกำเนิดจาก WordPress: มีอยู่ในซอฟต์แวร์บล็อก b2 ซึ่งถูกแยกออกเพื่อสร้าง WordPress ย้อนกลับไปในปี 2546 โค้ดที่อยู่เบื้องหลังระบบถูกจัดเก็บไว้ในไฟล์ชื่อ xmlrpc.php ในไดเร็กทอรีรากของเว็บไซต์ และยังคงมีอยู่ แม้ว่า XML-RPC จะล้าสมัยไปมากแล้วก็ตาม

ใน WordPress เวอร์ชันแรกๆ XML-RPC ถูกปิดโดยค่าเริ่มต้น แต่ตั้งแต่เวอร์ชัน 3.5 มันถูกเปิดใช้งานโดยค่าเริ่มต้น สาเหตุหลักคือการอนุญาตให้แอพ WordPress มือถือพูดคุยกับการติดตั้ง WordPress ของคุณ

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

แต่ไม่ใช่แค่แอปบนอุปกรณ์เคลื่อนที่ที่ใช้ XML-RPC เท่านั้น แต่ยังใช้เพื่ออนุญาตการสื่อสารระหว่าง WordPress และแพลตฟอร์มบล็อกอื่นๆ เปิดใช้งาน trackbacks และ pingbacks และขับเคลื่อนปลั๊กอิน Jetpack ซึ่งเชื่อมโยง WordPress ที่โฮสต์เอง ไซต์ไปยัง WordPress.com

แต่เนื่องจาก REST API ถูกรวมเข้ากับคอร์ของ WordPress ไฟล์ xmlrpc.php จึงไม่ถูกใช้สำหรับการสื่อสารนี้อีกต่อไป แทนที่จะใช้ REST API เพื่อสื่อสารกับแอพมือถือ WordPress กับไคลเอนต์เดสก์ท็อปกับแพลตฟอร์มบล็อกอื่น ๆ กับ WordPress.com (สำหรับปลั๊กอิน Jetpack) และระบบและบริการอื่น ๆ ช่วงของระบบที่ REST API สามารถโต้ตอบได้นั้นมากกว่าที่อนุญาตโดย xmlrpc.php นอกจากนี้ยังมีความยืดหยุ่นมากขึ้น

เนื่องจาก REST API แทนที่ XML-RPC คุณจึงควรปิดการใช้งาน xmlrpc.php บนไซต์ของคุณ มาดูกันว่าทำไม

ทำไมคุณควรปิดการใช้งาน xmlrpc.php

สาเหตุหลักที่คุณควรปิดการใช้งาน xmlrpc.php บนไซต์ WordPress ของคุณ เป็นเพราะว่ามันทำให้เกิดช่องโหว่ด้านความปลอดภัย และสามารถตกเป็นเป้าหมายของการโจมตีได้

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

หาก xmlrpc.php เป็นความรับผิดชอบด้านความปลอดภัยและใช้งานไม่ได้แล้ว เหตุใดจึงไม่ถูกลบออกจาก WordPress ทั้งหมด

เหตุผลนี้เป็นเพราะคุณสมบัติหลักประการหนึ่งของ WordPress ก็คือความเข้ากันได้แบบย้อนหลังเสมอ หากคุณจัดการไซต์ของคุณได้ดี คุณจะรู้ว่าการทำให้ WordPress ทันสมัยอยู่เสมอ ตลอดจนปลั๊กอินหรือธีมต่างๆ เป็นสิ่งสำคัญ

แต่จะมีเจ้าของเว็บไซต์อยู่เสมอที่ไม่เต็มใจหรือไม่สามารถอัปเดตเวอร์ชันของ WordPress ได้ หากพวกเขากำลังใช้งานเวอร์ชันที่มาก่อน REST API พวกเขาจะต้องเข้าถึง xmlrpc.php

มาดูช่องโหว่เฉพาะเจาะจงในรายละเอียดเพิ่มเติมกัน

การโจมตี DDoS ผ่าน XML-RPC Pingbacks

หนึ่งในฟังก์ชันที่เปิดใช้งาน xmlrpc.php คือ pingbacks และ trackbacks นี่คือการแจ้งเตือนที่ปรากฏในความคิดเห็นบนไซต์ของคุณเมื่อบล็อกหรือไซต์อื่นเชื่อมโยงไปยังเนื้อหาของคุณ

ข้อกำหนด XML-RPC เป็นสิ่งที่ทำให้การสื่อสารนี้เป็นไปได้ แต่ถูกแทนที่ด้วย REST API (ดังที่เราเห็นแล้ว)

หากไซต์ของคุณเปิดใช้งาน XML-RPC แฮ็กเกอร์อาจติดตั้งการโจมตี DDoS บนไซต์ของคุณโดยใช้ xmlrpc.php เพื่อส่ง Pingbacks จำนวนมากไปยังไซต์ของคุณในเวลาอันสั้น การทำเช่นนี้อาจทำให้เซิร์ฟเวอร์ของคุณทำงานหนักเกินไปและทำให้ไซต์ของคุณหยุดดำเนินการ

การโจมตีด้วยกำลังดุร้ายผ่าน XML-RPC

แต่ละครั้งที่ xmlrpc.php ส่งคำขอ ระบบจะส่งชื่อผู้ใช้และรหัสผ่านสำหรับการตรวจสอบสิทธิ์ สิ่งนี้แสดงถึงความรับผิดด้านความปลอดภัยที่สำคัญและเป็นสิ่งที่ REST API ไม่ทำ อันที่จริง REST API ใช้ OAuth ซึ่งส่งโทเค็นสำหรับการตรวจสอบสิทธิ์แทนชื่อผู้ใช้หรือรหัสผ่าน

เนื่องจาก xmlrpc.php ส่งข้อมูลการตรวจสอบสิทธิ์กับทุกคำขอ แฮกเกอร์จึงสามารถใช้ข้อมูลดังกล่าวเพื่อพยายามเข้าถึงไซต์ของคุณได้ การโจมตีด้วยกำลังเดรัจฉานเช่นนี้อาจทำให้พวกเขาสามารถแทรกเนื้อหา ลบโค้ด หรือสร้างความเสียหายให้กับฐานข้อมูลของคุณได้

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

ด้วยเหตุนี้ หากคุณใช้งาน WordPress เวอร์ชันล่าสุด ซึ่งใช้ REST API เพื่อสื่อสารกับระบบภายนอก คุณควรปิดการใช้งาน xmlrpc.php ไม่จำเป็นและอาจทำให้ไซต์ของคุณมีช่องโหว่


xmlrpc.php ทำงานบนไซต์ WordPress ของคุณหรือไม่

สิ่งแรกที่คุณต้องทำคือระบุว่า xmlrpc.php ทำงานอยู่บนไซต์ WordPress ของคุณหรือไม่

นี่ไม่ใช่กรณีง่ายๆ ในการตรวจสอบว่ามีไฟล์อยู่หรือไม่: เป็นส่วนหนึ่งของการติดตั้ง WordPress ทุกครั้งและจะปรากฏแม้ว่าจะปิดใช้งาน XML-RPC ก็ตาม

หากต้องการตรวจสอบว่าเปิดใช้งาน xmlrpc.php บนไซต์ของคุณหรือไม่ ให้ใช้บริการตรวจสอบความถูกต้อง XML-RPC ของ WordPress การดำเนินการนี้จะตรวจสอบไซต์ของคุณและบอกคุณว่า xmlrpc.php เปิดใช้งานอยู่หรือไม่

บริการตรวจสอบความถูกต้องของ WordPress XML-RPC
บริการตรวจสอบความถูกต้องของ WordPress XML-RPC

นี่คือผลลัพธ์ที่ฉันได้รับเมื่อตรวจสอบไซต์นี้ในบริการ

Kinsta XML-RPC ตรวจสอบ
Kinsta XML-RPC ตรวจสอบ

นี่แสดงว่า xmlrpc.php ถูกปิดการใช้งานบน kinsta.com ดังนั้น หากคุณทำการตรวจสอบและพบว่า xmlrpc.php ยังคงเปิดใช้งานอยู่บนไซต์ของคุณ คุณจะปิดมันได้อย่างไร?

วิธีปิดการใช้งาน xmlrpc.php

มีสามวิธีในการปิดการใช้งาน xmlrpc.php:

เรามาดูทีละอย่างกัน

วิธีปิดการใช้งาน xmlrpc.php ด้วยปลั๊กอิน

การติดตั้งปลั๊กอินเพื่อปิดใช้งาน xmlrpc.php เป็นวิธีที่ง่ายที่สุดในการทำเช่นนี้ ปลั๊กอินปิดการใช้งาน XML-RPC จะปิดใช้งานอย่างสมบูรณ์ นี่คือวิธีที่คุณใช้

จุดเริ่มต้นของฉันคือเว็บไซต์ของฉันเอง ซึ่งเปิดใช้งาน xmlrpc.php คุณสามารถดูสิ่งนี้ได้ผ่านเช็คที่ฉันทำ:

เว็บไซต์ Rachel McCollin - การตรวจสอบ XML-RPC
เว็บไซต์ Rachel McCollin – การตรวจสอบ XML-RPC

ติดตั้งปลั๊กอินผ่านหน้าจอ ปลั๊กอิน ในผู้ดูแลระบบ WordPress และเปิดใช้งาน

คุณไม่จำเป็นต้องดำเนินการใดๆ: การเปิดใช้งานปลั๊กอินจะทำให้ปิดการใช้งาน XML-RPC ตอนนี้ ถ้าฉันทำการตรวจสอบบนไซต์ของฉัน ฉันจะได้รับผลลัพธ์ที่ต่างออกไป:

เว็บไซต์ Rachel McCollin - การตรวจสอบ XML-RPC ครั้งที่สอง
เว็บไซต์ Rachel McCollin – การตรวจสอบ XML-RPC ครั้งที่สอง

มันง่ายมาก!

ปิดการใช้งาน XML-RPC Pingbacks ด้วย Plugin

แต่ถ้าคุณต้องการปิดการใช้งานบางแง่มุมของ xmlrpc.php ไม่ใช่อย่างอื่น ปลั๊กอิน Disable XML-RPC Pingback ช่วยให้คุณสามารถปิดใช้งานเฉพาะฟังก์ชัน pingback ซึ่งหมายความว่าคุณยังคงสามารถเข้าถึงคุณลักษณะอื่นๆ ของ XML-RPC ได้หากต้องการ

ปลั๊กอินทำงานในลักษณะเดียวกับปลั๊กอินปิดการใช้งาน XML-RPC เพียงแค่ติดตั้ง เปิดใช้งาน และมันจะใช้งานได้

กำหนดค่าการเปิดใช้งาน XML-RPC และ REST API ด้วย Plugin

หากคุณต้องการการควบคุมที่ละเอียดยิ่งขึ้นสำหรับการกำหนดค่าทั้ง xmlrpc.php และ REST API บนไซต์ของคุณ คุณสามารถติดตั้งปลั๊กอิน REST XML-RPC Data Checker

เมื่อคุณติดตั้งและเปิดใช้งานปลั๊กอินนี้แล้ว ให้ไปที่ การตั้งค่า > REST XML-RPC Data Checker แล้วคลิกแท็บ XML-RPC

ตัวตรวจสอบข้อมูล REST XML-RPC
ตัวตรวจสอบข้อมูล REST XML-RPC

ซึ่งช่วยให้คุณกำหนดค่าได้อย่างแม่นยำว่า xmlrpc.php ใช้งานอยู่ในไซต์ของคุณในลักษณะใด

ต้องการโฮสติ้งที่รวดเร็ว ปลอดภัย และเป็นมิตรกับนักพัฒนาใช่ไหม Kinsta สร้างขึ้นโดยคำนึงถึงนักพัฒนา WordPress และมีเครื่องมือมากมายและแดชบอร์ดที่ทรงพลัง ตรวจสอบแผนของเรา

หรือคุณสามารถปิดได้เลย และถ้าคุณต้องการควบคุม REST API ด้วย ปลั๊กอินจะให้แท็บอื่นสำหรับสิ่งนั้น

วิธีปิดการใช้งาน xmlrpc.php โดยไม่ต้องใช้ปลั๊กอิน

หากคุณไม่ต้องการติดตั้งปลั๊กอินอื่นบนไซต์ของคุณ คุณสามารถปิดใช้งาน xmlrpc.php ได้โดยเพิ่มโค้ดลงในตัวกรอง หรือในไฟล์ .htaccess ของคุณ ลองดูทั้งสองวิธี

ปิดใช้งาน xmlrpc.php ผ่านตัวกรอง

ตัวเลือกที่นี่คือการใช้ตัวกรอง xmlrpc_enabled เพื่อปิดใช้งาน xmlrpc.php เพิ่มฟังก์ชันนี้ในปลั๊กอินและเปิดใช้งานบนไซต์ของคุณ:

 add_filter( 'xmlrpc_enabled', '__return_false' );

คุณสามารถเพิ่มไฟล์นี้ในไฟล์ฟังก์ชันของธีมได้ แต่ควรเขียนปลั๊กอินด้วยแนวทางปฏิบัติที่ดีกว่า

อีกทางเลือกหนึ่งเกี่ยวกับการแก้ไขไฟล์ .htaccess ของคุณ ซึ่งใช้ได้กับผู้ให้บริการโฮสต์ที่ใช้ Apache โดยการเชื่อมต่อกับเซิร์ฟเวอร์ของไซต์ของคุณผ่าน FTP หรือ cPanel

ปิดการใช้งาน xmlrpc.php ผ่าน .htacess File

ในไฟล์ . htaccess ของคุณ ให้เพิ่มโค้ดนี้:

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

ตรวจสอบให้แน่ใจว่าคุณได้คัดลอกไฟล์เก่าก่อนที่จะทำ เผื่อในกรณีที่คุณประสบปัญหาใดๆ

ให้ผู้ให้บริการโฮสติ้งของคุณปิดการใช้งาน xmlrpc.php

อีกทางหนึ่ง ผู้ให้บริการโฮสต์บางรายจะปิดการใช้งาน xmlrpc.php หากตรวจพบการโจมตี

ที่ Kinsta เมื่อตรวจพบการโจมตีผ่าน XML-RPC ข้อมูลโค้ดจะถูกเพิ่มลงในไฟล์ Nginx.config โดยอัตโนมัติ:

 location ~* ^/xmlrpc.php$ { return 403; }

สิ่งนี้จะทำให้เกิดข้อผิดพลาด 403 และหยุดการโจมตีในเส้นทางของมัน

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

คุณต้องเปิดใช้งาน xmlrpc.php เมื่อใด

อาจมีบางครั้งที่คุณต้องเปิดใช้งาน xmlrpc.php บนไซต์ WordPress ของคุณ หรือเมื่อคุณไม่ควรปิดการใช้งานอย่างสมบูรณ์

เหล่านี้คือ:

  • คุณไม่ได้ใช้งาน REST API (ไม่แนะนำ แต่จำเป็นในบางสถานการณ์) แต่จำเป็นต้องสื่อสารระหว่างไซต์ WordPress ของคุณกับระบบอื่นๆ
  • คุณไม่สามารถอัปเดต WordPress เป็นเวอร์ชัน 4.4 หรือสูงกว่า ดังนั้นจึงไม่มีสิทธิ์เข้าถึง REST API อาจเป็นเพราะข้อจำกัดในการตั้งค่าโฮสติ้งของคุณ (ในกรณีนี้ ฉันจะเปลี่ยนผู้ให้บริการโฮสต์) หรือความไม่เข้ากันของธีมหรือปลั๊กอิน (ซึ่งในกรณีนี้ ฉันจะเปลี่ยนหรืออัปเดตสิ่งเหล่านั้น)
  • คุณกำลังทำงานกับแอปพลิเคชันภายนอกที่ไม่สามารถเข้าถึง WP REST API แต่สามารถเข้าถึง XML-RPC ได้ (ในระยะยาว ฉันแนะนำให้อัปเดตแอปพลิเคชันนั้นหรือเปลี่ยนเป็นแอปพลิเคชันที่เข้ากันได้กับ REST)

แค่นั้นแหละ! สิ่งเหล่านี้ไม่ใช่เหตุผลที่ดีเป็นพิเศษในการเปิดข้อมูลจำเพาะ XML-RPC ไว้

เหตุผลเดียวที่มันยังคงอยู่ใน WordPress ก็คือความเข้ากันได้แบบย้อนหลัง และคุณจะใช้มันก็ต่อเมื่อคุณกำลังทำงานกับระบบที่ล้าสมัย สำหรับใครก็ตามที่ต้องการทำให้ไซต์ของตนทันสมัยอยู่เสมอและทำงานด้วยเทคโนโลยีล่าสุด การปิดใช้งาน xmlrpc.php เป็นวิธีที่จะไป

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

สรุป

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

เมื่อ REST API ช่วยให้ไซต์ของคุณสื่อสารกับแอปพลิเคชันอื่นๆ ได้แล้ว คุณสามารถปิดใช้งาน xmlrpc.php ได้อย่างปลอดภัย หากคุณทำตามขั้นตอนข้างต้น การปิดใช้งานจะเป็นการเพิ่มความปลอดภัยให้กับไซต์ของคุณ