การทดสอบการเจาะระบบสำหรับเว็บไซต์ WordPress
เผยแพร่แล้ว: 2020-03-20WordPress ขับเคลื่อนเว็บไซต์ จำนวนมาก บนอินเทอร์เน็ต ดังนั้นจึงไม่น่าแปลกใจที่ผู้โจมตีที่ช่ำชองและ "สคริปต์เด็ก" ชอบกำหนดเป้าหมายเว็บไซต์ WordPress ไม่ว่าคุณจะเป็นผู้ดูแลเว็บหรือผู้เชี่ยวชาญด้านความปลอดภัย เมื่อได้รับมอบหมายให้ประเมินระดับความปลอดภัยของเว็บไซต์ WordPress ก็มักจะช่วยให้ทราบถึงข้อผิดพลาดด้านความปลอดภัยทั่วไปที่ผู้โจมตีมักใช้ประโยชน์ การใช้เครื่องมือทดสอบการเจาะที่เหมาะสมเป็นสิ่งสำคัญเช่นกัน
ในบทความนี้ ผมจะกล่าวถึงช่องโหว่ด้านความปลอดภัยทั่วไป การทุจริตต่อหน้าที่ และข้อมูลที่เป็นประโยชน์ที่ผู้โจมตีอาจใช้ในทางที่ผิดในการติดตั้ง WordPress จำนวนมาก นอกจากนี้ ฉันยังจะเน้นถึงเครื่องมือจำนวนหนึ่งที่คุณควรใช้เพื่อช่วยในการทดสอบการเจาะระบบของ WordPress โดยอัตโนมัติ
โปรด ทราบ — ทำการทดสอบการเจาะระบบความปลอดภัยบนระบบที่เป็นของคุณเท่านั้น หรือคุณได้รับอนุญาตแล้ว ทำความเข้าใจข้อจำกัดของการเข้าถึงที่คุณได้รับและอยู่ภายในขีดจำกัดเหล่านั้น
ปัญหาด้านความปลอดภัยทั่วไปของ WordPress & การทุจริตต่อหน้าที่
โค้ด WordPress เวอร์ชันเก่า
การรัน WordPress เวอร์ชันเก่าที่มีช่องโหว่ด้านความปลอดภัยถือเป็นหนึ่งในช่องโหว่ด้านความปลอดภัยที่พบบ่อยที่สุดที่เกี่ยวข้องกับ WordPress แม้ว่า WordPress เวอร์ชันใหม่จะทำให้อัปเกรดเป็นเวอร์ชันล่าสุดได้ง่าย แต่ก็ไม่ใช่เรื่องแปลกที่ไซต์ WordPress รุ่นเก่าจะล้าหลัง
การใช้ WordPress เวอร์ชันเก่าบนอินเทอร์เน็ตถือเป็นระเบิดเวลา WordPress รุ่นเก่าหลายรุ่นมีช่องโหว่ด้านความปลอดภัย ปัญหาด้านความปลอดภัยเหล่านี้มักถูก โจมตี โดยผู้โจมตี
เมื่อตรวจสอบเว็บไซต์ WordPress เพื่อหาช่องโหว่ด้านความปลอดภัย นี่เป็นหนึ่งในสิ่งแรกที่คุณต้องตรวจสอบ โชคดีสำหรับผู้โจมตี โดยค่าเริ่มต้น WordPress จะเพิ่มเมตาแท็ก HTML ที่มีเวอร์ชันของ WordPress ที่ใช้อยู่
<ชื่อเมตา=”ตัวสร้าง” เนื้อหา=”WordPress 4.8.11″ />
การรู้ว่าการติดตั้ง WordPress กำลังใช้งานเวอร์ชันเก่าอาจทำให้ผู้โจมตีมีโอกาสใช้ประโยชน์จากช่องโหว่ที่รู้จัก ใช้ฐานข้อมูลช่องโหว่ด้านความปลอดภัย CVE เพื่อค้นหาปัญหาด้านความปลอดภัยที่ทราบใน WordPress core
ธีมและปลั๊กอิน WordPress เวอร์ชันที่ล้าสมัย
แกนหลักของ WordPress มีความปลอดภัยสูง ผู้ใช้หลายล้านคนและแฮกเกอร์ที่ประสงค์ร้ายทำการทดสอบและตรวจสอบโค้ดอย่างละเอียด ซึ่งหมายความว่าโดยส่วนใหญ่ ปัญหาด้านความปลอดภัยจะถูกตรวจพบและแก้ไขก่อนที่จะถูกโจมตีโดยผู้โจมตี อย่างไรก็ตาม ไม่มีภูมิคุ้มกันต่อช่องโหว่ด้านความปลอดภัย น่าเสียดายที่สิ่งนี้ใช้ไม่ได้กับปลั๊กอินและธีมของ WordPress นับพัน
ทุกคนสามารถส่งธีมหรือปลั๊กอินและทำให้ผู้ดูแลระบบ WordPress คนใดก็ได้ดาวน์โหลดและใช้งานได้ แน่นอน นี่ไม่ได้หมายความว่า ทุก ปลั๊กอินของ WordPress นั้นเขียนโค้ดไม่ดีและเต็มไปด้วยช่องโหว่ — ห่างไกลจากมัน อย่างไรก็ตาม ช่องโหว่ที่ทราบได้เปิดเผยพื้นผิวการโจมตีขนาดใหญ่ต่อ WordPress ซึ่งคุณควรระวังเมื่อทำการทดสอบการเจาะระบบ WordPress
เครื่องมือที่รวดเร็วที่สุดและครอบคลุมมากที่สุดสำหรับการตรวจสอบลายนิ้วมือของปลั๊กอินและธีม WordPress ที่มีช่องโหว่คือการใช้ WPScan WPScan เป็นเครื่องสแกนความปลอดภัยของ WordPress แบบโอเพนซอร์สที่ใช้บ่อยในการสแกนเว็บไซต์ WordPress เพื่อหาช่องโหว่ที่ทราบภายในแกนหลัก ปลั๊กอิน และธีม
เมื่อใช้ WPScan ระหว่างช่วงทดสอบ โปรดแน่ใจว่าคุณสมัครใช้งานและกำหนดค่าให้ใช้คีย์ API ฐานข้อมูลช่องโหว่ของ WPScan ฐานข้อมูลช่องโหว่ของ WPScan เป็นฐานข้อมูลที่ดูแลโดยผู้เขียน WPScan พร้อมช่องโหว่ที่ทราบล่าสุดและเวอร์ชันที่เกี่ยวข้อง
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ WPScan และวิธีเรียกใช้การสแกนประเภทต่างๆ โปรดดูที่การเริ่มต้นใช้งาน WPScan
PHP และเว็บเซิร์ฟเวอร์เวอร์ชันเก่า
WordPress เป็นเว็บแอปพลิเคชัน PHP ดังนั้นแนวปฏิบัติด้านความปลอดภัย PHP ทั้งหมดจึงนำไปใช้กับ WordPress ด้วย ในระหว่างการทดสอบการเจาะระบบ WordPress นี่เป็นหนึ่งในสิ่งแรกที่ควรมองหา การติดตั้ง WordPress ที่ใช้ PHP เวอร์ชันเก่าหรือซอฟต์แวร์เว็บเซิร์ฟเวอร์ (เช่น Nginx, Apache HTTP Server, IIS…) อาจทำให้เว็บไซต์ถูกโจมตีได้ทุกประเภท
เป็นเรื่องง่ายมากที่จะทราบว่าเว็บเซิร์ฟเวอร์และเวอร์ชัน PHP ที่เว็บไซต์ WordPress ใช้อยู่ ในหลายกรณี ผู้โจมตีต้องทำเพียงแค่ใส่ใจกับส่วนหัวการตอบสนอง HTTP ที่ส่งคืนจากเว็บไซต์ คุณสามารถส่งคำขอด้วยตัวเองด้วย curl:
$ curl -s -D – http://167.71.67.124/ -o /dev/null | grep -i “เซิร์ฟเวอร์\|X-ขับเคลื่อนโดย”
ค้นหา เซิร์ฟเวอร์ และส่วนหัว X-Powered-By HTTP ในการตอบกลับ:
เซิร์ฟเวอร์: Apache/2.4.29 (Ubuntu)
X-ขับเคลื่อนโดย: PHP/5.5.9
ผู้โจมตีอาจใช้ช่องโหว่ที่ทราบได้ (เช่น https://www.cvedetails.com/vendor/74/PHP.html) ทั้งนี้ขึ้นอยู่กับรุ่นและการกำหนดค่าของเว็บไซต์ เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับเป้าหมาย ข้อมูลดังกล่าวสามารถช่วย เพิ่ม การโจมตี หรือแม้แต่รันคำสั่งโดยตรงบนเว็บเซิร์ฟเวอร์
การแจงนับชื่อผู้ใช้ WordPress
เว้นเสียแต่ว่าผู้ดูแลระบบได้ดำเนินการตามขั้นตอนเพื่อป้องกัน ตามค่าเริ่มต้น WordPress จะเสี่ยงต่อการโจมตีระบุผู้ใช้ การโจมตีการแจงนับผู้ใช้ WordPress มองหาความแตกต่างเล็กน้อยในวิธีที่ WordPress ตอบสนองต่อคำขอเฉพาะ ผู้โจมตีสามารถระบุได้ว่าผู้ใช้มีอยู่หรือไม่ โดยขึ้นอยู่กับการตอบสนอง โดยอนุญาตให้ผู้โจมตีใช้ข้อมูลนี้เป็นส่วนหนึ่งของการโจมตีที่ใหญ่ขึ้น
ต่อไปนี้เป็นภาพหน้าจอของ WPScan ที่ทำการโจมตีการแจงนับชื่อผู้ใช้ WordPress
การกำหนดค่าเว็บเซิร์ฟเวอร์ผิดพลาด
รายชื่อไดเร็กทอรีและการกำหนดค่าเว็บเซิร์ฟเวอร์ผิดพลาดอื่นๆ
นอกเหนือจากซอฟต์แวร์ที่ล้าสมัยแล้ว เราต้องประเมินการกำหนดค่าเว็บเซิร์ฟเวอร์ที่ผิดพลาดที่อาจเกิดขึ้นเสมอ เว็บเซิร์ฟเวอร์ที่กำหนดค่าผิดพลาดอาจทำให้เว็บไซต์ WordPress เสี่ยงต่อการถูกเอารัดเอาเปรียบ สิ่งนี้สามารถเกิดขึ้นได้แม้ว่าเว็บเซิร์ฟเวอร์กำลังเรียกใช้ซอฟต์แวร์ล่าสุด ต่อไปนี้คือการกำหนดค่าผิดพลาดของเว็บเซิร์ฟเวอร์โดยทั่วไป:
เปิดใช้งานรายการไดเรกทอรี
รายชื่อไดเร็กทอรีเป็นการกำหนดค่าผิดพลาดที่พบบ่อยมาก เว็บเซิร์ฟเวอร์ Apache เปิดใช้งานสิ่งนี้โดยค่าเริ่มต้น และไม่ช่วยอะไร รายการไดเรกทอรีจะแสดงไฟล์และไดเรกทอรีบนเว็บเซิร์ฟเวอร์ในส่วนต่อประสานกราฟิกเมื่อไม่มีไฟล์ดัชนี
แม้ว่าสิ่งนี้ในตัวมันเองจะไม่เป็นอันตรายอย่างยิ่ง แต่ให้ผู้โจมตีสามารถเรียกดูเนื้อหาของไดเรกทอรีเว็บเซิร์ฟเวอร์ของคุณได้ การทำเช่นนี้อาจทำให้เขาเห็นไฟล์ทั้งหมดบนเว็บไซต์ของคุณ ซึ่งส่วนใหญ่ไม่ควรเข้าถึงแบบสาธารณะ แต่เข้าถึงได้ เช่น ข้อมูลสำรอง รหัสผ่าน และไฟล์การกำหนดค่า
ไฟล์สำรอง
ไฟล์สำรองเป็นอีกหนึ่ง การกำหนดค่าผิดพลาดของเว็บเซิร์ฟเวอร์ ทั่วไป โดยปกติจะเกิดขึ้นเมื่อผู้ดูแลระบบแก้ไขไฟล์บนระบบที่ใช้งานจริงด้วยตนเอง
ตัวอย่างทั่วไปของไฟล์สำรองข้อมูลที่เปิดเผยข้อมูลที่ละเอียดอ่อนอาจเป็นสำเนาสำรองของไฟล์ PHP บางครั้งไฟล์ PHP อาจมีข้อมูลการกำหนดค่าที่สำคัญ เช่น ไฟล์ wp-config.php ของ WordPress
ใช้สถานการณ์ต่อไปนี้ — ผู้ดูแลระบบ WordPress จำเป็นต้องทำการเปลี่ยนแปลงใน wp-config.php แทนที่จะปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดและเก็บสำเนาของไฟล์ไว้ที่อื่นที่ไม่ใช่เว็บเซิร์ฟเวอร์ พวกเขาทำสำเนาของไฟล์ wp-config.php แบบสด โดยตั้งชื่อไฟล์สำรองว่า wp-config.php.bak สมมติว่าผู้ดูแลระบบลืมลบไฟล์นี้ ซึ่งเกิดขึ้นบ่อยกว่าที่เราคิด
ผู้โจมตีสามารถอ่านไฟล์ได้โดยเพียงแค่ขอ http://www.example.com/wp-config.php.bak ผู้โจมตีสามารถอ่านไฟล์ได้เนื่องจากนามสกุลไม่ใช่ .php อีกต่อไป ดังนั้นเอ็นจิ้น PHP ละเว้นและเว็บเซิร์ฟเวอร์ทำหน้าที่เป็นไฟล์ข้อความ ตอนนี้ผู้โจมตีรู้ข้อมูลประจำตัวของฐานข้อมูล WordPress โทเค็นลับ และข้อมูลการกำหนดค่าที่ละเอียดอ่อนอื่น ๆ ที่คุณบันทึกไว้ในไฟล์นั้น
ไฟล์ชั่วคราว
เช่นเดียวกับไฟล์สำรอง ไฟล์ชั่วคราวในตำแหน่งที่ไม่ถูกต้องอาจเปิดเผยข้อมูลที่ละเอียดอ่อนได้ ใช้ wp-config.php เป็นตัวอย่างอีกครั้ง หากผู้ดูแลระบบต้องแก้ไขไฟล์นี้โดยใช้โปรแกรมแก้ไขข้อความ และด้วยเหตุผลบางอย่างโปรแกรมไม่สามารถออกจากโปรแกรมได้อย่างหมดจด มีโอกาสดีที่โปรแกรมแก้ไขจะทิ้งไฟล์ชั่วคราวไว้ ตัวอย่างเช่น โปรแกรมแก้ไขบรรทัดคำสั่งยอดนิยม Vim เก็บไฟล์สำรองที่มีนามสกุลไฟล์ *.ext~ พร้อมกับไฟล์ *.ext.swp ไฟล์ swp ถูกใช้เป็นไฟล์ล็อค พวกเขายังมีประวัติการเลิกทำ/ทำซ้ำทั้งหมด และข้อมูลภายในอื่นๆ ที่ Vim ต้องการ
ดังนั้น ในกรณีที่เกิดข้อขัดข้อง Vim จะทิ้งไฟล์ wp-config.php.ext~ ไว้ซึ่งอาจเข้าถึงได้ในรูปแบบข้อความธรรมดา เช่น ไฟล์สำรอง เนื่องจากไม่ได้ลงท้ายด้วยนามสกุลไฟล์ *.php ไฟล์ชั่วคราวประเภทนี้ไม่ได้มีเฉพาะใน Vim — Emacs (โปรแกรมแก้ไขข้อความบรรทัดคำสั่งยอดนิยมอีกตัวหนึ่ง) ยังบันทึกไฟล์ชั่วคราวที่คล้ายกัน และเครื่องมืออื่นๆ อีกนับไม่ถ้วนก็ทำเช่นกัน
โปรด ทราบ — ใช้ปลั๊กอินตรวจสอบความสมบูรณ์ของไฟล์สำหรับเว็บไซต์ของคุณเพื่อรับการแจ้งเตือนการเปลี่ยนแปลงไฟล์ทั้งหมด รวมถึงไฟล์ชั่วคราวและไฟล์สำรอง หากคุณไม่คุ้นเคยกับเทคโนโลยีนี้ โปรดอ่านบทนำของเราเกี่ยวกับการตรวจสอบความสมบูรณ์ของไฟล์สำหรับ WordPress
เปิดเผย MySQL
จนถึงตอนนี้ หนึ่งในการกำหนดค่าผิดพลาดที่ร้ายแรงที่สุดที่ผู้ดูแลระบบอาจทำคือการปล่อยให้เซิร์ฟเวอร์ฐานข้อมูล MySQL ของ WordPress เปิดอยู่บนอินเทอร์เน็ต ทำไมมันถึงฟังดูบ้า มันอาจจะเกิดขึ้นมากกว่าที่คุณคิด ด้านล่างนี้เป็นภาพหน้าจอจาก Shodan เครื่องมือค้นหาสำหรับอุปกรณ์ที่เชื่อมต่ออินเทอร์เน็ต
แน่นอน เพียงเพราะว่า MySQL ถูกเปิดเผยบนอินเทอร์เน็ตไม่ได้หมายความว่าใครบางคนสามารถเชื่อมต่อและเข้าถึงฐานข้อมูล WordPress ได้ อย่างไรก็ตาม โดยเฉพาะอย่างยิ่ง หากใช้ร่วมกับการโจมตีอื่นๆ เช่น รหัสผ่านรั่วไหลผ่านข้อมูลสำรองของ wp-config.php หรือการเดารหัสผ่านที่ไม่รัดกุม อาจนำไปสู่สถานการณ์ภัยพิบัติได้
เมื่อควบคุมฐานข้อมูล WordPress ได้แล้ว ก็จบเกมสำหรับการติดตั้ง WordPress ผู้โจมตีต้องทำคือรีเซ็ตรหัสผ่านของผู้ดูแลระบบ จากนั้นพวกเขาก็เข้าควบคุมเว็บไซต์ WordPress ของคุณได้อย่างสมบูรณ์ และอาจรวมถึงเซิร์ฟเวอร์ที่ทำงานอยู่ด้วยการติดตั้งปลั๊กอินที่เป็นอันตรายโดยเจตนา
เรียกใช้บริการที่ไม่จำเป็น
ปัญหาการกำหนดค่าเว็บเซิร์ฟเวอร์ผิดพลาดทั่วไปอีกประการหนึ่งคือการกำหนดค่าเริ่มต้น ผู้ดูแลระบบหลายคนเรียกใช้การกำหนดค่าเริ่มต้นและไม่ต้องปิดบริการที่ไม่ต้องการ ในกรณีส่วนใหญ่ การติดตั้งเริ่มต้นจะมีบริการที่ไม่จำเป็นจำนวนมากทำงานอยู่ ซึ่งส่วนใหญ่หากไม่ปลอดภัย เว็บเซิร์ฟเวอร์จะถูกโจมตี
เครื่องมือทดสอบการเจาะ WordPress & ผู้เชี่ยวชาญด้านความปลอดภัย
ผู้ทดสอบการเจาะจะใช้เครื่องมือที่หลากหลายเพื่อทำให้งานและเทคนิคของตนเป็นไปโดยอัตโนมัติ ระบบอัตโนมัติช่วยลดเวลาที่ใช้ในการประเมินความปลอดภัย/ทดสอบการเจาะระบบ
Kali Linux
เครื่องมือที่ใช้แตกต่างกันอย่างมาก ขึ้นอยู่กับความชอบส่วนบุคคลและปัญหาในมือ อย่างไรก็ตาม จุดเริ่มต้นที่ดีคือการมีเครื่องมือต่างๆ ที่ติดตั้งไว้ล่วงหน้า
Kali Linux เดิมชื่อ BackTrack คือการทดสอบการเจาะระบบโอเพ่นซอร์สแบบโอเพ่นซอร์สที่ทดสอบการกระจาย Linux Kali Linux มาพร้อมกับเครื่องมือที่ติดตั้งไว้ล่วงหน้าและกำหนดค่าไว้ล่วงหน้ามากมาย มีประโยชน์ทั้งกับผู้ใช้มือใหม่ที่ต้องการเริ่มต้นอย่างรวดเร็ว รวมถึงผู้ทดสอบการเจาะระบบที่มีประสบการณ์ Kali Linux ให้บริการฟรีและสามารถทำงานบนเครื่องเสมือนได้
นแมป
เครื่องสแกนฟรีนี้เป็นหนึ่งในเครื่องสแกนพื้นฐานและใช้งานได้หลากหลายที่สุดในคลังแสงของเพนเทสเตอร์ Nmap เป็นเครื่องสแกนพอร์ตเป็นหลัก อย่างไรก็ตาม สามารถขยายการสแกนประเภทต่างๆ ผ่านภาษาสคริปต์ NSE ได้ทุกประเภท
WPSสแกน
WPScan (กล่าวถึงก่อนหน้านี้ในบทความนี้) เป็นเครื่องสแกนความปลอดภัยของ WordPress แบบโอเพ่นซอร์ส มันสแกนหาช่องโหว่ของ WordPress ที่รู้จัก ทั้งภายในแกนหลักของ WordPress เช่นเดียวกับภายในปลั๊กอินและธีมของ WordPress
WPScan สามารถทำการทดสอบกล่องดำได้หลายชุด นั่นคือไม่มีการเข้าถึงซอร์สโค้ด ด้วยเหตุนี้ WPScan จึงยอดเยี่ยมในการค้นหาช่องโหว่ WordPress ที่แฮงค์ต่ำอย่างรวดเร็วและแม่นยำ
OWASP ZAP
OWASP Zed Attack Proxy (ZAP) เป็นเครื่องมือทดสอบการเจาะระบบเว็บแอปพลิเคชันแบบโอเพนซอร์สฟรี โครงการ Open Web Application Security (OWASP) ดูแลรักษาเครื่องมือนี้ OWASP ZAP ได้รับการออกแบบมาโดยเฉพาะสำหรับการทดสอบเว็บแอปพลิเคชันสำหรับช่องโหว่ต่างๆ เช่น Cross-site Scripting (XSS) และ SQL Injection (SQLi) ZAP ที่เป็นแกนหลักของมันคือพร็อกซี ตั้งอยู่ระหว่างเบราว์เซอร์ของ Pentaster และเว็บไซต์เพื่อสกัดกั้นและตรวจสอบคำขอที่ส่งระหว่างทั้งสอง
นอกจากทำหน้าที่เป็นพร็อกซีแล้ว ZAP ยังสามารถทดสอบช่องโหว่ต่างๆ ได้โดยอัตโนมัติ และยังสามารถตรวจจับ อินพุต ที่หลากหลายได้อีกด้วย Fuzzing เป็นเทคนิคการทดสอบความปลอดภัยที่มีการป้อนข้อมูลที่ไม่ถูกต้องหรือไม่คาดคิดให้กับแอปพลิเคชันโดยมีจุดประสงค์เพื่อเปิดเผยช่องโหว่ด้านความปลอดภัย
การทดสอบการเจาะระบบสำหรับ WordPress – การประเมินท่าทางความปลอดภัยของเว็บไซต์ของคุณ
ความปลอดภัยของ WordPress ไม่ใช่การแก้ไขเพียงครั้งเดียว เป็นกระบวนการต่อเนื่องตามหลักการ 4 ประการ: Harden > Monitor > Test > Improve ด้วยการทดสอบการเจาะ คุณจะปฏิบัติตามหลักการ ทดสอบ นั่นคือคุณตรวจสอบท่าทางความปลอดภัยของเว็บไซต์ของคุณ จากนั้น คุณสามารถใช้มาตรการที่จำเป็นเพื่อปรับปรุงการตั้งค่าตามสิ่งที่คุณค้นพบ
ดังนั้นการทดสอบการเจาะเว็บไซต์ WordPress บ่อยครั้งจึงควรเป็นส่วนหนึ่งของโปรแกรมความปลอดภัยของคุณ คุณตัดสินว่าคุณควรทำการทดสอบการเจาะบ่อยแค่ไหน หากคุณทำการเปลี่ยนแปลงเว็บไซต์บ่อยๆ คุณควรทำการทดสอบบ่อยๆ อย่างไรก็ตาม การทดสอบการเจาะระบบรายไตรมาสจะช่วยแก้ปัญหาได้หากเว็บไซต์ของคุณไม่ค่อยได้รับการอัปเดต