SQLServer是一個c/s模式的強大的關系型數據庫管理系統,使用的是SQL語言。是一種應用領域十分廣泛的網絡數據庫。對網絡安全了解的朋友應該知道,SQLServer的入侵最常見的就是利用Sa空密碼入侵了,網上關于這種入侵的文章多如牛毛,有些這樣的文章個人認為講解的并不詳細,甚至有些是錯誤的,所以經常能在一些安全論壇看到類似的提問,而且有些也得不到很好的解答,下面我將詳細介紹我的一些經驗和總結,與大家分享。
首先讓我們來了解一下SQLServer中的存儲過程。存儲過程是存儲在SQLServer中的預先寫好的SQL語句集合。存儲過程分為三類:系統提供的存儲過程,用戶定義的存儲過程和擴展存儲過程。系統提供的存儲過程是在安裝SQLServer時創建的存儲過程,名字以“sp_”開頭。用戶定義的存儲過程是用SQLServer的使用者編寫的存儲過程。擴展存儲過程則是對動態鏈接庫(DLL)函數的調用,主要是用于客戶端與服務器端或客戶端之間進行通信的,與一般動態鏈接庫不同的是它們直接運行在SQLServer分配的內存地址內,其中危險性最高的擴展存儲過程就是xp_cmdshell了,它可以執行操作系統的任何指令。
上面了解了什么是存儲過程,我們再來看一下什么是Sa。Sa是SQLServer的管理員帳號,擁有最高權限,它可以執行擴展存儲過程,并獲得返回值。這樣你應該明白為什么得到Sa,就可以得到系統的最高權限了吧??墒?,有的時候情況并不是這樣,下面我們以在局域網中的SQLServer入侵介紹一下SQLServer的攻與防。
使用掃描工具掃描得到一個sa為空的機器,使用SQL Exec連接上,發現命令并不能用(如圖1)。
圖1
懷疑是擴展存儲過程xp_cmdshell在查詢分析器里刪除,
語句為:exec sp_dropextendedproc 'xp_cmdshell',于是打開自己機的SQLServer的查詢分析器,連上對方的SQLServer,對對方的xp_cmdshell進行恢復,語句為:
exec sp_addextendedproc 'xp_cmdshell', 'Xplog70.dll' (如圖2)。
原文轉自:http://www.anti-gravitydesign.com