การรวมไฟล์และการใช้รหัสโดยพลการ: เมื่อต้นเดือนนี้ เว็บไซต์ตั๋วเครื่องบินที่สร้างบน WordPress ถูกแฮ็ก ทำให้ข้อมูลส่วนตัวของผู้เยี่ยมชมหลายแสนคนถูกเปิดเผย ในโพสต์ก่อนหน้านี้เกี่ยวกับสาเหตุที่แฮ็กเกอร์แฮ็ก เราได้พูดคุยถึงสาเหตุทั้งหมดที่แฮ็กเกอร์แฮ็กรวมถึงการขโมยข้อมูล ส่งอีเมลสแปม พวกเขาอาจใช้เทคนิค SEO หมวกดำเพื่อจัดอันดับผลิตภัณฑ์ของตนเอง (แนะนำให้อ่าน – แฮ็คฟาร์มา) , ฯลฯ
การเรียนรู้วิธีที่แฮ็กเกอร์แฮ็คเว็บไซต์เป็นกุญแจสำคัญในการป้องกัน นั่นคือเหตุผลที่เราระบุการโจมตีแฮ็คที่พบบ่อยที่สุดที่เกิดขึ้นบนเว็บไซต์ WordPress ในบทความก่อนหน้านี้
เมื่อเราพูดถึงการโจมตีแบบแฮ็คทั่วไป คุณมักจะนึกถึงการโจมตีแบบเดรัจฉาน แต่คุณรู้หรือไม่ว่าการรวมไฟล์และการใช้รหัสโดยอำเภอใจเป็นหนึ่งในการโจมตีแฮ็คที่พบบ่อยที่สุดที่เกิดขึ้นบนเว็บไซต์ WordPress ในโพสต์นี้ เราจะเจาะลึกลงไปอีกเล็กน้อยเกี่ยวกับการโจมตีเหล่านี้ด้วยมุมมองในการทำความเข้าใจในรายละเอียด
เพื่อให้เข้าใจว่าการโจมตีเหล่านี้ทำงานอย่างไร สิ่งแรกที่คุณต้องรู้คือมันเกี่ยวข้องกับไฟล์ PHP คุณคงสงสัยว่าทำไม? เนื่องจากการโจมตีทั้ง File Inclusion และ Arbitrary Code Execution เกี่ยวข้องกับการใช้ไฟล์ PHP
แต่ไฟล์ PHP คืออะไร? คิดถึงตู้ครัว. ภายในตู้มีของหลายอย่าง เช่น น้ำตาล เกลือ เครื่องเทศ ช้อนส้อม ฯลฯ แต่ละรายการมีจุดประสงค์เพื่อใช้ในครัว ไฟล์ PHP เป็นตู้และรหัสภายในไฟล์คือรายการที่ช่วยให้สามารถเรียกใช้ฟังก์ชันบางอย่างที่แฮ็กเกอร์ต้องการได้ นี่คือเหตุผลที่แฮกเกอร์ชอบอัปโหลดไฟล์ PHP มากกว่าไฟล์อื่นๆ เช่น ไฟล์ JPEG หรือ PDF ไฟล์ JPEG และ PDF ไม่สามารถดำเนินการได้ เช่น แฮกเกอร์ไม่สามารถใช้ไฟล์เหล่านี้เพื่อดำเนินการฟังก์ชันใดๆ ได้ หนึ่งสามารถอ่าน (เช่นดู) ได้เท่านั้น ไม่สามารถใช้เปลี่ยนแปลงเว็บไซต์ที่ถูกแฮ็กได้
แฮ็กเกอร์ที่อัปโหลดไฟล์ PHP บนเซิร์ฟเวอร์เว็บไซต์ของคุณสามารถใช้ไฟล์นั้นทำอะไรก็ได้บนเว็บไซต์ของคุณ และนี่คือเหตุผลที่ไฟล์ PHP ถูกใช้เพื่อเรียกใช้การโจมตี File Inclusion และ Arbitrary Code Execution
การโจมตีการรวมไฟล์คืออะไร
วิธีที่ดีที่สุดในการทำความเข้าใจการโจมตีเว็บไซต์ที่ซับซ้อนเช่นนี้ คือการยกตัวอย่างสถานการณ์จริง สมมติว่าคุณเปิดเว็บไซต์สำหรับสถาบันของคุณและไซต์นั้นเรียกว่า college.com คุณอนุญาตให้นักเรียนสองสามคนเข้าถึงไซต์เพื่อให้พวกเขาสามารถโพสต์ภาพที่ถ่ายระหว่างงานของวิทยาลัยล่าสุดได้ มีคนใช้การเข้าถึงของคุณในทางที่ผิดและอัปโหลดไฟล์ PHP ที่เป็นอันตราย (ชื่อ hack.php) ลงในเว็บไซต์ เป้าหมายคือเพื่อควบคุมเว็บไซต์ของวิทยาลัย เมื่อนักเรียนอัปโหลดไฟล์ PHP ที่เป็นอันตราย โดยค่าเริ่มต้น ไฟล์นั้นจะถูกเก็บไว้ในโฟลเดอร์อัปโหลด ใครก็ตามที่รู้จัก โครงสร้างพื้นฐานของ WordPress รู้ว่าไฟล์ที่อัพโหลดไปอยู่ที่ไหน
ไฟล์ทำหน้าที่เหมือนประตูที่ทำให้แฮ็กเกอร์สามารถโต้ตอบกับไฟล์จากระยะไกลได้ โปรดทราบว่าแฮ็กเกอร์ยังคงไม่สามารถควบคุมไซต์ได้ พวกเขาเพียงแค่มีหน้าต่างสำหรับการสื่อสาร เพื่อให้เข้าใจง่ายขึ้น ลองจินตนาการว่าคน A ต้องการไปประเทศที่เขาไม่อนุญาต ดังนั้นเขาจึงส่งตัวแทน คน B. คน A คือแฮ็กเกอร์ ประเทศย่อมาจากเว็บไซต์ของวิทยาลัย และบุคคล B คือไฟล์ hack.php
ไฟล์ PHP ที่อัปโหลดไปยังเว็บไซต์ของวิทยาลัย —-> ไฟล์ถูกเก็บไว้ในเซิร์ฟเวอร์ของเว็บไซต์
บุคคล B ได้รับการฝึกฝนในบางสิ่งเท่านั้นและสามารถทำได้มากเท่านั้น ดังนั้นบุคคล A จึงต้องสั่งสอนเขาว่าจะทำอย่างไรต่อไป ในทำนองเดียวกัน ไฟล์ PHP จะสร้างหน้าต่างการสื่อสารและรอคำสั่งเพิ่มเติมจากแฮ็กเกอร์
สมมติว่า hack.php ถูกสร้างขึ้นในลักษณะที่ช่วยให้สามารถอัปโหลดไฟล์เพิ่มเติมลงในเว็บไซต์ได้ แฮ็กเกอร์สร้างไฟล์ (ชื่อ control.php) ที่จะอัปโหลดโดยใช้ hack.php ที่มีอยู่แล้วในเซิร์ฟเวอร์เว็บไซต์ ไฟล์ใหม่ – control.php จะทำให้แฮกเกอร์สามารถเข้าถึงเว็บไซต์ได้อย่างเต็มที่ เขาใช้หน้าต่างที่ไฟล์ hack.php จัดเตรียมไว้ให้เพื่ออัปโหลดไฟล์ control.php ลงในไซต์ กระบวนการอัปโหลดไฟล์ control.php โดยใช้ไฟล์ (hack.php) ที่มีอยู่แล้วบนเซิร์ฟเวอร์เว็บไซต์เรียกว่า Local File Inclusion .
ตัวอย่างที่ดีอย่างหนึ่งของ Local File Execution คือช่องโหว่ที่พบในปลั๊กอิน Easy Forms for MailChimp WordPress (v 6.0.5.5) การใช้ปลั๊กอิน MailChimp เจ้าของเว็บไซต์สามารถเพิ่มรูปแบบต่างๆ ลงในไซต์ WordPress ของตนได้ ช่องโหว่ทำให้แฮกเกอร์อัปโหลดไฟล์ PHP ไปยังเซิร์ฟเวอร์เว็บไซต์โดยใช้แบบฟอร์ม MailChimp เมื่อไฟล์ถูกจัดเก็บไว้ในเซิร์ฟเวอร์ของเว็บไซต์ แฮ็กเกอร์สามารถสื่อสารกับพวกเขาและรันโค้ดที่ทำให้พวกเขาสามารถควบคุมเซิร์ฟเวอร์หรือสร้างความเสียหายให้กับไซต์ได้หลายวิธี
นี่คือสถานการณ์:เว็บไซต์ของวิทยาลัยมีไฟร์วอลล์ติดตั้งอยู่ ดังนั้นแฮกเกอร์จึงไม่สามารถอัปโหลด control.php ได้ แม้ว่าเขาจะไม่สามารถอัปโหลดไฟล์อื่นแยกกันได้ แต่เขาสามารถ "รวม" ไฟล์ได้ หมายความว่าเขาสามารถแทรกไฟล์ภายในไฟล์ hack.php ซึ่งมีอยู่แล้วบนเซิร์ฟเวอร์เว็บไซต์ของวิทยาลัย หากแฮ็กเกอร์สามารถอัปโหลดไฟล์ control.php ได้ เซิร์ฟเวอร์เว็บไซต์จะอ่านไฟล์และรันโค้ดภายในซึ่งจะทำให้แฮ็กเกอร์สามารถทำอะไรก็ได้ที่เขาต้องการ แต่เนื่องจากไม่สามารถอัปโหลดไฟล์ได้ เขาจึงต้องหาวิธีอื่นในการทำให้เซิร์ฟเวอร์อ่านไฟล์ control.php เส้นทางที่สร้างโดยแฮ็กเกอร์มีให้ทางออนไลน์และเซิร์ฟเวอร์ของเว็บไซต์วิทยาลัยควรจะสามารถอ่านได้ ดังนั้นแฮ็กเกอร์จึงสร้างเส้นทางและทำให้พร้อมใช้งานออนไลน์เพื่อให้เซิร์ฟเวอร์เว็บไซต์ของวิทยาลัยสามารถอ่านได้ จากนั้นเซิร์ฟเวอร์จะเริ่มรันโค้ดที่ได้รับจากเส้นทาง และเนื่องจากโค้ดนั้นเขียนในลักษณะที่แฮ็กเกอร์สามารถควบคุมไซต์ได้อย่างสมบูรณ์ แฮ็กจึงควบคุมเว็บไซต์ของวิทยาลัย กระบวนการในการทำให้เซิร์ฟเวอร์อ่านไฟล์ระยะไกลนี้เรียกว่า Remote File Inclusion
กรณีช่องโหว่ของ TimThumb เป็นตัวอย่างยอดนิยมของ Remote File Inclusion TimThumb เป็นปลั๊กอิน WordPress ที่อนุญาตให้แก้ไขรูปภาพบนไซต์ WordPress ได้อย่างง่ายดาย ทำให้ทุกคนสามารถใช้รูปภาพที่จัดหาจากเว็บไซต์แบ่งปันรูปภาพ เช่น imgur.com และ flickr.com TimThumb ถือว่า imgur เป็นไซต์ที่ถูกต้อง (หรือรายการที่อนุญาตพิเศษ) แฮกเกอร์ที่ใช้ประโยชน์จากเกณฑ์นี้จะสร้างไฟล์ที่มี URL ที่กล่าวถึงเว็บไซต์ที่ถูกต้อง เช่น https://www.imgur.com.badsite.com เมื่อพวกเขาอัปโหลดไฟล์ที่เป็นอันตรายที่มี URL เหมือนที่เรากล่าวไว้ข้างต้น ปลั๊กอินจะถูกหลอกให้เชื่อว่าไฟล์มาจากเว็บไซต์ที่ถูกต้อง และอนุญาตให้อัปโหลดไฟล์ที่เป็นอันตรายไปยังเซิร์ฟเวอร์ของเว็บไซต์ กระบวนการทั้งหมดนี้ในการรวมไฟล์ที่เป็นอันตรายจากภายนอกเซิร์ฟเวอร์เว็บไซต์โดยการใช้ประโยชน์จากช่องโหว่ในปลั๊กอินคือ Remote File Inclusion หลังจากที่ไฟล์ PHP ที่เป็นอันตรายถูกเก็บไว้ในเซิร์ฟเวอร์ของเว็บไซต์ แฮกเกอร์สามารถสื่อสารกับไฟล์ดังกล่าวเพื่อดำเนินการตามที่ต้องการได้
Arbitrary Code Execution Attack คืออะไร
ตอนนี้เรารู้แล้วว่า Remote และ Local File Inclusion คืออะไร มาต่อกันและลองทำความเข้าใจว่า Arbitrary Code Execution คืออะไร การรวมไฟล์และการรวมรหัสโดยพลการสัมพันธ์กัน ในกรณีใด ๆ ของ File Inclusion แฮกเกอร์มีเป้าหมายที่จะรันโค้ดตามอำเภอใจบนเว็บไซต์ กลับไปที่ตัวอย่างของ Local File Inclusion ที่แฮ็กเกอร์ได้อัปโหลด hack.php ในเว็บไซต์ของวิทยาลัยแล้วอัปโหลด control.php ด้วยความช่วยเหลือของ hack.php วลี Arbitrary Code Execution คือคำอธิบายความสามารถของแฮ็กเกอร์ในการดำเนินการคำสั่งใดๆ ที่เขาเลือกบนเว็บไซต์ที่ถูกแฮ็ก เมื่อไฟล์ PHP (hack.php และ control.php) อยู่บนเซิร์ฟเวอร์ของเว็บไซต์ แฮ็กเกอร์สามารถรันโค้ดใดก็ได้ตามต้องการ กระบวนการรันโค้ดจากไฟล์ที่เขาอัปโหลดนี้เรียกว่า Arbitrary Code Execution
การแฮ็กนั้นซับซ้อน ในโพสต์นี้ เราพยายามอธิบายให้เข้าใจง่าย แต่ถ้ามีส่วนที่ไม่สมเหตุสมผลสำหรับคุณ เราขอให้ผู้อ่านเขียนถึงเรา ในโพสต์ถัดไป เรากำลังพูดถึงการโจมตีแบบแฮ็คทั่วไปบนไซต์ WordPress ที่เรียกว่า Cross-Site Scripting (XSS) ลองดูสิ.