
ไขปริศนา Treaportal: ถอดรหัสช่องโหว่ สู่การควบคุมระบบเบ็ดเสร็จ
โลกของไซเบอร์ซีเคียวริตี้เต็มไปด้วยความท้าทายที่น่าตื่นเต้น การค้นหาและเจาะช่องโหว่ในระบบต่างๆ ไม่ใช่แค่การพิสูจน์ฝีมือ แต่ยังเป็นการเรียนรู้กลไกความปลอดภัยที่ซับซ้อน บทความนี้จะพาไปสำรวจเส้นทางของการค้นพบช่องโหว่ในระบบสมมติที่ชื่อว่า Treaportal ตั้งแต่การสำรวจเบื้องต้น ไปจนถึงการเข้าควบคุมระบบทั้งหมด
เริ่มต้นสำรวจ: แง้มประตูสู่ข้อมูล
เมื่อเผชิญหน้ากับระบบที่ไม่รู้จัก สิ่งแรกที่ต้องทำคือการสำรวจเบื้องต้น เครื่องมืออย่าง Nmap มีประโยชน์อย่างยิ่งในการสแกนหาพอร์ตที่เปิดอยู่ ทำให้รู้ว่าระบบกำลังให้บริการอะไรบ้าง ในกรณีของ Treaportal มีพอร์ต SSH (22) และ HTTP (80) ที่เปิดอยู่ ซึ่งบ่งชี้ว่ามีเว็บเซิร์ฟเวอร์ทำงานอยู่
การเข้าถึงหน้าเว็บมักจะเผยข้อมูลบางอย่าง หน้าแรกอาจเป็นหน้า Apache เริ่มต้น แต่การตรวจสอบไฟล์อย่าง robots.txt มักจะนำไปสู่เส้นทางที่ซ่อนอยู่ เช่นเดียวกับที่ Treaportal พบเส้นทาง /secret/ ที่ถูกซ่อนไว้ เมื่อเข้าไปดู ก็พบว่าเป็นแอปพลิเคชัน PHP สำหรับจัดการไฟล์
แอปพลิเคชันนี้ดูเหมือนจะอนุญาตให้ผู้ใช้งานอัปโหลดและเรียกดูไฟล์ที่เกี่ยวข้องกับต้นไม้ (treaportal) ซึ่งฟังดูไม่เป็นอันตราย แต่ในโลกของความปลอดภัยทางไซเบอร์ จุดที่มีการอัปโหลดไฟล์มักจะเป็นจุดแรกๆ ที่ผู้ไม่ประสงค์ดีให้ความสนใจ
ปลดล็อกด้วยการอัปโหลดไฟล์พิสดาร
ความท้าทายต่อไปคือการพยายามอัปโหลดไฟล์ที่เป็นอันตราย เช่น สคริปต์ PHP ที่สามารถรันคำสั่งบนเซิร์ฟเวอร์ได้ อย่างไรก็ตาม ระบบส่วนใหญ่มีการตรวจสอบประเภทไฟล์เพื่อป้องกันการอัปโหลดสคริปต์ที่เป็นอันตราย
แต่การตรวจสอบเหล่านี้มักมีช่องโหว่ หนึ่งในเทคนิคที่ใช้คือการสร้างไฟล์แบบ Polyglot หรือการปลอมแปลง Magic Bytes ของไฟล์
โดยการใส่ส่วนหัวของไฟล์รูปภาพ เช่น GIF89a; ไว้หน้าโค้ด PHP ที่เป็นอันตราย ระบบตรวจสอบไฟล์จะเข้าใจผิดว่าเป็นไฟล์รูปภาพ จึงอนุญาตให้อัปโหลดได้
แต่เมื่อไฟล์นี้ถูกเซิร์ฟเวอร์ประมวลผลในฐานะไฟล์ PHP เซิร์ฟเวอร์ก็จะรันโค้ด PHP ที่ซ่อนอยู่ สิ่งนี้นำไปสู่การเข้าถึงระบบแบบ Remote Code Execution (RCE) ทำให้สามารถสั่งการคอมพิวเตอร์จากระยะไกลได้ และเป็นก้าวแรกสู่การได้ Reverse Shell เพื่อควบคุมเครื่องเป้าหมาย
ยกระดับสิทธิ์: ไขกุญแจผู้ดูแลระบบ
เมื่อได้เข้าถึงระบบแล้ว เป้าหมายต่อไปคือการยกระดับสิทธิ์จากผู้ใช้งานทั่วไปไปเป็นผู้ดูแลระบบ (root) ซึ่งเรียกว่า Privilege Escalation
การสำรวจภายในระบบพบสคริปต์ Python ที่น่าสนใจชื่อ get_access_token.py ซึ่งเกี่ยวข้องกับการจัดการ JWT tokens
สคริปต์นี้มีหน้าที่อ่านและถอดรหัส JWT token โดยใช้ Secret Key ในการตรวจสอบความถูกต้อง แต่ที่สำคัญคือ Secret Key นี้ถูกฮาร์ดโค้ดไว้ในตัวสคริปต์เอง ทำให้สามารถเข้าถึงและนำไปใช้ได้
เมื่อมี Secret Key ก็สามารถสร้าง JWT token ปลอมขึ้นมาได้ โดยระบุว่าผู้ใช้งานเป็น “admin” และมีสิทธิ์ “is_admin: true” จากนั้นใช้สคริปต์ที่พบในการประมวลผล token ปลอมนี้ ซึ่งจะทำให้ได้รับสิทธิ์การเข้าถึงในระดับผู้ดูแลระบบของผู้ใช้
สู่จุดสูงสุด: ควบคุมระบบเบ็ดเสร็จ
แต่การยกระดับสิทธิ์ยังไม่หยุดแค่นั้น การค้นหาช่องโหว่เพิ่มเติมนำไปสู่สคริปต์ Python อีกตัวชื่อ lpe.py
สคริปต์นี้มีความอันตรายอย่างมาก เพราะมันถูกออกแบบมาให้รับชื่อไฟล์เป็นอาร์กิวเมนต์ แล้วนำเนื้อหาในไฟล์นั้นมา รันเป็นโค้ด Python โดยตรงโดยไม่ผ่านการตรวจสอบใดๆ
นี่คือช่องโหว่ Arbitrary Code Execution ที่สมบูรณ์แบบ เพียงแค่สร้างไฟล์ Python ที่มีโค้ดสำหรับเปิด Root Shell เช่น import os; os.system("/bin/bash") แล้วสั่งให้สคริปต์ lpe.py รันไฟล์นี้
ผลลัพธ์คือการได้สิทธิ์ Root Shell ซึ่งหมายถึงการควบคุมระบบ Treaportal ได้อย่างสมบูรณ์แบบในที่สุด
การเจาะระบบ Treaportal นี้แสดงให้เห็นว่าแม้แต่ช่องโหว่ที่ดูเหมือนง่ายก็สามารถนำไปสู่การควบคุมระบบทั้งหมดได้ เน้นย้ำถึงความสำคัญของการเขียนโค้ดที่ปลอดภัย การจัดการคีย์ลับอย่างรอบคอบ และการตรวจสอบความปลอดภัยของอินพุตจากผู้ใช้เสมอ