ถอดรหัสช่องโหว่: เส้นทางสู่การควบคุมระบบจากภายนอกสู่ภายใน

ถอดรหัสช่องโหว่: เส้นทางสู่การควบคุมระบบจากภายนอกสู่ภายใน

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

นี่คือกรณีศึกษาที่เผยให้เห็นว่า การประเมินความปลอดภัยอย่างละเอียดถี่ถ้วนนั้นสำคัญเพียงใด

เจาะเข้าสู่ระบบ: เมื่อรายงานสถานะกลายเป็นประตูสู่ภัยคุกคาม

เครื่องมืออย่าง sar2html ซึ่งใช้แสดงผลข้อมูล SAR (System Activity Report) บนเว็บ เป็นตัวอย่างที่น่าสนใจถึงความสะดวกสบายที่มาพร้อมกับความเสี่ยง

เครื่องมือเหล่านี้ช่วยให้ผู้ดูแลระบบตรวจสอบประสิทธิภาพได้ง่ายขึ้น

แต่ในบางครั้ง ความสะดวกสบายก็แลกมาด้วยช่องโหว่ที่ไม่คาดคิด

ในกรณีนี้ มีการค้นพบ CVE-2019-12454 ซึ่งเป็นช่องโหว่ที่เกี่ยวข้องกับการจัดการพารามิเตอร์ plot ใน sar2html

ปัญหาคือการ ตรวจสอบข้อมูลที่ป้อน ที่ไม่รัดกุมพอ

ทำให้ผู้โจมตีสามารถใช้เทคนิค Local File Inclusion (LFI) ได้สำเร็จ

ช่องโหว่ LFI นี้อนุญาตให้ผู้โจมตีอ่านไฟล์ใดๆ บนเซิร์ฟเวอร์ได้

ไม่ว่าจะเป็นไฟล์กำหนดค่าระบบที่สำคัญอย่าง /etc/passwd เพื่อดูรายชื่อผู้ใช้

หรือแม้กระทั่ง ไฟล์บันทึก (log file) ของเว็บเซิร์ฟเวอร์ Apache ซึ่งมักจะมีข้อมูลการเข้าชมทั้งหมด

จาก LFI ผู้โจมตีสามารถพัฒนาไปสู่ Remote Code Execution (RCE) ได้

โดยการ ฉีดโค้ดอันตราย เช่น โค้ด PHP ที่สามารถรันคำสั่งได้ เข้าไปในส่วนของ HTTP User-Agent ของคำขอ HTTP ซึ่งจะถูกบันทึกลงใน access log ของ Apache

จากนั้น ใช้ช่องโหว่ LFI เพื่อเรียกอ่านและประมวลผลไฟล์ log ที่เพิ่งเขียนไปนั้น

ทำให้โค้ด PHP ที่ฝังไว้ ถูกรันบนเซิร์ฟเวอร์ ในที่สุด

ผลลัพธ์คือ ผู้โจมตีได้รับ shell หรือเข้าถึงบรรทัดคำสั่งบนระบบในฐานะผู้ใช้งานทั่วไป (low-privileged user) ซึ่งเป็นก้าวแรกที่สำคัญ

ยกระดับสิทธิ์: การค้นหาจุดอ่อนในงานอัตโนมัติ

เมื่อได้รับสิทธิ์การเข้าถึงระดับผู้ใช้งานทั่วไปแล้ว เป้าหมายต่อไปคือการ ยกระดับสิทธิ์ (Privilege Escalation) เพื่อให้ได้สิทธิ์ผู้ดูแลระบบ หรือ root

การสำรวจระบบเพื่อหาจุดอ่อนเป็นสิ่งจำเป็น

หนึ่งในสิ่งที่มักเป็นเป้าหมายสำคัญคือ งานอัตโนมัติ ที่เรียกว่า Cron job

Cron job เป็นกลไกที่ใช้รันสคริปต์หรือคำสั่งต่างๆ ตามตารางเวลาที่กำหนดไว้ล่วงหน้า

สคริปต์เหล่านี้มักจะถูกตั้งค่าให้รันโดยผู้ใช้ที่มีสิทธิ์สูง เช่น root เพื่อทำงานบำรุงรักษาระบบ

ในกรณีศึกษาที่พบ มีการพบสคริปต์ชื่อ sar_script.sh ตั้งอยู่ในไดเรกทอรี /usr/local/bin/ และถูกตั้งค่าให้รันเป็น Cron job โดยผู้ใช้ root

แต่สิ่งที่เป็น จุดอ่อนสำคัญ คือ สคริปต์ sar_script.sh นี้ สามารถแก้ไขได้ โดยผู้ใช้งานทั่วไปที่เพิ่งเจาะเข้ามาได้

นี่คือโอกาสทองสำหรับผู้โจมตี

ผู้โจมตีสามารถแก้ไขไฟล์ sar_script.sh โดยการเพิ่มคำสั่งที่ต้องการให้รันในฐานะ root ลงไป

ตัวอย่างเช่น การเพิ่มผู้ใช้ใหม่พร้อมสิทธิ์ root, การเปลี่ยนรหัสผ่านของผู้ใช้ root หรือการเรียกใช้ reverse shell ที่จะส่ง shell กลับมายังเครื่องของผู้โจมตีในฐานะ root

เมื่อ Cron job ทำงานตามเวลาที่กำหนด คำสั่งที่แก้ไขไว้ใน sar_script.sh ก็จะถูกประมวลผลโดย root โดยอัตโนมัติ

ส่งผลให้ การเข้าถึงระบบในฐานะ root สำเร็จสมบูรณ์

บทเรียนจากกรณีศึกษานี้เน้นย้ำถึงความสำคัญของการ ตรวจสอบช่องโหว่ อย่างสม่ำเสมอ ทั้งในแอปพลิเคชันและเครื่องมือเสริมต่างๆ

การตั้งค่า สิทธิ์การเข้าถึงไฟล์ และโฟลเดอร์บนระบบปฏิบัติการต้องแม่นยำและรัดกุมเสมอ

นอกจากนี้ การทบทวน โค้ดของแอปพลิเคชัน และสคริปต์อัตโนมัติ เช่น Cron job ก็เป็นสิ่งที่ไม่ควรมองข้าม

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