
เจาะลึก Directory Traversal: เมื่อเว็บเปิดช่องให้แฮกเกอร์อ่านไฟล์ลับ
เคยสงสัยหรือไม่ว่าข้อมูลสำคัญบนเซิร์ฟเวอร์เว็บไซต์ ไม่ว่าจะเป็นรหัสผ่าน ไฟล์การตั้งค่า หรือแม้แต่ข้อมูลผู้ใช้งาน สามารถถูกขโมยไปได้อย่างไร หนึ่งในเทคนิคที่ผู้ไม่หวังดีนิยมใช้ คือการโจมตีที่เรียกว่า Directory Traversal หรือที่บางครั้งเรียกว่า Path Traversal ซึ่งเป็นช่องโหว่ที่อันตรายและแฝงตัวอยู่ในเว็บไซต์จำนวนมาก
Directory Traversal คืออะไร?
เว็บไซต์มักมีระบบให้ผู้ใช้ดาวน์โหลดไฟล์ เช่น เอกสารหรือรูปภาพ โดยไฟล์เหล่านี้จะอยู่ในโฟลเดอร์ที่กำหนดไว้ และผู้ใช้ก็ควรเข้าถึงได้แค่ในขอบเขตนั้น
แต่ด้วยช่องโหว่ Directory Traversal ผู้โจมตีจะ “หลอก” เซิร์ฟเวอร์ให้เปิดเผยไฟล์ที่อยู่นอกโฟลเดอร์ที่ได้รับอนุญาตได้ คล้ายกับการเจอทางลัดทะลุไปห้องเก็บของลับ
กลไกการโจมตีทำงานอย่างไร?
หัวใจของการโจมตีนี้คือการใช้สัญลักษณ์พิเศษ ../ หรือรูปแบบที่ถูกเข้ารหัสอย่าง ..%2f ซึ่งในระบบปฏิบัติการทั่วไปมีความหมายว่า “ย้อนกลับไปยังไดเรกทอรีแม่” หรือ “ขึ้นไปหนึ่งระดับ” ผู้โจมตีจะป้อนสตริงเหล่านี้เข้าไปในช่องรับข้อมูลของเว็บไซต์ เช่น ใน URL หรือช่องอัปโหลดไฟล์ เพื่อหลอกให้เซิร์ฟเวอร์คิดว่ากำลังเข้าถึงไฟล์ที่ถูกต้อง แต่แท้จริงแล้วกำลังปีนออกไปจากขอบเขตที่ควรจะเป็น
ยกตัวอย่างเช่น ถ้าเว็บไซต์มีฟังก์ชันที่ใช้ URL แบบ www.example.com/download?file=photo.jpg ผู้โจมตีอาจเปลี่ยนเป็น www.example.com/download?file=../../../../etc/passwd เพื่อพยายามเข้าถึงไฟล์ /etc/passwd ซึ่งเป็นไฟล์ที่เก็บข้อมูลผู้ใช้งานของระบบปฏิบัติการ Linux ที่อยู่ห่างออกไปหลายระดับชั้นจากโฟลเดอร์ที่อนุญาต
ไฟล์ที่มักตกเป็นเป้าหมาย
ไฟล์ที่มักตกเป็นเป้าหมาย คือ ไฟล์ระบบ เช่น /etc/passwd ใน Linux, ไฟล์คอนฟิกูเรชัน ที่มีรหัสผ่านฐานข้อมูล, Source code ของแอปพลิเคชัน หรือแม้แต่ ข้อมูลส่วนตัว ของผู้ใช้งาน
การป้องกัน Directory Traversal ที่ได้ผล
การป้องกันช่องโหว่นี้ไม่ใช่เรื่องยาก หากเข้าใจหลักการพื้นฐาน
การตรวจสอบและกรองข้อมูล (Input Validation)
แนวทางสำคัญที่สุดคือ ห้ามเชื่อถือข้อมูลจากผู้ใช้งาน ควรตรวจสอบและกรองอย่างเข้มงวด เช่น:
- กรองอักขระพิเศษ โดยเฉพาะ
.และ/ - ใช้ Whitelist อนุญาตเฉพาะชื่อไฟล์หรือพาธที่ระบุไว้เท่านั้น
- แปลงชื่อไฟล์ ให้ปลอดภัย หรือใช้ ID อ้างอิงแทน
จำกัดสิทธิ์การเข้าถึง (Least Privilege Principle)
ยึดหลัก Least Privilege Principle คือการให้สิทธิ์เข้าถึงไฟล์และไดเรกทอรีแก่แอปพลิเคชันและผู้ใช้เท่าที่จำเป็น ไม่ควรมอบสิทธิ์อ่าน/เขียนไฟล์ระบบแก่ Web Server Process หากไม่จำเป็น และควรแยกไฟล์ที่ผู้ใช้เข้าถึงได้ออกจากโครงสร้างระบบ
อัปเดตและแพตช์ (Regular Updates)
ซอฟต์แวร์ เฟรมเวิร์ก หรือ Library ที่ใช้งาน อาจมีช่องโหว่ที่ไม่ถูกค้นพบ ควรติดตามข่าวสารและอัปเดตระบบอยู่เสมอ เพื่อให้มั่นใจว่าใช้เวอร์ชันที่ปลอดภัยที่สุด
แนวคิดสุดท้าย
ช่องโหว่ Directory Traversal ย้ำถึงความสำคัญของการตรวจสอบข้อมูลผู้ใช้งานและความเข้าใจด้านความปลอดภัย การตระหนักรู้และใช้มาตรการป้องกันที่เหมาะสม จะช่วยให้เว็บไซต์แข็งแกร่งและปลอดภัยจากผู้ไม่หวังดี