我按照以下步骤创建了一个新的 MSSQL 实例这视频。我的目的是教我的学生如何从 Linux 机器攻击 MSSQL 实例,但是当我连接时我无法在服务器上执行任何命令。
我尝试使用impacket-mssqlclient
和sqsh
连接到服务器,并且连接成功,但是我的查询没有输出。
例如下面是我通过连接本地 MSSQL 服务器impacket-mssqlclient
并执行 SELECT 语句进行枚举。
# impacket-mssqlclient "sa":"Password1"@192.168.68.139
Impacket v0.12.0.dev1+20231114.165227.4b56c18 - Copyright 2023 Fortra
[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master
[*] ENVCHANGE(LANGUAGE): Old Value: , New Value: us_english
[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192
[*] INFO(SQL02): Line 1: Changed database context to 'master'.
[*] INFO(SQL02): Line 1: Changed language setting to us_english.
[*] ACK: Result: 1 - Microsoft SQL Server (160 3232)
[!] Press help for extra shell commands
SQL (sa dbo@master)> SELECT SYSTEM_USER;
SQL (sa dbo@master)> SELECT @@VERSION;
SQL (sa dbo@master)>
另外,同样与sqsh
:
# sqsh -S 192.168.68.139 -U "sa" -P "Password1"
sqsh-2.5.16.1 Copyright (C) 1995-2001 Scott C. Gray
Portions Copyright (C) 2004-2014 Michael Peppler and Martin Wesdorp
This is free software with ABSOLUTELY NO WARRANTY
For more information type '\warranty'
1> SELECT SYSTEM_USER;
2> GO;
3> SELECT @@VERSION;
4> GO;
同样奇怪的是,从netexec
(new crackmapexec
) 执行的语句可以工作!
# netexec mssql 192.168.68.139 -u 'sa' -p 'Password1' -q 'SELECT @@VERSION' --local-auth
MSSQL 192.168.68.139 1433 SQL02 [*] Windows 10 / Server 2019 Build 17763 (name:SQL02) (domain:VILNSEC.LOCAL)
MSSQL 192.168.68.139 1433 SQL02 [+] SQL02\sa:Password1 (Pwn3d!)
MSSQL 192.168.68.139 1433 SQL02 Microsoft SQL Server 2022 (RTM) - 16.0.1000.6 (X64)
Oct 8 2022 05:58:25
Copyright (C) 2022 Microsoft Corporation
Developer Edition (64-bit) on Windows Server 2019 Standard 10.0 <X64> (Build 17763: ) (Hypervisor)
此外,如果我使用 HeidiSQL 之类的东西从 Windows 机器进行连接,我的语句就可以工作并执行。
这里有什么问题?我需要设置一些神奇的设置才能允许执行基本查询吗?我希望能够执行任何 SQL 语句,即使它是低权限用户(任何域帐户)...