เจาะช่องโหว่เว็บ: ถอดรหัสการเข้าถึงไฟล์อันตรายด้วยเทคนิคเหนือชั้น

เจาะช่องโหว่เว็บ: ถอดรหัสการเข้าถึงไฟล์อันตรายด้วยเทคนิคเหนือชั้น

โลกไซเบอร์เต็มไปด้วยความท้าทาย เว็บไซต์ที่เราใช้งานกันอยู่ทุกวันอาจมีช่องโหว่ซ่อนอยู่โดยไม่รู้ตัว หนึ่งในช่องโหว่ที่อันตรายและแฮกเกอร์นิยมใช้คือ การเข้าถึงไฟล์ภายใน (Local File Inclusion หรือ LFI) ซึ่งเป็นเหมือนประตูหลังที่เปิดทางให้ผู้ไม่หวังดีเข้ามาล้วงความลับหรือแม้แต่ควบคุมระบบได้เลยทีเดียว

เข้าใจ LFI: ประตูหลังสู่ข้อมูลลับ

Local File Inclusion (LFI) คือช่องโหว่ที่เกิดขึ้นเมื่อเว็บแอปพลิเคชันเปิดโอกาสให้ผู้ใช้งานสามารถระบุเส้นทางของไฟล์ที่จะนำมาแสดงผลได้โดยตรง ลองนึกภาพว่าเว็บไซต์หนึ่งมีฟังก์ชันที่ให้เราดูรูปภาพหรือเอกสารต่างๆ โดย URL อาจมีลักษณะประมาณนี้ http://example.com/view.php?file=image.jpg หากเว็บไซต์นั้นไม่ได้มีการตรวจสอบพารามิเตอร์ file อย่างรัดกุม ผู้โจมตีก็อาจจะลองเปลี่ยน image.jpg เป็นไฟล์ระบบที่สำคัญอย่าง /etc/passwd เพื่อดูข้อมูลผู้ใช้งาน หรือแม้แต่ index.php ของเว็บไซต์เอง

เป้าหมายหลักของแฮกเกอร์ที่ใช้ LFI คือการอ่านไฟล์ที่มีข้อมูลอ่อนไหว ไม่ว่าจะเป็นรหัสผ่าน ไฟล์การกำหนดค่าระบบ หรือแม้กระทั่ง source code ของเว็บแอปพลิเคชันนั้นๆ ซึ่งข้อมูลเหล่านี้สามารถนำไปต่อยอดเพื่อโจมตีในระดับที่รุนแรงขึ้นได้อีก

เมื่อการป้องกันทำงาน: ต้องมีกลยุทธ์เหนือชั้น

แน่นอนว่าผู้พัฒนาเว็บไซต์ส่วนใหญ่ย่อมตระหนักถึงภัยของ LFI จึงมีการติดตั้ง Web Application Firewall (WAF) หรือเขียนโค้ดป้องกันเพื่อกรองคำสั่งอันตราย เช่น การบล็อกคำว่า ../ หรือ ../../ ที่มักใช้ในการข้าม Directory เพื่อเข้าถึงไฟล์ระบบ

แต่แฮกเกอร์ก็ไม่ย่อท้อ พวกเขามักจะหาวิธีหลบเลี่ยงการกรองเหล่านี้ ตัวอย่างเช่น แทนที่จะใช้ ../../../../etc/passwd ตรงๆ อาจมีการเข้ารหัส (encoding) เส้นทางไฟล์เพื่อให้ระบบป้องกันตรวจจับไม่ได้

ถอดรหัสการหลบเลี่ยง: เทคนิค Double URL Encoding

หนึ่งในเทคนิคที่ใช้ได้ผลดีคือ การเข้ารหัส URL สองชั้น (Double URL Encoding) โดยปกติแล้วเมื่อเราพิมพ์อักขระพิเศษใน URL เบราว์เซอร์จะทำการเข้ารหัสครั้งแรก เช่น / จะกลายเป็น %2F

หากระบบกรองคำสั่งดักจับ ../ หรือ %2F ที่ถูกเข้ารหัสมาเพียงชั้นเดียว การเข้ารหัสอีกครั้งจะทำให้ระบบมองเห็นเป็นข้อมูลที่แตกต่างออกไป

เช่น %2F หากถูกเข้ารหัสอีกครั้ง จะกลายเป็น %252F

ดังนั้น แทนที่จะใช้ ../../../../etc/passwd แฮกเกอร์จะลองใช้ ..%252F..%252F..%252F..%252Fetc%252Fpasswd ซึ่งเมื่อข้อมูลนี้ถูกส่งไปยังเซิร์ฟเวอร์ WAF อาจจะมองไม่เห็นรูปแบบ ../ ที่คุ้นเคย ทำให้คำขอเล็ดลอดไปได้ และเมื่อถึงเว็บแอปพลิเคชัน ตัวแอปพลิเคชันจะถอดรหัส (decode) สองครั้ง ทำให้ได้เส้นทางไฟล์ที่ถูกต้องกลับคืนมา

การตามล่าหา Flag: จากข้อมูลระบบสู่เป้าหมายสุดท้าย

เมื่อเจาะผ่านระบบป้องกันด้วยเทคนิค Double URL Encoding ได้แล้ว ผู้โจมตีมักจะเริ่มต้นด้วยการทดสอบเข้าถึงไฟล์ระบบมาตรฐาน เช่น /etc/passwd บนระบบปฏิบัติการ Linux เพื่อยืนยันว่าช่องโหว่นั้นใช้งานได้จริง การได้เห็นเนื้อหาของไฟล์ /etc/passwd เป็นสัญญาณที่ดีว่าการโจมตีประสบความสำเร็จ

หลังจากนั้น เป้าหมายต่อไปคือการค้นหาไฟล์สำคัญอื่นๆ ที่อาจซ่อนอยู่ เช่น ไฟล์ที่มีคำว่า “flag” หรือข้อมูลที่บ่งบอกถึงความสำเร็จของการเจาะระบบ ซึ่งมักจะอยู่ในตำแหน่งที่ไม่คาดคิด หรือใน Directory ที่ผู้ดูแลระบบอาจเผลอทิ้งไว้ การใช้ความรู้เกี่ยวกับโครงสร้างไฟล์ระบบและการลองผิดลองถูกเป็นสิ่งสำคัญในการค้นหาเป้าหมายสุดท้าย

การทำความเข้าใจช่องโหว่ LFI และเทคนิคการหลบเลี่ยงต่างๆ ไม่ได้มีไว้เพื่อโจมตี แต่เพื่อเสริมสร้างความเข้าใจในการป้องกันภัยคุกคามทางไซเบอร์ การพัฒนาเว็บไซต์ที่ปลอดภัยจึงควรมีการตรวจสอบ input อย่างเข้มงวด และใช้มาตรการป้องกันหลายชั้น เพื่อไม่ให้ผู้ไม่หวังดีสามารถเข้าถึงข้อมูลอันตรายได้อย่างง่ายดาย