
เจาะกล่องปริศนา Funbox: ไขปริศนาไซเบอร์แบบง่ายๆ
การผจญภัยในโลกของความปลอดภัยไซเบอร์ ไม่จำเป็นต้องซับซ้อนเสมอไป บางครั้งการเริ่มต้นจาก “กล่องปริศนา” (Capture The Flag หรือ CTF) ที่ออกแบบมาให้มือใหม่ได้ฝึกฝน ก็เป็นวิธีที่ยอดเยี่ยมในการเรียนรู้แนวคิดพื้นฐานของการ ทดสอบเจาะระบบ (Penetration Testing) บทความนี้จะพาไปสำรวจ Funbox2 ซึ่งเป็นหนึ่งในกล่องทดสอบที่ช่วยให้เข้าใจกระบวนการเจาะระบบแบบเป็นขั้นเป็นตอนได้ดี
สแกนหาช่องทางเข้า: สำรวจเบื้องต้น
ก้าวแรกของการเจาะระบบคือการ สำรวจข้อมูล (Reconnaissance) เพื่อค้นหาจุดอ่อนหรือช่องทางเข้า เริ่มต้นจากการใช้เครื่องมือ Nmap ซึ่งเป็นโปรแกรมยอดนิยมสำหรับการสแกนเครือข่าย เพื่อหาว่ามีพอร์ตอะไรเปิดอยู่บนเป้าหมายบ้าง
ผลลัพธ์จากการสแกนเผยให้เห็นพอร์ตสำคัญสามพอร์ต ได้แก่ พอร์ต 21 (บริการ FTP), พอร์ต 22 (บริการ SSH) และ พอร์ต 80 (บริการ HTTP/เว็บเซิร์ฟเวอร์) ข้อมูลเหล่านี้เป็นเหมือนแผนที่เบื้องต้นที่บอกว่ามีบริการอะไรบ้างที่ทำงานอยู่ และแต่ละบริการอาจเป็นประตูสู่ข้อมูลลับ
ล้วงข้อมูลจากเว็บและ FTP
เมื่อรู้ว่ามีพอร์ต 80 เปิดอยู่ ก็มุ่งความสนใจไปที่ เว็บไซต์ ที่ทำงานบนพอร์ตนี้ เริ่มต้นจากการลองเข้าชมหน้าเว็บ สังเกตข้อมูลที่แสดง และตรวจสอบ ซอร์สโค้ด (Source Code) ของหน้าเว็บ ซึ่งบางครั้งก็ซ่อนข้อมูลสำคัญไว้
นอกจากนี้ การตรวจสอบไฟล์อย่าง robots.txt มักจะช่วยให้พบเส้นทางของไดเรกทอรีที่ถูกซ่อนไว้ ในกรณีนี้ พบ /test.php ที่แสดงข้อความ “Hello World!” ซึ่งอาจไม่มีอะไรมาก แต่ก็เป็นร่องรอยเล็กๆ
เพื่อค้นหาไดเรกทอรีที่ซ่อนอยู่เพิ่มเติม เราใช้เครื่องมืออย่าง Gobuster (หรือ Dirb) ซึ่งจะช่วย คาดเดาชื่อไดเรกทอรีและไฟล์ (Directory Brute-forcing) บนเว็บเซิร์ฟเวอร์ ผลลัพธ์ที่ได้น่าสนใจมาก พบไดเรกทอรีอย่าง /uploads และที่สำคัญคือ /phpmyadmin ซึ่งเป็นหน้าจอจัดการฐานข้อมูลยอดนิยม
ไม่ลืมที่จะตรวจสอบ พอร์ต 21 (FTP) ด้วยการลองเข้าสู่ระบบแบบ ไม่ระบุตัวตน (Anonymous Login) ซึ่งทำได้สำเร็จ ภายในเซิร์ฟเวอร์ FTP พบไฟล์ชื่อ note.txt ที่เก็บข้อมูลสำคัญไว้ นั่นคือ คู่ชื่อผู้ใช้และรหัสผ่าน (Credentials) ได้แก่ funbox:funbox และ user:password
เจาะเข้าระบบและยกระดับสิทธิ์
ได้เวลาลองใช้คู่รหัสผ่านที่ได้มา! ลองใช้ user:password กับหน้าจอ phpMyAdmin ที่พบก่อนหน้านี้ ปรากฏว่า เข้าสู่ระบบได้สำเร็จ ภายใน phpMyAdmin พบฐานข้อมูลชื่อ cms ซึ่งมีตาราง users ที่น่าสนใจ
ในตาราง users มีข้อมูลของแอดมิน พร้อมกับ รหัสผ่านที่เข้ารหัส (Hashed Password) แบบ SHA1 ซึ่งเป็นรหัสที่ถูกแปลงให้เป็นชุดตัวอักษรที่ไม่สามารถอ่านได้โดยตรง คัดลอกรหัสนี้มา และใช้ เครื่องมือถอดรหัส (Hash Cracker) เพื่อถอดรหัสกลับมาเป็นรหัสผ่านจริง ผลลัพธ์ที่ได้คือ adminpass
เมื่อได้ทั้งชื่อผู้ใช้ admin และรหัสผ่าน adminpass แล้ว ลองใช้มันกับ พอร์ต 22 (SSH) เพื่อเข้าสู่ระบบ ซึ่งก็ สำเร็จ ทำให้ได้สิทธิ์ในการเข้าถึงเชลล์ในฐานะผู้ใช้ admin บนเครื่องเป้าหมาย
แต่เป้าหมายสุดท้ายคือการได้ สิทธิ์ root ซึ่งเป็นสิทธิ์สูงสุดบนระบบลินุกซ์ จึงตรวจสอบว่าผู้ใช้ admin มีสิทธิ์พิเศษอะไรบ้างด้วยคำสั่ง sudo -l และพบว่าผู้ใช้ admin สามารถรันคำสั่ง Python บางอย่างในฐานะ root ได้โดยไม่ต้องใช้รหัสผ่าน นี่คือช่องโหว่ที่สามารถใช้ประโยชน์ได้!
ด้วยการรันคำสั่ง Python พิเศษนี้ สามารถ ยกระดับสิทธิ์ (Privilege Escalation) ให้กลายเป็นผู้ใช้ root ได้สำเร็จ ทำให้เข้าถึงไฟล์สำคัญอย่าง root.txt ที่อยู่ในไดเรกทอรีของ root และ user.txt ที่อยู่ในไดเรกทอรีของผู้ใช้ admin ได้
บทเรียนจาก Funbox2
การเดินทางผ่าน Funbox2 แสดงให้เห็นว่าการเจาะระบบไม่ใช่แค่การใช้เครื่องมือซับซ้อนเท่านั้น แต่ยังรวมถึงการใช้ ตรรกะ การสำรวจอย่างละเอียด และการเชื่อมโยงข้อมูล ที่ได้ในแต่ละขั้นตอน การเข้าใจว่าข้อมูลเล็กๆ น้อยๆ สามารถนำไปสู่ความสำเร็จที่ยิ่งใหญ่ได้อย่างไร คือหัวใจสำคัญของการเป็นนักทดสอบเจาะระบบที่ดี