文章总结: 本文剖析.NET中XamlReader组件的安全风险。通过构造恶意XAML载荷利用ObjectDataProvider调用Process.Start,可在解析字符串或加载文件时实现无文件落地执行系统命令。建议严格过滤XamlReader输入源,避免直接解析不可信数据以防范此类命令执行漏洞。 综合评分: 85 文章分类: 漏洞分析,漏洞POC,应用安全
剖析 XamlReader 动态解析与执行系统命令
原创
专攻.NET安全的
dotNet安全矩阵
2025年11月29日 08:32 安徽
本文将聚焦 .NET 生态中一个特殊的安全相关类,依托 XamlReader 组件动态解析 XAML 文档的核心特性,通过精心构造 XAML 载荷,可在目标主机上实现无文件落地的任意系统进程启动,最终达成程命令执行的效果。
01. 技术背景介绍
在 .NET 应用中,WPF 因其强大的界面绘制能力和灵活的数据绑定机制而被广泛使用。与传统的 Windows Forms 不同,WPF 使用一种名为 XAML 的声明式标记语言来描述 UI 元素和数据交互逻辑。
1.1 WPF 框架
WPF 是 Microsoft 在 .NET Framework 3.0 中引入的一套 UI 框架,专为构建丰富客户端应用而设计。与 WinForms 相比,WPF 支持硬件加速渲染、更强的控件组合能力、样式控制、动画、数据绑定等高级特性。在 WPF 应用中,通常通过 XAML 文件来定义界面布局,然后在后台代码中为控件编写逻辑。
1.2 XAML 介绍
XAML 是一种基于 XML 的标记语言,用于声明 UI 组件及其行为。例如,一个简单的按钮控件可以如下声明:
XAML 允许嵌套、绑定、动画、数据源等复杂逻辑。例如:
以上声明可在运行时调用 Process.Start("calc.exe") 启动计算器。
02. XamlReader
System.Windows.Markup.XamlReader 是 WPF 的核心类之一,存在于``PresentationFramework.dll 中。该类提供了一系列方法,可用于将 XAML 字符串或流解析成实际的 .NET 对象。
2.1 动态构造XAML
在支持 WPF 的 Web API、富客户端、插件化平台或用户自定义模板系统中,若系统直接调用了 XamlReader.Parse() 来解析用户输入的数据,便存在命令执行的风险,具体代码如下所示。
publicstaticvoidCodeInject(string input)
{
StringBuilder xaml =newStringBuilder();
xaml.Append(“
XamlReader.Parse(xaml.ToString()); }
上述代码段中,程序利用StringBuilder类动态构建了一个XAML字符串,该字符串定义了一个ResourceDictionary。
其中包含了一个ObjectDataProvider元素,这个ObjectDataProvider被配置为启动System.Diagnostics.Process类的Start方法,进而调用cmd.exe /c命令运行指定的程序,如winver.exe。
如果部署了如下 ashx 接口,通过HTTP请求访问XamlReaderParseSpy.ashx?input=winver,可以触发此XAML代码的解析并成功启动进程。
publicvoidProcessRequest(HttpContext context) { string cmd = context.Request[“input”]; CodeInject(cmd); }
2.2 文件方式触发
XamlReader.Load 可解析来自本地磁盘的``.xaml 文件,若系统允许用户上传或修改 .xaml 配置,攻击者可构造文件并上传,等待后台加载。
通过LoadAsync方法正常解析Dictionary2.xaml文件中保存的负载,成功启动本地计算器进程,如下图所示。

综上,XAML 是强大且灵活的 UI 构建语言,而 XamlReader 作为其解析入口,在客户端开发中不可或缺。
以上相关的知识点已收录于新书《.NET安全攻防指南》,全书共计25章,总计1010页,分为上下册,横跨.NET Web代码审计与红队渗透两大领域。
上册深入剖析.NET Web安全审计的核心技术,帮助读者掌握漏洞发现与修复的精髓;下册则聚焦于.NET逆向工程与攻防对抗的实战技巧,揭秘最新的对抗策略与技术方法。
自《.NET安全攻防指南》上线以来,许多读者已抢先下单成功购入并收到了书籍,反响热烈,好评如潮!感谢大家的支持,我们也将持续为大家带来更多优质的.NET安全研究成果!原价258元,现限量优惠,数量有限!
点击京东链接:https://item.jd.com/10140917044329.html 或者打开手机京东APP即可下单购买。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:dotNet安全矩阵 专攻.NET安全的《剖析 XamlReader 动态解析与执行系统命令》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论