เพื่ออำนวยความสะดวกแก่สมาชิกหรือสมาชิกในการอัพโหลดภาพยนตร์หรือแลกเปลี่ยนไฟล์ เว็บไซต์ภาพยนตร์ กระดานสนทนา หรือสถาบันอื่น ๆ จำนวนมากอนุญาตให้ผู้ใช้อัพโหลดไฟล์ได้ เพราะเฉพาะในกรณีที่ได้รับอนุญาตเท่านั้น ผู้ใช้สามารถอัพโหลดไฟล์ได้ แต่การอนุญาตนี้จำกัดเฉพาะเซิร์ฟเวอร์ FTP ที่ อนุญาตให้อัปโหลดเบรกพอยต์อีกครั้ง อาจทำให้เกิดปัญหาใหญ่ได้
โปรแกรมเซิร์ฟเวอร์ FTP ที่อนุญาตให้ส่งซ้ำหลังจากเบรกพอยต์จะต้องรองรับคำสั่ง "Rest" หากใช้คำสั่งนี้ก่อนคำสั่งอัพโหลด (คำสั่งส่ง) มันจะบอกเซิร์ฟเวอร์ FTP ว่าไฟล์ที่ฉันต้องการอัปโหลดจะมีอยู่จากเซิร์ฟเวอร์ FTP เพื่อเริ่มเขียนในไฟล์นั้น
ตัวอย่าง:
สมมติว่ามีไฟล์ Readme.txt ในเซิร์ฟเวอร์ ftp ขนาดไฟล์คือ 1,000 ไบต์ เชื่อมต่อกับเซิร์ฟเวอร์ ftp นี้ (สมมติว่าฉันมีสิทธิ์ในการเขียน เซิร์ฟเวอร์ ftp รองรับการส่งสัญญาณเบรกพอยต์อีกครั้ง) . ไฟล์มีขนาด 500 ไบต์ โอเค ฉันเริ่มทำสิ่งที่ไม่ดี
1. เชื่อมต่อกับเซิร์ฟเวอร์ ftp นี้ (ใช้ ftp://ftp.exe/ ที่มาพร้อมกับระบบ อาจไม่สามารถใช้งานได้บนอินทราเน็ตเนื่องจาก ftp://ftp.exe/ ใช้โหมดพอร์ต)
2. dir (ตรวจสอบขนาดของ Readme.txt และยืนยันว่าเป็น 1,000 ไบต์)
3. quote rest 1000 (บอก ftp server ว่าไฟล์ที่อยากโอนเริ่มจากตำแหน่งไฟล์ 1000)
4. ส่ง Readme.txt
5. dir (ตรวจสอบขนาดของ Readme.txt อีกครั้ง ตอนนี้ Readme.txt กลายเป็น 1500 ไบต์แล้ว)
เหตุใด Readme.txt จึงมีขนาดใหญ่ขึ้น ง่ายมาก เนื่องจาก Readme.txt ในเครื่องของฉันขนาด 500 ไบต์ได้รับการอัปโหลดและเขียนลงในไฟล์ Readme.txt ขนาด 1,000 ไบต์ที่มีอยู่ในเซิร์ฟเวอร์ ftp ปัญหาเกิดขึ้นกับคำสั่งที่สอง หากไม่มีคำสั่งที่สอง คำสั่งที่สี่ของฉัน (ส่ง Readme.txt) จะได้รับข้อผิดพลาด Permission Deny คำสั่งที่สองสำหรับการดำเนินการเบรกพอยต์และการส่งสัญญาณซ้ำ เซิร์ฟเวอร์ ftp จะคิดว่าเรากำลังดำเนินการเขียนทับไฟล์ต้นฉบับ (การดำเนินการเขียนทับไฟล์ต้นฉบับต้องได้รับอนุญาตเพิ่มเติม)
อย่างที่กล่าวไปแล้ว ทุกคนควรเข้าใจความหมายของหัวข้อนี้ ด้วยการดำเนินการที่ง่ายมาก ผู้ใช้ที่มีสิทธิ์ในการเขียนสามารถแก้ไขไฟล์ที่อัปโหลดโดยผู้ใช้รายอื่นได้ การทำเช่นนี้เพียงอย่างเดียวจะสร้างช่องโหว่ด้านความปลอดภัยขนาดใหญ่ หากไฟล์ที่อัปโหลดเป็นไฟล์สำคัญ การแก้ไขแบบสุ่มสามารถทำลายไฟล์ได้อย่างสมบูรณ์ หากเป็นไฟล์ปฏิบัติการหรือไฟล์ zip หรือ rar บางไฟล์ คนบ้าอัจฉริยะที่คุ้นเคยกับโครงสร้างไฟล์ต่างๆ จะเพิ่มโค้ดที่เป็นอันตรายลงในไฟล์เหล่านั้นหรือไม่ ทำให้ระบบของผู้ดำเนินการเสียหายหรือรันโค้ดลับๆ หรือสิ่งอื่นๆ เนื่องจากฉันไม่คุ้นเคยกับโครงสร้างของไฟล์เหล่านี้ ฉันจึงบอกเพียงว่านี่เป็นตัวเลขที่ไม่รู้จัก
แต่ในโลกคอมพิวเตอร์ สิ่งที่เป็นไปไม่ได้หลายอย่างก็เกิดขึ้นได้ในที่สุด ดังนั้นฉันจึงไม่สามารถสรุปขั้นสุดท้ายได้ แต่ความจริงที่ว่ามันสามารถสร้างความเสียหายให้กับไฟล์ได้นั้นถือเป็นการทำลายล้างอย่างมาก ลองนึกถึงไฟล์ภาพยนตร์และโทรทัศน์ขนาด 500M โดยทั่วไปแล้วทุกคนจะบอกว่าไม่ใช่ไฟล์วิดีโอที่ถูกกฎหมายและไม่สามารถเล่นได้ เป็นต้น ส่วนไฟล์ zip, rar และไฟล์อื่นๆ winzip หรือ winrar จะบอกว่าไฟล์บีบอัดได้รับความเสียหาย รหัสตรวจสอบ crc ไม่ถูกต้อง เป็นต้น
ปัญหานี้มีอยู่เฉพาะในบริการ FTP ที่อนุญาตให้ส่งซ้ำหลังจากเบรกพอยต์ แต่ตอนนี้ 90% ของโปรแกรมบริการ FTP อนุญาตให้ส่งซ้ำหลังจากเบรกพอยต์ ดังนั้นปัญหานี้จะมีอยู่ในเซิร์ฟเวอร์ FTP ทั่วไป
วิธีการป้องกัน:
หากคุณต้องให้สิทธิ์แก่ผู้ใช้ในการอัปโหลด วิธีที่ดีที่สุดในการป้องกันคือการสร้างไดเร็กทอรีสำหรับผู้ใช้แต่ละรายและล็อกสิทธิ์ของผู้ใช้นั้นในไดเร็กทอรีนี้โดยสมบูรณ์ จากนั้นผู้ใช้จะไม่ได้รับอนุญาตให้ดูไดเร็กทอรีของผู้ใช้รายอื่น ซึ่งหมายความว่า ไม่สามารถทำให้เกิดความเสียหายดังกล่าวข้างต้นได้
สิ่งที่กล่าวมาข้างต้นได้รับการทดสอบใน Serv-U V4.0 และแพลตฟอร์มทดสอบคือ Win 2K Server หากโปรแกรมบริการ ftp อื่นไม่มีปัญหานี้ ถือว่าอยู่นอกเหนือขอบเขตของบทความนี้ ในปัจจุบันนี้ เมื่อตั้งค่าเซิร์ฟเวอร์ ftp ในระบบ Windows Serv-U ถือเป็นเซิร์ฟเวอร์ที่นิยมใช้กันมากที่สุด ดังนั้นผู้ดูแลระบบจึงควรให้ความสำคัญมากขึ้น บทความนี้ไม่ได้สอนให้คนทำสิ่งเลวร้าย หากคุณใช้วิธีนี้ทำลายไฟล์บนเซิร์ฟเวอร์ ftp คนเดียวที่รับผิดชอบคือคุณ อ้างประโยคจากนวนิยายของ Gu Long: "ตัวมีดไม่มีอะไรผิดปกติ แต่การถือมีดนั้นผิด"