เจาะลึกปฏิบัติการ ‘เลื่อนขั้น’ ทะลวงระบบจากเว็บสู่รูท
ในโลกของการทดสอบเจาะระบบและไซเบอร์ซีเคียวริตี้ มีการจำลองสถานการณ์ต่างๆ เพื่อให้เราได้ฝึกฝนทักษะ หนึ่งในนั้นคือภารกิจที่ชื่อว่า “Operation Promotion” ซึ่งเปรียบเสมือนการจำลองการโจมตีระบบจริง ตั้งแต่การหาช่องโหว่บนเว็บไซต์ ไปจนถึงการยกระดับสิทธิ์ผู้ใช้งานจนเข้าถึงข้อมูลสูงสุดได้
การเริ่มต้นการบุกรุก มักจะเริ่มจากการสำรวจ ตรวจสอบระบบเป้าหมายให้ละเอียด เหมือนนักสืบที่ต้องหาเบาะแสแรก โดยทั่วไปแล้ว สิ่งที่ทำคือการสแกนพอร์ตเพื่อดูว่ามีบริการอะไรเปิดอยู่บ้าง และจากการสำรวจเบื้องต้น ก็พบว่าระบบมีพอร์ต 22 (SSH) และพอร์ต 80 (HTTP) ที่เปิดใช้งานอยู่ นี่บ่งบอกว่ามีบริการเว็บไซต์และบริการเข้าถึงระยะไกลรออยู่
เบาะแสจากหน้าเว็บและการสำรวจข้อมูล
เมื่อรู้ว่ามีเว็บไซต์ทำงานอยู่ ขั้นต่อไปคือการสำรวจโครงสร้างและเนื้อหาของเว็บไซต์ให้ละเอียด ด้วยเครื่องมือจำพวก gobuster หรือ dirbuster ที่ช่วยค้นหาไดเรกทอรีและไฟล์ที่ซ่อนอยู่บนเซิร์ฟเวอร์ จากการสำรวจพบว่ามีหน้าล็อกอิน และที่น่าสนใจคือมีไดเรกทอรีชื่อ /dev ซึ่งภายในมีไฟล์ notes.txt ซ่อนอยู่
ไฟล์ notes.txt นี้เป็นเหมือนขุมทรัพย์แรกที่นักเจาะระบบเฝ้ารอ มันเผยให้เห็นโค้ด SQL บางส่วนที่ใช้ในการตรวจสอบชื่อผู้ใช้และรหัสผ่าน โค้ดที่ว่านี้มีรูปแบบที่บอกใบ้ชัดเจนถึงช่องโหว่ที่เรียกว่า SQL Injection ซึ่งเป็นเทคนิคที่ผู้โจมตีสามารถแทรกโค้ด SQL ของตนเองเข้าไปในคำสั่งของฐานข้อมูลได้
เจาะระบบฐานข้อมูลด้วย SQL Injection
เมื่อรู้ว่าเว็บไซต์มีช่องโหว่ SQL Injection เป้าหมายต่อไปคือการดึงข้อมูลที่สำคัญออกมา ซึ่งในกรณีนี้คือชื่อผู้ใช้และรหัสผ่าน การใช้เพย์โหลด (payload) ที่เหมาะสม เช่น การใช้คำสั่ง UNION SELECT เพื่อรวมผลลัพธ์ของคิวรีของเราเข้ากับคิวรีของเว็บไซต์ ทำให้สามารถดึงข้อมูล username และ password ที่ถูกเข้ารหัสแบบ MD5 ออกมาได้
เมื่อได้รหัสผ่านที่เข้ารหัสมา สิ่งที่ต้องทำคือการถอดรหัส (crack) มันให้กลับมาเป็นรหัสผ่านแบบข้อความธรรมดา เครื่องมือออนไลน์หลายตัวสามารถช่วยถอดรหัส MD5 ที่ไม่ซับซ้อนได้ และจากการถอดรหัส พบว่ารหัสผ่านที่ได้คือ securepassword
การเข้าถึงระบบเบื้องต้นผ่าน SSH
เมื่อได้ชื่อผู้ใช้ admin และรหัสผ่าน securepassword แล้ว สิ่งที่ต้องลองทำเป็นอันดับแรกคือการเข้าสู่ระบบผ่านบริการ SSH ที่พบเปิดอยู่ตั้งแต่แรก และผลลัพธ์ก็เป็นไปตามคาด สามารถล็อกอินเข้าสู่ระบบได้สำเร็จในฐานะผู้ใช้ admin นี่คือการได้ “foot-hold” หรือการเข้าถึงระบบเบื้องต้น
การได้สิทธิ์ผู้ใช้ธรรมดา ยังไม่ใช่เป้าหมายสูงสุด เพราะเป้าหมายของการเจาะระบบคือการเข้าถึงสิทธิ์สูงสุด หรือที่เรียกว่า root การยกระดับสิทธิ์ หรือ Privilege Escalation จึงเป็นขั้นตอนต่อไป
ยกระดับสิทธิ์สู่ Root ด้วยช่องโหว่ SUID
การจะยกระดับสิทธิ์สู่ root นั้น มีหลายวิธี ในกรณีนี้ สิ่งที่ต้องมองหาคือโปรแกรมที่มีคุณสมบัติ SUID (Set User ID) ซึ่งหมายความว่าโปรแกรมนั้นจะรันด้วยสิทธิ์ของผู้เป็นเจ้าของไฟล์ ไม่ใช่ผู้ที่เรียกใช้งาน และหากเจ้าของไฟล์เป็น root โปรแกรมนั้นก็จะรันด้วยสิทธิ์ root
จากการค้นหาไฟล์ SUID ทั่วทั้งระบบ พบไฟล์ที่น่าสนใจคือ /usr/local/bin/promos เมื่อลองรันโปรแกรมนี้ มันจะขอให้เราใส่โปรโมโค้ด แต่สิ่งที่น่าสนใจคือวิธีที่โปรแกรมนี้ทำงาน การตรวจสอบเพิ่มเติมโดยใช้เครื่องมือเช่น strings หรือ ltrace พบว่าโปรแกรมนี้มีการเรียกใช้คำสั่งภายนอกโดยไม่ได้ระบุพาธ (path) เต็ม
นี่คือช่องโหว่ที่เรียกว่า PATH hijacking ผู้โจมตีสามารถสร้างไฟล์ปฏิบัติการปลอมขึ้นมา โดยตั้งชื่อให้เหมือนกับคำสั่งที่โปรแกรม /usr/local/bin/promos เรียกใช้ (เช่น echo) แล้วกำหนดให้ไฟล์ปลอมนั้นอยู่ในไดเรกทอรีที่เราควบคุมได้ จากนั้นก็แก้ไขตัวแปรสภาพแวดล้อม PATH ให้ไดเรกทอรีปลอมของเราถูกค้นหาก่อน เมื่อโปรแกรม promos ถูกเรียกใช้ มันก็จะไปรันไฟล์ปลอมของเราแทนที่จะเป็นคำสั่งจริง ทำให้เราสามารถสั่งให้มันรันคำสั่งใดๆ ด้วยสิทธิ์ root ได้
การใช้เทคนิคนี้เพื่อสร้าง shell ที่มีสิทธิ์ root ทำให้สามารถเข้าถึงไฟล์ root.txt และบรรลุเป้าหมายสูงสุดของภารกิจได้สำเร็จ
บทเรียนจากการเจาะระบบ
ภารกิจ “Operation Promotion” แสดงให้เห็นถึงเส้นทางการโจมตีที่สมจริง โดยเน้นย้ำถึงความสำคัญของการตรวจสอบความปลอดภัยของเว็บแอปพลิเคชัน การเข้ารหัสข้อมูลที่เหมาะสม และการจัดการสิทธิ์ผู้ใช้งานบนระบบปฏิบัติการ การทำความเข้าใจช่องโหว่เหล่านี้เป็นสิ่งสำคัญสำหรับทั้งนักเจาะระบบที่ต้องการฝึกฝน และผู้ดูแลระบบที่ต้องการสร้างเกราะป้องกันที่แข็งแกร่ง