
ถอดรหัส Pyexp: ไขกลยุทธ์การเจาะระบบใน Proving Grounds Play เพื่อยกระดับทักษะด้านความปลอดภัย
การผจญภัยในโลกของการทดสอบเจาะระบบ หรือ Penetration Testing มักเริ่มต้นด้วยการสำรวจ และทำความเข้าใจเป้าหมายอย่างละเอียดลึกซึ้ง บทความนี้จะพาคุณไปรู้จักกับกลยุทธ์สำคัญในการเจาะระบบ โดยใช้เคสของ Pyexp ซึ่งเป็นเครื่องเป้าหมายที่น่าสนใจในการฝึกฝนทักษะด้าน OSCP (Offensive Security Certified Professional) ซึ่งเป็นใบรับรองที่ได้รับการยอมรับในอุตสาหกรรมความปลอดภัยทางไซเบอร์
การเรียนรู้จากสถานการณ์จริงเช่นนี้ จะช่วยให้เข้าใจกระบวนการคิดและเทคนิคที่จำเป็น เพื่อพิชิตระบบและยกระดับความสามารถในการป้องกันให้แข็งแกร่งยิ่งขึ้น
การสำรวจและค้นหาช่องทางเริ่มต้น
ในทุกปฏิบัติการ การเริ่มต้นที่สำคัญที่สุดคือการสำรวจ หรือ Reconnaissance การใช้เครื่องมืออย่าง Nmap เป็นสิ่งจำเป็น เพื่อสแกนหาพอร์ตที่เปิดอยู่และบริการที่กำลังทำงานบนเครื่องเป้าหมาย
จากการสแกน จะพบพอร์ตที่น่าสนใจ เช่น พอร์ต 80 ที่รันเว็บเซิร์ฟเวอร์พื้นฐาน และพอร์ต 8000 ที่กำลังรันบริการชื่อ pyexp ซึ่งเป็นจุดสนใจหลักของเรา พอร์ต 8000 นี้ไม่ได้เปิดหน้าเว็บทั่วไป แต่เป็นช่องทางสำหรับบริการที่ทำงานด้วย Python ซึ่งเป็นสัญญาณว่าอาจมีโอกาสในการโต้ตอบกับโค้ดโดยตรง
การทำความเข้าใจลักษณะของบริการที่ทำงานอยู่ จะช่วยให้วางแผนการโจมตีได้อย่างมีประสิทธิภาพ โดยเฉพาะเมื่อพบว่าบริการดังกล่าวเป็นแอปพลิเคชันที่พัฒนาขึ้นเอง
การเข้าถึงระบบเบื้องต้นผ่านช่องโหว่โค้ด
เมื่อเข้าสู่บริการ pyexp บนพอร์ต 8000 โดยใช้เครื่องมืออย่าง Netcat (nc) จะพบกับหน้าจอที่ขอข้อมูลผู้ใช้งานและรหัสผ่าน การลองใช้ข้อมูลประจำตัวพื้นฐานมักไม่สำเร็จ แต่การลองพิมพ์คำสั่ง help เป็นกลยุทธ์ที่ดีเสมอ ซึ่งจะเผยให้เห็นคำสั่งที่บริการนี้รองรับ ได้แก่ read, write, และ exec
คำสั่ง exec ถือเป็นช่องโหว่สำคัญ เนื่องจากมันยอมให้รันโค้ด Python ได้โดยตรง ซึ่งหมายถึงความสามารถในการเรียกใช้คำสั่งใดๆ บนระบบเป้าหมาย การทดลองง่ายๆ เช่น exec print("Hello World") สามารถยืนยันได้ว่าช่องโหว่นี้ทำงานจริง นี่คือจุดเริ่มต้นของการเข้าถึงระบบอย่างไม่ได้รับอนุญาต
เพื่อสร้างการเชื่อมต่อกลับมายังเครื่องของตนเอง หรือที่เรียกว่า Reverse Shell สามารถใช้โค้ด Python ที่ถูกออกแบบมาเพื่อสร้างการเชื่อมต่อย้อนกลับไปหาผู้โจมตี เพียงตั้งค่า Netcat listener บนเครื่องของผู้โจมตี แล้วส่งโค้ดดังกล่าวผ่านคำสั่ง exec ของบริการ pyexp การเชื่อมต่อจะถูกสร้างขึ้น ทำให้ได้รับสิทธิ์เป็นผู้ใช้งานระดับต่ำในระบบเป้าหมาย
การยกระดับสิทธิ์ (Privilege Escalation) สู่ผู้ดูแลระบบ
การได้มาซึ่งสิทธิ์ผู้ใช้งานระดับต่ำเป็นเพียงก้าวแรก เป้าหมายสูงสุดคือการเข้าถึงสิทธิ์ root หรือผู้ดูแลระบบ การตรวจสอบสิทธิ์ของผู้ใช้งานปัจจุบันโดยใช้คำสั่ง sudo -l เป็นสิ่งสำคัญ คำสั่งนี้จะแสดงรายการคำสั่งที่ผู้ใช้งานปัจจุบันได้รับอนุญาตให้รันด้วยสิทธิ์ sudo โดยไม่ต้องใส่รหัสผ่าน
ในกรณีนี้ พบว่าผู้ใช้งานได้รับอนุญาตให้รันไฟล์ /usr/bin/python3 /opt/backup.py ด้วยสิทธิ์ sudo โดยไม่มีรหัสผ่าน ซึ่งเป็นช่องทางสำคัญในการยกระดับสิทธิ์ เมื่อตรวจสอบไฟล์ backup.py จะพบว่าสคริปต์นี้ใช้คำสั่ง os.system เพื่อเรียกใช้โปรแกรม tar ซึ่งเป็นเครื่องมือสำหรับจัดการไฟล์บีบอัด
ช่องโหว่อยู่ที่การใช้งาน tar ที่สามารถถูกแทรกคำสั่งได้ (Command Injection) ผ่านอาร์กิวเมนต์ที่เฉพาะเจาะจง เช่น --checkpoint-action=exec=SHELL_COMMAND การใช้ช่องโหว่นี้ ร่วมกับการรัน backup.py ด้วยสิทธิ์ sudo ทำให้สามารถแทรกคำสั่ง Reverse Shell ที่จะเชื่อมต่อกลับมาในฐานะ root ได้สำเร็จ
จากนั้นก็จะสามารถสร้าง root shell ได้อย่างง่ายดาย ทำให้ควบคุมระบบได้โดยสมบูรณ์ และเข้าถึงข้อมูลสำคัญทั้งหมด รวมถึงไฟล์ธง (flag) ที่ยืนยันการพิชิตระบบ
บทเรียนจาก Pyexp เน้นย้ำความสำคัญของการค้นหาช่องโหว่ ไม่ว่าจะเป็นการรันโค้ดโดยตรง หรือการใช้ประโยชน์จากสิทธิ์การเข้าถึงที่ไม่เหมาะสม รวมถึงการรู้จักวิธีพลิกแพลงเครื่องมือพื้นฐานอย่าง tar เพื่อยกระดับสิทธิ์ สิ่งเหล่านี้คือหัวใจของการเป็นผู้เชี่ยวชาญด้านความปลอดภัยทางไซเบอร์ที่แท้จริง