关键信息 漏洞概述 漏洞名称: Insecure .NET deserialization via WM_COPYDATA enables local code execution 受影响版本: <= 1.3.300 修复版本: 1.3.301 CVE ID: CVE-2022-31050 CVSS v3 基本分数: 8.4/10 描述 漏洞原因: Greenshot 在处理 WM_COPYDATA 消息时,直接将攻击者控制的数据传递给 BinaryFormatter.Deserialize() 方法,导致本地任意代码执行。 关键点: - BinaryFormatter 对不受信任的数据不安全,可以实例化任意类型并触发 gadget 链。 - 授权检查在反序列化后进行,因此任何 gadget 都会绕过通道成员身份验证。 - 攻击者可以在兼容的完整性级别下发送有效载荷到目标窗口。 影响 本地任意代码执行: 在受信任的、签名的进程中发生。 策略规避: 攻击者可以在内存中运行有效载荷,而无需创建新进程,从而绕过 AppLocker/WDAC 规则。 企业现实: 可以利用此漏洞进行持久性攻击或作为进一步进程内或跨进程攻击的跳板。 POC 提供了一个演示视频和 POC 发送器,展示了如何通过 WM_COPYDATA 消息传递 BinaryFormatter 流来触发代码执行。 复现步骤 1. 安装并启动 Greenshot 1.3.300。 2. 确保 POC 发送器与 Greenshot 运行在同一完整性级别。 3. 运行发送器,传递包含 BinaryFormatter 流的有效载荷。 4. 观察 Greenshot.exe 上下文中发生的代码执行。