การรวมไฟล์และการเรียกใช้รหัสโดยอำเภอใจคืออะไร - มัลแคร์
เผยแพร่แล้ว: 2023-04-13การรวมไฟล์และการใช้รหัสตามอำเภอใจ: เมื่อต้นเดือนนี้ เว็บไซต์ ตั๋ว เครื่องบิน ที่สร้างบน WordPress ถูกแฮ็ก ทำให้ข้อมูลส่วนบุคคลของผู้เยี่ยมชมหลายแสนคนถูกเปิดเผย ในโพสต์ก่อนหน้านี้เกี่ยวกับ สาเหตุที่แฮ็กเกอร์แฮ็ก เราได้กล่าวถึงสาเหตุทั้งหมดที่ทำให้แฮ็กเกอร์แฮ็ก รวมถึงการขโมยข้อมูล การส่งอีเมลสแปม พวกเขาอาจใช้เทคนิค SEO หมวกดำเพื่อจัดอันดับผลิตภัณฑ์ของตนเอง (แนะนำให้อ่าน – ฟาร์มาแฮ็ก) เป็นต้น
การเรียนรู้ว่าแฮ็กเกอร์แฮ็กเว็บไซต์เป็นกุญแจสำคัญในการป้องกันได้อย่างไร ซึ่งเป็นเหตุผลว่าทำไมเราจึงแสดงรายการ การโจมตีด้วยแฮ็กที่พบบ่อยที่สุด ที่เกิดขึ้นบนเว็บไซต์ WordPress ในบทความก่อนหน้านี้
เมื่อเราพูดถึงการโจมตีด้วยแฮ็กทั่วไป คุณมักจะนึกถึงการโจมตีด้วยกำลังดุร้าย แต่คุณรู้หรือไม่ว่าการรวมไฟล์และการใช้รหัสโดยอำเภอใจก็เป็นหนึ่งในการโจมตีทางแฮ็กที่พบบ่อยที่สุดที่เกิดขึ้นบนเว็บไซต์ WordPress ในโพสต์นี้ เราจะเจาะลึกลงไปในการโจมตีเหล่านี้ด้วยการทำความเข้าใจในรายละเอียด
เพื่อทำความเข้าใจว่าการโจมตีเหล่านี้ทำงานอย่างไร สิ่งแรกที่คุณต้องรู้ก็คือมันเกี่ยวข้องกับไฟล์ PHPคุณคงจะสงสัยว่าทำไม? เนื่องจากการโจมตีทั้งการรวมไฟล์และการใช้รหัสโดยอำเภอใจเกี่ยวข้องกับการใช้ไฟล์ PHP
แต่ไฟล์ PHP คืออะไร? ลองนึกถึงตู้ครัว ภายในตู้มีสิ่งของต่างๆ มากมาย เช่น น้ำตาล เกลือ เครื่องเทศ เครื่องใช้ ฯลฯ ซึ่งแต่ละอย่างมีจุดประสงค์เพื่อใช้ในครัวไฟล์ PHP เป็นตู้และรหัสภายในไฟล์เป็นรายการที่ช่วยให้สามารถดำเนินการฟังก์ชั่นบางอย่างที่แฮ็กเกอร์ต้องการนี่คือเหตุผลที่แฮ็กเกอร์ชอบอัปโหลดไฟล์ PHP มากกว่าไฟล์อื่นๆ เช่น ไฟล์ JPEG หรือ PDF ไฟล์ JPEG และ PDF ไม่สามารถดำเนินการได้ กล่าวคือ แฮ็กเกอร์ไม่สามารถใช้ไฟล์เหล่านี้เพื่อสั่งงานฟังก์ชันใดๆ ได้ หนึ่งสามารถอ่าน (เช่นดู) เท่านั้น ไม่สามารถใช้เพื่อทำการเปลี่ยนแปลงใดๆ กับไซต์ที่ถูกแฮ็ก
แฮ็กเกอร์ที่อัปโหลดไฟล์ PHP บนเซิร์ฟเวอร์เว็บไซต์ของคุณสามารถใช้ไฟล์นั้นทำอะไรก็ได้บนเว็บไซต์ของคุณ และนี่คือสาเหตุที่ไฟล์ PHP ถูกใช้เพื่อรันการโจมตี File Inclusion และ Arbitrary Code Execution
File Inclusion Attack คืออะไร?
วิธีที่ดีที่สุดในการทำความเข้าใจการโจมตีเว็บไซต์ที่ซับซ้อนเช่นนี้คือการจำลองสถานการณ์จริง สมมติว่าคุณเปิดเว็บไซต์สำหรับสถาบันของคุณและเรียกไซต์นั้นว่า 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 เส้นทางที่แฮ็กเกอร์สร้างขึ้นนั้นมีให้ทางออนไลน์และเซิร์ฟเวอร์ของเว็บไซต์วิทยาลัยควรจะสามารถอ่านได้ ดังนั้นแฮ็กเกอร์จึงสร้างเส้นทางและทำให้พร้อมใช้งานออนไลน์เพื่อให้เซิร์ฟเวอร์เว็บไซต์ของวิทยาลัยสามารถอ่านได้ จากนั้นเซิร์ฟเวอร์จะเริ่มรันโค้ดที่ได้มาจากเส้นทาง และเนื่องจากโค้ดถูกเขียนในลักษณะที่ทำให้แฮ็กเกอร์สามารถควบคุมไซต์ได้อย่างเต็มที่ ตอนนี้แฮ็คจึงควบคุมเว็บไซต์ของวิทยาลัย กระบวนการทำให้เซิร์ฟเวอร์อ่านไฟล์ระยะไกลนี้เรียกว่าการรวมไฟล์ระยะไกล

กรณีช่องโหว่ TimThumb เป็นตัวอย่างยอดนิยมของการรวมไฟล์ระยะไกล TimThumb เป็นปลั๊กอิน WordPress ที่อนุญาตให้แก้ไขรูปภาพบนไซต์ WordPress ได้อย่างง่ายดาย ช่วยให้ทุกคนสามารถใช้ภาพที่จัดหาจากเว็บไซต์แบ่งปันภาพเช่น imgur.com และ flickr.com TimThumb รู้จัก imgur เป็นไซต์ที่ถูกต้อง (หรืออยู่ในรายการที่อนุญาตพิเศษ) แฮ็กเกอร์ใช้ประโยชน์จากเกณฑ์นี้สร้างไฟล์ที่มี URL ที่กล่าวถึงไซต์ที่ถูกต้อง เช่น http://www.imgur.com.badsite.comเมื่อพวกเขาอัปโหลดไฟล์ที่เป็นอันตรายด้วย URL ที่เรากล่าวถึงข้างต้น ปลั๊กอินจะถูกหลอกให้เชื่อว่าไฟล์นั้นมาจากเว็บไซต์ที่ถูกต้องและอนุญาตให้อัปโหลดไฟล์ที่เป็นอันตรายไปยังเซิร์ฟเวอร์ของเว็บไซต์ กระบวนการทั้งหมดของการรวมไฟล์ที่เป็นอันตรายจากภายนอกเซิร์ฟเวอร์ของเว็บไซต์โดยการใช้ประโยชน์จากช่องโหว่ในปลั๊กอินคือการรวมไฟล์ระยะไกล หลังจากเก็บไฟล์ PHP ที่เป็นอันตรายไว้ในเซิร์ฟเวอร์ของเว็บไซต์แล้ว แฮ็กเกอร์สามารถสื่อสารกับไฟล์เพื่อดำเนินการตามที่ต้องการได้
การโจมตีโดยใช้รหัสตามอำเภอใจคืออะไร?
ตอนนี้เรารู้แล้วว่าการรวมไฟล์ระยะไกลและการรวมไฟล์ในเครื่องคืออะไร เรามาพยายามทำความเข้าใจว่าการเรียกใช้รหัสโดยอำเภอใจคืออะไร การรวมไฟล์และการรวมรหัสโดยอำเภอใจมีความสัมพันธ์ซึ่งกันและกัน ไม่ว่าในกรณีใดๆ ก็ตามของ 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) ลองดูสิ.