首页/安全/漏洞与攻击面速查/SQL Server sa 账号与 1433 暴露
主机与服务风险面53 条

SQL Server sa 账号与 1433 暴露

SQL Server 的 sa 账号与 1433 端口是常见的暴露组合;sa 长期保留弱口令、或 xp_cmdshell 被开启后,数据库层可直接升级为操作系统层风险。

漏洞与攻击面速查安全更新于 2026-10-13

SQL Server sa 暴露是什么

SQL Server 的 sa 账号历史上是默认的超级管理员账号,配合默认的 1433 端口,构成一组经典暴露组合。风险主要来自三点:sa 长期保留弱口令或从不轮换、数据库端口对超出应用范围的主机开放、以及 xp_cmdshell 等扩展存储过程被开启。最后一点尤其关键,它把数据库层的权限直接延伸到操作系统层,让一次数据库登录变成主机命令执行。

基本信息

默认端口TCP 1433(命名实例使用动态端口或 SQL Browser)
关键账号sa(SQL 登录,混合认证模式下可用)
风险配置xp_cmdshell 开启、端口对全网开放、sa 弱口令
推荐做法优先 Windows 身份验证,无业务依赖时停用 sa

典型使用场景

  • 账号梳理:统计仍在使用 SQL 登录与 sa 的应用,评估迁移到 Windows 身份验证的可行性
  • 核查 xp_cmdshell 等配置项状态,确认没有历史遗留的临时开启
  • 防火墙层面把 1433 限制到应用服务器来源,取消整网段放行
  • 为 sa 登录配置单独审计与告警,异常来源立即排查
  • 备份与版本升级时复核配置项,避免迁移过程把旧配置一并带过来

配置核查(管理员侧)

配置核查(管理员侧)
# 列出 SQL 登录及其启用状态
sqlcmd -S 127.0.0.1 -Q "SELECT name, is_disabled FROM sys.server_principals WHERE type_desc='SQL_LOGIN';"

# 检查 xp_cmdshell 当前是否启用
sqlcmd -S 127.0.0.1 -Q "SELECT name, value_in_use FROM sys.configurations WHERE name='xp_cmdshell';"

# 关注点:sa 是否已停用、xp_cmdshell 是否意外处于开启状态
# Windows 身份验证优先,SQL 登录仅在确有必要时保留

加固项与效果

加固项效果注意
停用 sa消除最常见的爆破目标需先确认无应用依赖
强口令并轮换降低弱口令命中概率轮换需与应用配置同步
关闭 xp_cmdshell切断数据库到系统的升级路径确需时按窗口临时开启
来源限制只允许应用服务器访问需同步核对命名实例端口
登录审计异常登录可被发现关注失败次数与来源分布
SQL Server 的协议端口可以在配置管理器中修改,但隐藏实例端口属于弱防护:来源限制与账号治理才是决定暴露程度的关键。
xp_cmdshell 把数据库权限延伸到操作系统:一旦该配置项处于开启状态,数据库账号口令泄露的后果等同于主机口令泄露。

易错点

  • 为兼容旧应用临时开启 xp_cmdshell 后未关闭,配置项长期留在开启状态
  • sa 无法停用却从不轮换口令:弱口令成为长期存在的爆破目标
  • 只改了端口号未做来源限制:端口扫描仍可定位到实例
  • 停用 sa 前未核对应用连接串,导致业务在维护窗口后无法启动

数据来源与参考

  • Microsoft 文档(SQL Server 安全指南)
  • Microsoft 文档(xp_cmdshell 服务器配置选项)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌