從codered到nimda等,一大堆蠕蟲把原來需要人工利用的漏洞都變成了程序自動利用了,大家還想去手工操作這些IIS漏洞么?讓我們調(diào)整重心,去看看服務(wù)器常用的數(shù)據(jù)庫吧。
一般網(wǎng)站都是基于數(shù)據(jù)庫的,特別是ASP、PHP、JSP這樣的用數(shù)據(jù)庫來動態(tài)顯示的網(wǎng)站。很多網(wǎng)站可能多注意的是操作系統(tǒng)的漏洞,但是對數(shù)據(jù)庫和這些腳本的安全總是忽略,也沒有太多注意。
從最普遍的腳本問題開始,這些都是老話題了,大家可以參考Hectic寫的《關(guān)于數(shù)據(jù)庫的簡單入侵和無賴破壞,以天融信做例子》,該文章對從SQL腳本問題說得非常詳細。對于腳本安全的解決,也可以通過過濾來實現(xiàn),可以參考我以前寫的。對于ASP來說,可以使用下面這個過濾函數(shù):
Function Filter_SQL(strData)
Dim strFilter
Dim blnFlag
Dim i
strFilter="’,;,//,--,@,_,exec,declare"
blnFlag=Flase
Dim arrayFilter
arrayFilter=Split(strFilter,",")
For i=0 To UBound(arrayFilter)
If Instr(strData,arrayFilter(i))>0 Then
blnFlag=True
Exit For
End If
Next
If blnFlag Then
Response.Redirect "wrong.asp"
Else
Filter_SQL=strData
End If
End Function
對于MS SQL Server數(shù)據(jù)庫來說,安全問題不僅僅局限在腳本上了?!疤鞖⒌奈④洝钡南到y(tǒng)性很強,整個基于WINDOWS系統(tǒng)的應(yīng)用都有很強的關(guān)聯(lián)性,對SQL Server來說,基本可以把數(shù)據(jù)庫管理和系統(tǒng)管理等同起來了。SQL Server默認的管理員帳號“sa”的密碼是空的,這給多數(shù)NT服務(wù)器產(chǎn)生一個安全漏洞。小榕的“SQLRCMD”,就能夠利用獲得的數(shù)據(jù)庫管理員帳號執(zhí)行系統(tǒng)命令。
在SQL Server中有很多系統(tǒng)存儲過程,有些是數(shù)據(jù)庫內(nèi)部使用的,還有一些就是通過執(zhí)行存儲過程來調(diào)用系統(tǒng)命令。
系統(tǒng)存儲過程:xp_cmdshell
就是以操作系統(tǒng)命令行解釋器的方式執(zhí)行給定的命令字符串。它就具體語法是:xp_cmdshell {’command_string’} [, no_output]
xp_cmdshell在默認情況下,只有 sysadmin 的成員才能執(zhí)行。但是,sysadmin也可以授予其他用戶這個執(zhí)行權(quán)限。在早期版本中,獲得 xp_cmdshell 執(zhí)行權(quán)限的用戶在 SQL Server 服務(wù)的用戶帳戶中運行命令??梢酝ㄟ^配置選項配置 SQL Server,以便對 SQL Server 無 sa 訪問權(quán)限的用戶能夠在SQLExecutiveCmdExec Windows NT 帳戶中運行 xp_cmdshell。在 SQL Server 7.0 中,該帳戶稱為 SQLAgentCmdExec?,F(xiàn)在對于SQL Server2000,只要有一個能執(zhí)行該存儲過程的帳號就可以直接運行命令了。
一般網(wǎng)站都是基于數(shù)據(jù)庫的,特別是ASP、PHP、JSP這樣的用數(shù)據(jù)庫來動態(tài)顯示的網(wǎng)站。很多網(wǎng)站可能多注意的是操作系統(tǒng)的漏洞,但是對數(shù)據(jù)庫和這些腳本的安全總是忽略,也沒有太多注意。
從最普遍的腳本問題開始,這些都是老話題了,大家可以參考Hectic寫的《關(guān)于數(shù)據(jù)庫的簡單入侵和無賴破壞,以天融信做例子》,該文章對從SQL腳本問題說得非常詳細。對于腳本安全的解決,也可以通過過濾來實現(xiàn),可以參考我以前寫的。對于ASP來說,可以使用下面這個過濾函數(shù):
Function Filter_SQL(strData)
Dim strFilter
Dim blnFlag
Dim i
strFilter="’,;,//,--,@,_,exec,declare"
blnFlag=Flase
Dim arrayFilter
arrayFilter=Split(strFilter,",")
For i=0 To UBound(arrayFilter)
If Instr(strData,arrayFilter(i))>0 Then
blnFlag=True
Exit For
End If
Next
If blnFlag Then
Response.Redirect "wrong.asp"
Else
Filter_SQL=strData
End If
End Function
對于MS SQL Server數(shù)據(jù)庫來說,安全問題不僅僅局限在腳本上了?!疤鞖⒌奈④洝钡南到y(tǒng)性很強,整個基于WINDOWS系統(tǒng)的應(yīng)用都有很強的關(guān)聯(lián)性,對SQL Server來說,基本可以把數(shù)據(jù)庫管理和系統(tǒng)管理等同起來了。SQL Server默認的管理員帳號“sa”的密碼是空的,這給多數(shù)NT服務(wù)器產(chǎn)生一個安全漏洞。小榕的“SQLRCMD”,就能夠利用獲得的數(shù)據(jù)庫管理員帳號執(zhí)行系統(tǒng)命令。
在SQL Server中有很多系統(tǒng)存儲過程,有些是數(shù)據(jù)庫內(nèi)部使用的,還有一些就是通過執(zhí)行存儲過程來調(diào)用系統(tǒng)命令。
系統(tǒng)存儲過程:xp_cmdshell
就是以操作系統(tǒng)命令行解釋器的方式執(zhí)行給定的命令字符串。它就具體語法是:xp_cmdshell {’command_string’} [, no_output]
xp_cmdshell在默認情況下,只有 sysadmin 的成員才能執(zhí)行。但是,sysadmin也可以授予其他用戶這個執(zhí)行權(quán)限。在早期版本中,獲得 xp_cmdshell 執(zhí)行權(quán)限的用戶在 SQL Server 服務(wù)的用戶帳戶中運行命令??梢酝ㄟ^配置選項配置 SQL Server,以便對 SQL Server 無 sa 訪問權(quán)限的用戶能夠在SQLExecutiveCmdExec Windows NT 帳戶中運行 xp_cmdshell。在 SQL Server 7.0 中,該帳戶稱為 SQLAgentCmdExec?,F(xiàn)在對于SQL Server2000,只要有一個能執(zhí)行該存儲過程的帳號就可以直接運行命令了。

