วันอังคารที่ 29 พฤษภาคม พ.ศ. 2550

ว่าด้วยเรื่องของ xp_cmdshell

หากกล่าวถึง xp_cmdshell บรรดาแฮกเกอร์มือเก๋าหรือหัดใหม่ก็คงรู้จักกันเป็นอย่างดี เนื่องจาก xp_cmdshell เป็น extend stored-procedure ของ Microsoft SQL Server ซึ่งมีความสามารถพิเศษคือ สามารถใช้รันคำสั่งของระบบปฏิบัติการได้

exec master..xp_cmdshell 'dir'

ซึ่งหากอยากจะให้ MSSQL ของเราปลอดภัยจากการโดนยิงในระดับนึงแล้ว เราควรทำการปิดการใช้งาน xp_cmdshell ด้วยคำสั่งดังต่อไปนี้

exec sp_dropextendedproc 'xp_cmdshell'

คำสั่งดังกล่าวต้องรันด้วยสิทธิของ Administrator หรือ sa ของ MSSQL ถึงจะสามารถดร็อป stored-procedure ดังกล่าวได้ครับ

อย่างไรก็ตามวิธีการ drop stored-procedure ดังกล่าวไม่สามารถป้องกันการโดนโจมตีจาก xp_cmdshell ได้ร้อยเปอร์เซ็นต์ เนื่องจากหากผู้บุกรุกมีสิทธิสูงอย่างเพียงพอ ผู้บุกรุกสามารถใช้คำสั่งดังต่อไปนี้เพื่อดึง xp_cmdshell กลับมาได้

exec sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'

ดังนั้นเพื่อความชัวร์จึงควรลบไฟล์ xplog70.dll ออกไปจากระบบด้วย ซึ่้งการลบไฟล์นี้ออกไปจากระบบ จะทำให้ stored-procedure ดังต่อไปนี้ไม่สามารถใช้งานได้
  • xp_sscanf
  • xp_sprintf
  • xp_msver
  • xp_enumgroups
  • xp_logevent
  • xp_loginconfig
นอกจากนี้การดร็อป xp_cmdshell จะมีผลต่อ stored-procedure อีกหลายน่ะ ติดตามได้จากที่นี่เด้อ http://support.microsoft.com/kb/891984

หมายเหตุ: ถ้ามีการลง Services Pack ของ MSSQL ต้องคอยตรวจสอบด้วยว่าไฟล์ xplog70.dll ได้กลับมาหรือไม่ ในกรณีที่เราลบไฟล์นี้ออกไปจากระบบแล้ว

ไม่มีความคิดเห็น: