剖析XamlReader动态解析与执行系统命令

admin 2025-12-29 00:51:55 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文剖析.NET中XamlReader组件的安全风险。通过构造恶意XAML载荷利用ObjectDataProvider调用Process.Start,可在解析字符串或加载文件时实现无文件落地执行系统命令。建议严格过滤XamlReader输入源,避免直接解析不可信数据以防范此类命令执行漏洞。 综合评分: 85 文章分类: 漏洞分析,漏洞POC,应用安全


cover_image

剖析 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 允许嵌套、绑定、动画、数据源等复杂逻辑。例如:


calc.exe


以上声明可在运行时调用 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(““);     xaml.Append(““);     xaml.Append(““);     xaml.Append(“cmd“);     xaml.Append($”/c {input}“);     xaml.Append(““);     xaml.Append(““);     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 配置,攻击者可构造文件并上传,等待后台加载。


calc


通过LoadAsync方法正常解析Dictionary2.xaml文件中保存的负载,成功启动本地计算器进程,如下图所示。

![](https://mmbiz.qpic.cn/mmbiz_png/NO8Q9ApS1YicyKu2gFrnmmCvMAPUeLCiaM7oT3VWiachdQdMck4mNxs6z9WNCJYMXylB4rXKK6hY6rKJs067ib77nQ/640?wx_fmt=png&from=appmsg&watermark=1#imgIndex=4)

综上,XAML 是强大且灵活的 UI 构建语言,而 XamlReader 作为其解析入口,在客户端开发中不可或缺。

以上相关的知识点已收录于新书《.NET安全攻防指南》,全书共计25章,总计1010页,分为上下册,横跨.NET Web代码审计与红队渗透两大领域。

上册深入剖析.NET Web安全审计的核心技术,帮助读者掌握漏洞发现与修复的精髓;下册则聚焦于.NET逆向工程与攻防对抗的实战技巧,揭秘最新的对抗策略与技术方法。

自《.NET安全攻防指南》上线以来,许多读者已抢先下单成功购入并收到了书籍,反响热烈,好评如潮!感谢大家的支持,我们也将持续为大家带来更多优质的.NET安全研究成果!原价258元,现限量优惠,数量有限!

点击京东链接:https://item.jd.com/10140917044329.html 或者打开手机京东APP即可下单购买。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:dotNet安全矩阵 专攻.NET安全的《剖析 XamlReader 动态解析与执行系统命令》

bruteratelc41.7.4泄露 网络安全文章

bruteratelc41.7.4泄露

文章总结: 文章披露BruteRatelC41.7.4版本已泄露,作者通过截图证实已获取并测试该工具,指出新版新增WindowsGUI支持。作者未公开破解细节或
评论:0   参与:  0