程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 多樣化的Sql-Server應用程序注入(6)

多樣化的Sql-Server應用程序注入(6)

編輯:關於SqlServer
[其他擴展存儲]

xp_servicecontrol擴展存儲允許用戶啟動,停止,暫停或者運行服務。

exec master..xp_servicecontrol 'start', 'schedule'
exec master..xp_servicecontrol 'start', 'server'

下面是一些其他有用的擴展存儲表:

xp_availablemedia 顯示機器上可用的驅動器
xp_dirtree 獲得一個目錄樹
xp_enumdsn 列舉服務器上的ODBC數據源
xp_loginconfig 顯示服務器的安全狀態信息
xp_makecab 允許用戶在服務器上創建壓縮文件(或者任何服務器可以訪問的文件)
xp_ntsec_enumdomains 列舉服務器可以訪問的域
xp_terminate_process 結束一個給定PID進程


[聯合服務器]

SQL-Server提供了一個服務器聯合的機制,就是允許一個數據庫服務器上的查詢操作其他服務器的數據。這些聯合設置存放在master..sysservers表裡,如果一個相連的服務器使用了'sp_addlinkedsrvlogin'存儲過程,一個自動的登陸了的連接已經存在,可以通過它不登陸而訪問該服務器。'openquery'函數允許查詢在聯合服務器上執行。


[用戶自定義擴展存儲]

擴展存儲的API是相當簡單的,創建一個帶有惡意代碼的擴展存儲DLL也是相當容易的。通過命令行有很多方法將DLL上傳到服務器,還有其他的很多方法包括各種通信機制來自動實現,比如HTTP下載和FTP腳本。
一旦DLL文件出現在服務器上SQL-Server可以訪問,這不一定需要SQL-server本身,攻擊者可以通過下面添加擴展存儲(這裡,我們的惡意擴展存儲是個用來操作服務器的文件系統小的木馬)

sp_addextendedproc 'xp_webserver', 'c:\temp\xp_foo.dll'

擴展存儲就可以通過一般的方法調用:

exec xp_webserver

一旦這個擴展存儲執行過,可以這樣刪除它:

sp_dropextendedproc 'xp_webserver'


[向表中導入文本文件]

利用'bulk insert'語句,可以把一個文本文件的內容插入進一張臨時表,我們簡單的創建一個表:

create table foo( line varchar(8000) )

然後執行bulk insert來插入數據來自於一個文件:

bulk insert foo from 'c:\inetpub\wwwroot\process_login.ASP'

通過上面介紹過的錯誤信息技巧就可以得到數據,或者通過一個'union'查詢,把文本數據作為查詢的數據返回。這對於獲得存儲在數據庫裡的腳本如ASP腳本很有用。


[利用BCP創建文本文件]

利用和'bulk insert'作用相反的技術創建任意的文本文件非常簡單。不過需要一個命令行工具'bcp'('bulk copy program'),因為bcp在SQL-Server進程外訪問數據庫,它需要一次登陸。但是這不難,因為攻擊者都可以創建一個;或者如果服務器配置使用了“完整性”安全模式,攻擊者可以利用它。

命令行格式如下:

bcp "Select * FROM test..foo" queryout c:\inetpub\wwwroot\runcommand.ASP -c -Slocalhost -Usa -Pfoobar

'S'參數是要運行查詢的服務器,'U'參數是用戶名,'P'是密碼,這裡的密碼是'foobar'。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved