นักวิจัยด้านความปลอดภัยเปิดเผยช่องโหว่ลูกโซ่ที่ตั้งชื่อว่า "Click2Shell" บน WordPress Core ซึ่งผสมผสานปัญหาในระบบ Theme Preview/Theme Installer เข้ากับโค้ดที่ไม่ปลอดภัยของ Theme บางตัว จนสามารถนำไปสู่ Remote Code Execution (RCE) ได้สำเร็จ เพียงแค่ผู้ดูแลระบบที่ Login อยู่คลิกลิงก์ที่ถูกสร้างขึ้นเป็นพิเศษเพียงครั้งเดียว โดยผู้โจมตีไม่จำเป็นต้องมีบัญชี WordPress ใดๆ เลย ปัญหานี้ได้รับการแก้ไขแล้วใน WordPress 7.1.1 ซึ่งเผยแพร่เมื่อวันที่ 17 กันยายน 2569
รายละเอียดการโจมตี
จุดเริ่มต้น: ปัญหาการประมวลผล Input ที่ไม่สอดคล้องกันใน Theme Installer
รากของช่องโหว่ Click2Shell เกิดจากการประมวลผล Input ที่ไม่สอดคล้องกันระหว่าง WordPress.org API และเบราว์เซอร์ของผู้ดูแลระบบ กล่าวคือ WordPress.org API จะทำการ Canonicalize (ปรับให้เป็นรูปแบบมาตรฐาน) Theme Slug ก่อนประมวลผล แต่เบราว์เซอร์ของผู้ดูแลระบบกลับคงเครื่องหมายวรรคตอนเดิมไว้และนำไปใส่ใน jQuery Selector โดยตรง ตัวอักษรพิเศษที่เป็นอันตรายใน Selector สามารถหลุดออกจากขอบเขตของ Attribute Match เดิม เดินทางข้าม DOM ของ Theme Card และไปกระตุ้นปุ่ม Install จริงที่มีอยู่ในหน้าเว็บได้
กลไก Forced Install: URL เดียวสั่งติดตั้ง Theme โดยไม่ต้องมีบัญชี
ผลจากช่องโหว่นี้คือ URL ที่ถูกสร้างขึ้นเป็นพิเศษสามารถบังคับให้ WordPress ติดตั้งและ Preview Theme ที่ไม่ได้ใช้งานอยู่ (Inactive Theme) จาก WordPress.org ได้โดยอัตโนมัติ ทันทีที่ผู้ดูแลระบบที่ Login อยู่คลิกลิงก์นั้น ระบบจะอาศัย Authenticated Session และ Nonce ของผู้ดูแลระบบเองในการดำเนินการติดตั้ง ทำให้ผู้โจมตีไม่จำเป็นต้องมีข้อมูลรับรองหรือบัญชี WordPress ใดๆ เลยตลอดกระบวนการ
การขยายผลสู่ Remote Code Execution ด้วย Theme "Mobile Repair Zone"
นักวิจัยสาธิตให้เห็นการขยายผลกระทบแบบครบวงจรโดยใช้ Theme ชื่อ "Mobile Repair Zone" เวอร์ชัน 2.5.4 เป็นกรณีศึกษา หลังจาก Theme ถูกบังคับติดตั้งผ่านกลไก Click2Shell แล้ว ขั้นตอน Customizer Preview จะโหลดโค้ด PHP ของ Theme ที่ไม่ได้ใช้งานนี้ขึ้นมาทำงาน ซึ่งเผยให้เห็น AJAX Handler ที่ผ่านการยืนยันตัวตนแล้ว (Authenticated) แต่ขาดการตรวจสอบทั้ง Nonce และ Capability อย่างสิ้นเชิง AJAX Handler ดังกล่าวยอมรับรายละเอียด Plugin และ URL Package ที่ผู้โจมตีกำหนดเอง จากนั้นดาวน์โหลดไฟล์ Archive แตกไฟล์ และรันจุดเริ่มต้น PHP (PHP Entry Point) โดยอัตโนมัติ ทำให้ผู้โจมตีสามารถรันโค้ดอันตรายบนเซิร์ฟเวอร์ได้สำเร็จ
ระดับความรุนแรงและสถานะ CVE
ณ เวลาที่เปิดเผยข้อมูล WordPress ยังไม่ได้เผยแพร่หมายเลข CVE อย่างเป็นทางการสำหรับ Click2Shell แต่ทาง Pwn.ai ซึ่งเป็นผู้ค้นพบและวิเคราะห์ช่องโหว่นี้ได้ประเมินว่าปัญหา Forced-Install แบบเดี่ยว (ไม่รวม RCE) อยู่ในระดับ High (CVSS 3.1: 7.1) ในขณะที่ Exploit Chain แบบเต็มรูปแบบที่นำไปสู่ RCE ได้ถูกประเมินไว้ในระดับ Critical
การแก้ไขและ Timeline การเปิดเผยข้อมูล
WordPress แก้ไขปัญหานี้ในเวอร์ชัน 7.1.1 ที่เผยแพร่เมื่อวันที่ 17 กันยายน 2569 โดย Patch ดังกล่าวจำกัดการจับคู่ jQuery Selector ให้ตรงกับ Theme Card ที่แท้จริงเท่านั้น (div.theme) และใช้ฟังก์ชัน escapeSelector() กับ Slug ที่มาจาก URL เพื่อให้เครื่องหมายคำพูดและ Combinator ที่ถูกฉีดเข้ามาถูกตีความเป็นตัวอักษรธรรมดาแทนที่จะเป็นส่วนหนึ่งของ Selector ทั้งนี้ยังมีการเผยแพร่ Backport สำหรับสาขาเวอร์ชันที่ยังได้รับการดูแลด้านความปลอดภัยย้อนไปถึงเวอร์ชัน 4.7 ด้วย ไทม์ไลน์การเปิดเผยข้อมูลเริ่มจากนักวิจัยรายงานปัญหาครั้งแรกเมื่อวันที่ 22 สิงหาคม 2569 ส่งมอบ Exploit Chain แบบเต็มรูปแบบเมื่อวันที่ 1 กันยายน 2569 WordPress เผยแพร่ Patch เมื่อวันที่ 17 กันยายน 2569 และเผยแพร่บทวิเคราะห์ทางเทคนิคในวันถัดมา
ผลกระทบที่อาจเกิดขึ้น
1. การเข้าถึงข้อมูลรับรองฐานข้อมูลผ่าน wp-config.php
เมื่อผู้โจมตีสามารถรันโค้ด PHP บนเซิร์ฟเวอร์ได้สำเร็จ ขั้นตอนถัดไปที่มักเกิดขึ้นคือการเข้าถึงไฟล์ wp-config.php ซึ่งเก็บข้อมูลรับรองการเชื่อมต่อฐานข้อมูล (Database Credentials) ทำให้ผู้โจมตีสามารถเข้าถึงฐานข้อมูล WordPress และ WooCommerce ได้โดยตรง
2. ความเสี่ยงต่อเว็บไซต์ E-Commerce ที่ใช้ WooCommerce
เว็บไซต์ที่ใช้ WordPress ร่วมกับ WooCommerce สำหรับธุรกิจ E-Commerce มีความเสี่ยงเป็นพิเศษ เนื่องจากข้อมูลที่อาจรั่วไหลไม่ได้จำกัดอยู่เพียงเนื้อหาเว็บไซต์ แต่อาจรวมถึงข้อมูลคำสั่งซื้อ ข้อมูลลูกค้า และข้อมูลการชำระเงินที่เก็บอยู่ในระบบ
3. ความง่ายในการโจมตีที่ไม่ต้องมีบัญชีใดๆ
จุดที่ทำให้ Click2Shell มีความอันตรายสูงคือผู้โจมตีไม่จำเป็นต้องมีบัญชี WordPress หรือข้อมูลรับรองใดๆ เลย เพียงแค่หลอกให้ผู้ดูแลระบบที่ Login อยู่คลิกลิงก์เดียว ซึ่งสามารถทำได้ผ่านอีเมล Phishing, ข้อความในโซเชียลมีเดีย หรือเทคนิค Social Engineering ทั่วไป ทำให้พื้นผิวการโจมตีกว้างกว่าช่องโหว่ที่ต้องอาศัยข้อมูลรับรองที่ถูกขโมยมาก่อน
4. การควบคุมเว็บไซต์ทั้งระบบและการขยายผลต่อ Hosting Environment
เมื่อผู้โจมตีสามารถแก้ไขไฟล์ สร้างบัญชีใหม่ และรันโค้ดบนเซิร์ฟเวอร์ได้แล้ว ผลกระทบอาจไม่ได้จำกัดอยู่เพียงเว็บไซต์เดียว แต่อาจขยายไปสู่การควบคุม Hosting Environment ทั้งหมด โดยเฉพาะในกรณีที่ใช้ Shared Hosting ร่วมกับเว็บไซต์อื่น
สิ่งที่องค์กรควรทำ
1. อัปเดตเป็น WordPress 7.1.1 ทันที
องค์กรที่ใช้งาน WordPress ควรอัปเดตเป็นเวอร์ชัน 7.1.1 หรือ Backport ที่เกี่ยวข้องสำหรับสาขาเวอร์ชันเก่าที่ยังได้รับการดูแลโดยเร็วที่สุด เนื่องจากเป็นวิธีเดียวที่แก้ไขต้นตอของปัญหาการประมวลผล Selector ที่ไม่ปลอดภัย
2. เปิดใช้งาน Automatic Update สำหรับ WordPress Core
เพื่อให้มั่นใจว่าเว็บไซต์ได้รับ Patch ความปลอดภัยโดยเร็วที่สุดในอนาคต องค์กรควรตรวจสอบและเปิดใช้งานฟีเจอร์ Automatic Update ของ WordPress Core หากยังไม่ได้เปิดใช้งาน โดยเฉพาะสำหรับ Minor Version ที่มักรวม Security Patch
3. ตรวจสอบ Theme และ Plugin ที่ติดตั้งล่าสุดและไฟล์ PHP ที่ผิดปกติ
ควรตรวจสอบรายการ Theme และ Plugin ที่ติดตั้งในเว็บไซต์ว่ามีรายการที่ไม่คุ้นเคยหรือไม่ได้รับอนุมัติหรือไม่ พร้อมตรวจหาไฟล์ PHP ที่ผิดปกติซึ่งอาจถูกอัปโหลดผ่านกลไก Click2Shell ในกรณีที่สงสัยว่าเคยถูกโจมตีมาก่อน
4. ตรวจสอบ Log การเรียก theme-install.php และ admin-ajax.php ที่เกี่ยวข้องกับ Customizer
องค์กรควรตรวจสอบ Access Log ของเว็บเซิร์ฟเวอร์ย้อนหลัง โดยเฉพาะ Request ที่เรียกไปยัง theme-install.php และ admin-ajax.php ในบริบทของ Customizer ซึ่งอาจเป็นร่องรอยของความพยายามใช้ประโยชน์จากช่องโหว่นี้
แนวทางลดความเสี่ยงระยะยาว
1. อบรมผู้ดูแลระบบให้ระมัดระวังการคลิกลิงก์ที่ไม่คาดคิดขณะ Login อยู่
เนื่องจากช่องโหว่นี้อาศัยการที่ผู้ดูแลระบบคลิกลิงก์ขณะที่ยัง Login ระบบ WordPress อยู่ องค์กรควรอบรมให้ผู้ดูแลระบบตระหนักถึงความเสี่ยงของการคลิกลิงก์ที่ไม่คาดคิดหรือมาจากแหล่งที่ไม่น่าเชื่อถือขณะที่ Session การ Login ยังคงทำงานอยู่ โดยเฉพาะลิงก์ที่ส่งผ่านอีเมลหรือข้อความ
2. จำกัดจำนวนบัญชีที่มีสิทธิ์ Administrator ให้น้อยที่สุด
เนื่องจากช่องโหว่นี้อาศัยสิทธิ์และ Session ของผู้ดูแลระบบเป็นกลไกหลักในการโจมตี องค์กรควรทบทวนจำนวนบัญชีที่มีสิทธิ์ Administrator บนเว็บไซต์ WordPress ให้เหลือน้อยที่สุดเท่าที่จำเป็น เพื่อลดพื้นผิวการโจมตีในภาพรวม
3. พิจารณาใช้ Web Application Firewall (WAF) ที่ครอบคลุม Theme Installer Endpoint
องค์กรควรพิจารณาติดตั้ง Web Application Firewall ที่สามารถตรวจจับและบล็อก Request ที่มีรูปแบบผิดปกติไปยัง Theme Installer และ Customizer Endpoint เพื่อเพิ่มชั้นการป้องกันเสริมนอกเหนือจากการแพตช์ WordPress Core
4. จัดทำกระบวนการตรวจสอบ Theme และ Plugin ก่อนติดตั้งใช้งานจริง
เนื่องจากช่องโหว่นี้ขยายผลผ่านโค้ดที่ไม่ปลอดภัยในตัว Theme เอง (ไม่ใช่เพียง WordPress Core) องค์กรควรจัดทำกระบวนการตรวจสอบความปลอดภัยของ Theme และ Plugin ก่อนนำไปใช้งานจริง โดยเฉพาะการตรวจสอบว่า AJAX Handler ต่างๆ มีการตรวจสอบ Nonce และ Capability อย่างเหมาะสมหรือไม่
วิเคราะห์ในมุมมองจาก TXEC
Click2Shell เป็นตัวอย่างที่น่าสนใจของช่องโหว่ที่อาศัยความไม่สอดคล้องกันของการประมวลผลข้อมูลระหว่างสองระบบ (WordPress.org API และเบราว์เซอร์ของผู้ใช้) ซึ่งเป็นรูปแบบช่องโหว่ที่ตรวจจับได้ยากด้วยการทดสอบทั่วไป เนื่องจากแต่ละระบบทำงานถูกต้องตามที่ออกแบบไว้เมื่อพิจารณาแยกกัน แต่เมื่อนำมาประกอบกันกลับเปิดช่องให้เกิดการโจมตีได้ สิ่งที่ TXEC เห็นว่าสำคัญเป็นพิเศษคือการที่ Exploit Chain นี้อาศัยเพียง "การคลิกลิงก์ครั้งเดียว" โดยไม่ต้องมีบัญชีหรือข้อมูลรับรองใดๆ เลย ซึ่งลดอุปสรรคในการโจมตีลงอย่างมากเมื่อเทียบกับช่องโหว่ที่ต้องอาศัยข้อมูลรับรองที่ถูกขโมยมาก่อน
องค์กรในประเทศไทยจำนวนมากใช้งาน WordPress เป็นแพลตฟอร์มหลักสำหรับเว็บไซต์องค์กรและร้านค้าออนไลน์ผ่าน WooCommerce จึงควรถือว่าการแพตช์เป็นเวอร์ชัน 7.1.1 เป็นความเร่งด่วนระดับสูง โดยเฉพาะเว็บไซต์ที่มีผู้ดูแลระบบหลายคนซึ่งเพิ่มโอกาสที่จะมีผู้ใดผู้หนึ่งคลิกลิงก์อันตรายโดยไม่ทันระวังตัว นอกจากการแพตช์แล้ว การอบรมผู้ดูแลระบบเรื่องความเสี่ยงของการคลิกลิงก์ขณะ Login อยู่ยังคงเป็นมาตรการป้องกันเชิงลึกที่สำคัญ เนื่องจากช่องโหว่ลักษณะนี้อาจเกิดขึ้นอีกในอนาคตกับ Component อื่นของ WordPress รู้ก่อน ตรวจพบเร็ว ลดความเสียหายได้มากกว่า
[ แหล่งอ้างอิง: Cyber Security News, Pwn.ai ]