
เจาะลึก Ghostcat: ช่องโหว่ Apache Tomcat ที่อาจพาผู้บุกรุกเข้ายึดระบบ
Ghostcat คืออะไร: ช่องโหว่ร้ายแรงใน Apache Tomcat
เมื่อพูดถึง Apache Tomcat หลายคนอาจนึกถึงเว็บเซิร์ฟเวอร์แอปพลิเคชันยอดนิยมที่ใช้ในการรันเว็บไซต์และบริการมากมาย แต่รู้หรือไม่ว่ามีช่องโหว่ร้ายแรงตัวหนึ่งชื่อว่า Ghostcat หรือ CVE-2020-1938 ที่เคยสร้างความปั่นป่วนอย่างมาก
ช่องโหว่นี้ซ่อนตัวอยู่ในส่วนประกอบที่เรียกว่า AJP connector ซึ่งหากถูกเปิดใช้งานและไม่ได้ตั้งค่าอย่างรัดกุม ผู้โจมตีสามารถใช้ประโยชน์จากมันเพื่ออ่านไฟล์สำคัญในระบบ และบางครั้งอาจนำไปสู่การควบคุมเซิร์ฟเวอร์ได้อย่างสมบูรณ์
Ghostcat เป็นการเตือนให้เห็นถึงความสำคัญของการตั้งค่าความปลอดภัยที่ละเอียดอ่อนบนเว็บเซิร์ฟเวอร์ของเรา
กลไกการโจมตี: AJP Connector ตัวร้าย
หัวใจของการโจมตี Ghostcat อยู่ที่ AJP connector ซึ่งโดยปกติจะใช้สำหรับการสื่อสารระหว่างเว็บเซิร์ฟเวอร์อย่าง Apache HTTP Server กับ Apache Tomcat บน พอร์ต 8009
ถ้าพอร์ตนี้ถูกเปิดเผยสู่ภายนอก หรือไม่ได้จำกัดการเข้าถึงให้เฉพาะภายในเครื่อง ผู้บุกรุกสามารถส่งคำขอ AJP ที่ออกแบบมาเป็นพิเศษ เพื่อหลอกให้ Tomcat เปิดเผยเนื้อหาของไฟล์ใดๆ ก็ตามที่อยู่ในไดเรกทอรีของเว็บแอปพลิเคชันได้
ลองนึกภาพว่าข้อมูลการตั้งค่าหรือข้อมูลรับรองต่างๆ ที่เก็บไว้ในไฟล์เหล่านี้จะตกไปอยู่ในมือผู้ไม่ประสงค์ดีได้อย่างง่ายดาย
นี่คือจุดเริ่มต้นของการบุกรุกที่อาจขยายผลไปได้อีกหลายขั้นตอน
เจาะลึกขั้นตอนการโจมตีจากต้นจนจบ
การโจมตีเริ่มต้นจากการที่ผู้บุกรุกสแกนหาเป้าหมายที่มี AJP connector ทำงานอยู่บน พอร์ต 8009
เมื่อพบช่องทาง พวกเขาจะใช้เครื่องมือเฉพาะเพื่อส่งคำขอ AJP ไปยังเซิร์ฟเวอร์ จากนั้นช่องโหว่ Ghostcat จะช่วยให้สามารถอ่านไฟล์ต่างๆ ได้ เช่น web.xml ซึ่งมักจะเก็บข้อมูลการตั้งค่าของเว็บแอปพลิเคชัน หรือแม้กระทั่ง tomcat-users.xml ที่เก็บชื่อผู้ใช้และรหัสผ่านสำหรับเข้าสู่ระบบ Tomcat Manager
เมื่อได้ข้อมูลรับรองมาแล้ว ผู้บุกรุกจะสามารถเข้าสู่ระบบ Tomcat Manager ซึ่งเป็นหน้าต่างสำหรับจัดการแอปพลิเคชันบน Tomcat
ขั้นตอนต่อไปคือการอัปโหลดไฟล์ที่เป็นอันตราย โดยส่วนใหญ่จะอยู่ในรูปแบบของ WAR ไฟล์ ที่ถูกออกแบบมาให้มี webshell หรือโค้ดประสงค์ร้ายซ่อนอยู่ภายใน
การอัปโหลดและติดตั้ง WAR ไฟล์ นี้ทำให้ผู้โจมตีสามารถสั่งรันคำสั่งต่างๆ บนเซิร์ฟเวอร์ได้ นี่คือสิ่งที่เรียกว่า Remote Code Execution (RCE) ซึ่งหมายถึงการควบคุมเซิร์ฟเวอร์จากระยะไกลอย่างสมบูรณ์
หลังจากได้ RCE แล้ว ขั้นตอนสุดท้ายคือ การยกระดับสิทธิ์ หรือ Privilege Escalation เพื่อให้ได้สิทธิ์สูงสุดในระบบ เช่น สิทธิ์ของ root ทำให้ผู้บุกรุกสามารถทำอะไรก็ได้กับเซิร์ฟเวอร์นั้นๆ
การป้องกันและรับมือ: ปกป้องเซิร์ฟเวอร์ของคุณ
เพื่อป้องกันไม่ให้เซิร์ฟเวอร์ของคุณตกเป็นเหยื่อของ Ghostcat สิ่งแรกที่ควรทำคือ อัปเดต Apache Tomcat ให้เป็นเวอร์ชันล่าสุดที่ได้รับการแก้ไขช่องโหว่นี้แล้ว
หากไม่ได้ใช้งาน AJP connector ควรพิจารณา ปิดใช้งาน มันไปเลย
แต่ถ้าจำเป็นต้องใช้ ควรจำกัดการเข้าถึงอย่างเคร่งครัด เช่น กำหนดให้ AJP connector ผูกกับ IP แอดเดรสของเครื่องตัวเอง (localhost) เท่านั้น และใช้ ไฟร์วอลล์ เพื่อบล็อกการเชื่อมต่อจากภายนอกมายัง พอร์ต 8009
การตรวจสอบการตั้งค่าความปลอดภัยของเซิร์ฟเวอร์อย่างสม่ำเสมอ และหมั่นอัปเดตความรู้เกี่ยวกับภัยคุกคามใหม่ๆ อยู่เสมอ เป็นสิ่งสำคัญที่ไม่ควรมองข้าม เพื่อให้ระบบของคุณปลอดภัยจากผู้ไม่หวังดี