SQL Server 与 1433 端口
1433 是 Microsoft SQL Server 数据库引擎的默认 TCP 端口,承载 TDS 协议。默认实例固定监听 1433,命名实例默认使用动态端口,客户端连接前要先通过 SQL Server Browser(UDP 1434)查到实例实际使用的端口。内网渗透中 1433 属于最高价值目标之一:拿到 sysadmin 权限后,攻击者可启用 xp_cmdshell 直接在操作系统层面执行命令。
基本信息
| 服务 | SQL Server Database Engine(TDS 协议) |
|---|---|
| 协议 | TCP 1433(默认实例) |
| 相邻端口 | UDP 1434 SQL Server Browser;Always On 侦听器通常复用 1433 |
| 适用平台 | Windows 版与 Linux 版 SQL Server |
| 默认高权账户 | sa,可按需禁用或改名 |
| 常用客户端 | SSMS、sqlcmd、应用连接池(如 ODBC/JDBC) |
典型使用场景
- 业务系统读写数据库:应用经连接串连 1433,固定端口便于防火墙按网段收敛
- DBA 用 SSMS 管理:查询、执行计划分析、备份与还原、作业调度
- 命名实例环境:客户端先查询 1434 获知动态端口,再建立连接
- 报表与 ETL 抽数:从 SQL Server 抽取数据同步到数据仓库或分析平台
- 仅放行应用到数据库网段的内网直连,避免任何公网映射与端口转发
监听状态与连接自检
监听状态与连接自检
ss -lntp | grep 1433 # Linux 版看监听地址与进程
netstat -ano | findstr :1433 # Windows 版看监听与对应 PID
Test-NetConnection sql01.example.com -Port 1433 # 客户端网络层连通性
sqlcmd -S tcp:sql01.example.com,1433 -U appuser -P '<口令>' -Q 'SELECT @@VERSION' # 冒烟查询确认可登录
sqlcmd -S tcp:sql01.example.com,1433 -U appuser -P '<口令>' -Q 'SELECT DB_NAME()' # 确认默认落在哪个库连接路径与端口
| 场景 | 端口 | 说明 |
|---|---|---|
| 默认实例 | TCP 1433 | 客户端可直接指定端口连接 |
| 命名实例 | 动态端口 | 需先经 UDP 1434 查询实例端口 |
| SQL Server Browser | UDP 1434 | 提供实例名到实际端口的映射 |
| Always On 可用性组 | 通常复用 1433 | 客户端连侦听器名,故障转移后地址不变 |
加固项与判定
| 加固项 | 检查方式 | 风险点 |
|---|---|---|
| sa 账户状态 | 查询 sys.server_principals 的 is_disabled | 启用且口令弱等于直接交出 sysadmin |
| xp_cmdshell | 查询 sys.configurations 中该选项 | 开启后数据库权限可直接升级为系统命令执行 |
| 连接加密 | 看 dm_exec_connections 的 encrypt_option | FALSE 表示凭据与数据明文过网 |
| 登录审计 | 检查登录失败记录是否留存 | 无审计时爆破与异常登录无法回溯 |
| 应用账户权限 | SHOW GRANTS 类查询或查看角色成员 | 应用账号拿到 sysadmin 会放大任何一次注入 |
连接与配置核对(T-SQL)
连接与配置核对(T-SQL)
SELECT session_id, client_net_address, encrypt_option FROM sys.dm_exec_connections; -- 谁在连、是否加密
SELECT DISTINCT local_tcp_port FROM sys.dm_exec_connections WHERE local_tcp_port IS NOT NULL; -- 实际使用的端口
SELECT name, is_disabled FROM sys.server_principals WHERE name = 'sa'; -- 1 表示已禁用
SELECT name, value_in_use FROM sys.configurations WHERE name = 'xp_cmdshell'; -- 命令执行组件是否开启
SELECT session_id, login_name, host_name, program_name FROM sys.dm_exec_sessions WHERE is_user_process = 1; -- 当前用户会话来源输出逐列读法
| 输出项 | 含义 | 正常/异常 |
|---|---|---|
| client_net_address | 客户端来源地址 | 出现非应用网段或公网地址需立即核实 |
| encrypt_option | 连接是否加密 | 跨网段连接应为 TRUE |
| local_tcp_port | 服务端本地端口 | 命名实例显示动态端口属正常 |
| host_name / program_name | 来源主机与客户端程序 | 出现陌生程序名或陌生主机要追溯 |
| session_id | 会话编号 | 数量持续攀升说明连接未复用或存在泄漏 |
公网 1433 会持续遭遇 sa 爆破;一旦拿到 sysadmin 权限,启用 xp_cmdshell 后可执行系统命令,这也是勒索软件在内网扩散最常见的提权路径。
命名实例的客户端连接依赖 UDP 1434 才能解析端口:只放行 TCP 1433 而禁用 Browser 时,指定实例名的连接会失败,表现为只有默认实例能用。
账号治理顺序:先禁用或改名 sa,再核查应用账号是否被误加入 sysadmin,之后开启登录失败审计并按来源地址定期复盘;发现 xp_cmdshell 被启用时,先确认是否为业务需要,再决定是否关闭。
备份文件同样要管:数据库备份常被放到共享目录或备份服务器上,权限过宽时整库数据等同泄露;备份账号只授予备份所需权限,不要复用 sysadmin 账户,备份目录也不要与实例数据放在同一块盘上。