KnowledgeDeliver ViewState反序列化漏洞利用分析
使用相同密钥的部署模板,听起来是个很低级的错误,但这类漏洞恰恰最难被发现。KnowledgeDeliver LMS的供应商在安装包中预置了统一的machineKey配置,导致数百个独立部署的实例共用同一套加密密钥。这意味着只要有一家客户被攻破,攻击者就能用同样的密钥远程控制所有其他实例。这种”一把钥匙开所有门”的设计缺陷,在安全审计中往往被当作”供应商配置”一笔带过,直到真正出事才会引起重视。
漏洞的利用路径很清晰:获取其中一个部署的密钥后,攻击者构造恶意的ViewState负载,通过__VIEWSTATE参数发送给目标服务器,服务器会用共享密钥解密并反序列化负载,直接触发RCE。这不是新型攻击手法,而是已知风险在错误配置下的必然结果。攻击者随后部署了BLUEBEAM内存webshell和在JavaScript中植入恶意代码,最终在用户工作站上安装Cobalt Strike后门,整个攻击链相当完整。
Mandiant给出的检测方案主要依赖三个层面:监控Event ID 1316中的ViewState验证失败事件(Event code 4009)、追踪w3wp.exe异常子进程、以及监测web根目录的配置文件变更。最关键的修复措施是立即为每个实例生成唯一的machineKey——这是唯一能废掉泄露密钥价值的方法。
