windows server 2019 漏洞

2019年5月,微软推送了一个补丁,编号CVE-2019-0708,也就是后来被叫做"BlueKeep"的那个远程桌面漏洞。当时很多运维还在用Windows Server 2008,觉得2019离自己很远。结果不到两个月,Metasploit就放出了可用的利用模块。一台开了3389端口、没打补丁的Server 2019,从被扫描到被拿下,中间可能只隔了几分钟。

这个漏洞的问题出在RDP服务处理连接请求时的内存操作上。攻击者不需要认证,不需要用户交互,发一个特制数据包就能触发远程代码执行。听起来像电影里的情节,但它的利用代码在GitHub上公开可查。我见过一个案例:某公司内网一台测试用的Server 2019,管理员图省事把RDP直接映射到了公网IP,补丁拖了三个月没打。等发现的时候,机器已经被装了挖矿程序,CPU跑满,日志里全是来自东欧IP的登录尝试。

补丁不是万能药,但不打补丁是万万不能

Windows Server 2019默认的RDP配置其实比老版本收敛了一些,比如网络级别认证(NLA)默认开启。NLA能挡掉一部分未认证的攻击流量,但它不是铜墙铁壁。CVE-2019-0708的利用链里,攻击者可以先通过其他方式拿到一个低权限账户,绕过NLA,再触发漏洞提权。所以别觉得开了NLA就万事大吉。

另一个常被忽略的点是SMBv3的压缩漏洞,CVE-2020-0796,俗称"SMBGhost"。这个漏洞影响Server 2019的1903和1909版本。攻击者发送一个恶意压缩数据包,就能在目标机器上执行代码。它和BlueKeep不一样的地方在于,SMB服务在很多环境里是内网互通的,一台中招,横向移动的速度非常快。我印象很深的是一个制造业客户的场景:他们的域控是Server 2019,文件服务器也是,补丁策略走WSUS,但WSUS服务器本身漏打了补丁。结果一个钓鱼邮件进来的普通用户,通过SMBGhost一路摸到了域控。

配置错误比漏洞本身更致命

微软每个月发补丁,但很多Server 2019出问题不是因为没打补丁,而是配置太随意。比如把RDP端口从3389改成其他端口,觉得这样就能躲过扫描。实际上Shodan和Censys这类搜索引擎全端口扫描是常态,改端口只是心理安慰。再比如,有人喜欢在服务器上开IIS跑一些老旧的ASP.NET应用,.NET Framework的某些版本在Server 2019上依然存在反序列化漏洞。攻击者通过ViewState或者JSON反序列化,不需要任何系统漏洞就能拿到Shell。

还有一个真实发生的例子:某台Server 2019开了WinRM,管理员为了方便,把TrustedHosts设成了"*",并且用HTTP而不是HTTPS。攻击者只要拿到一个普通域用户的密码,就能通过WinRM连上去,再用PowerShell提权。整个过程没有任何"漏洞"被利用,全是合法功能被滥用。

我的判断:Server 2019本身不算脆弱,脆弱的是运维习惯

微软对Server 2019的安全更新支持到2029年1月,还有好几年。真正的问题在于,很多团队把它当"稳定版"就不管了。补丁延迟、端口暴露、权限过大、日志不查——这四个问题凑在一起,任何系统都会变成筛子。BlueKeep和SMBGhost只是提醒你:漏洞会来,而且会以你没想到的方式来。与其等下一个CVE爆出来再手忙脚乱,不如现在去看一眼你的Server 2019,RDP是不是还对着公网,SMBv1是不是还开着,本地管理员密码是不是每台都一样。这些事比追漏洞编号实在得多。