Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> HTML

การรวมไฟล์และการดำเนินการโค้ดโดยพลการคืออะไร

การรวมไฟล์และการใช้รหัสโดยพลการ: เมื่อต้นเดือนนี้ เว็บไซต์ตั๋วเครื่องบินที่สร้างบน 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 รู้ว่าไฟล์ที่อัพโหลดไปอยู่ที่ไหน

การรวมไฟล์และการดำเนินการโค้ดโดยพลการคืออะไร
การอัปโหลดใดๆ ที่ไม่ใช่ธีมหรือ ปลั๊กอินถูกเก็บไว้ในโฟลเดอร์อัปโหลด ใครก็ตามที่รู้โครงสร้างของ WordPress จะรู้ว่าสามารถหาโฟลเดอร์อัพโหลดได้ที่ไหน สำหรับผู้ที่ไม่ทราบ นี่คือตำแหน่งของโฟลเดอร์อัปโหลด เปิดตัวจัดการไฟล์จาก cPanel ของเว็บโฮสติ้ง จากนั้นไปที่ Public_html> wp-content> uploads.

ไฟล์ทำหน้าที่เหมือนประตูที่ทำให้แฮ็กเกอร์สามารถโต้ตอบกับไฟล์จากระยะไกลได้ โปรดทราบว่าแฮ็กเกอร์ยังคงไม่สามารถควบคุมไซต์ได้ พวกเขาเพียงแค่มีหน้าต่างสำหรับการสื่อสาร เพื่อให้เข้าใจง่ายขึ้น ลองจินตนาการว่าคน 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 เกิดขึ้นได้อย่างไร

กรณีช่องโหว่ของ 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) ลองดูสิ.