在分布式事务处理中,TransactionManager.Reenlist
方法被用于重新注册事务的参与者,以确保事务状态的一致性。
然而,该方法内部调用了 BinaryFormatter
进行反序列化,从而可能导致恶意代码执行。本文将深入解析该漏洞的利用方式,并展示如何构造攻击载荷,从而帮助安全研究人员理解该漏洞的危害,并提升防御能力。本文内容节选自《.NET安全攻防指南》一书 第17章 .NET反序列化漏洞插件,感兴趣的读者可进一步阅读本书获取更多安全研究内容。
全书共计25章,总计1010页,分为上下册,横跨.NET Web代码审计与红队渗透两大领域。原/价258/元,现/限/量/优/惠,一/套/上/下/册/仅/售/141/元,数/量/有/限,先/到/先/得!
点/击/京/东/链/接:https://item.jd.com/10140917044329.html 或/者/打/开/手/机/京/东/APP/即/可/下单/购/买
01. Reenlist基本介绍
在 .NET 框架中,System.Transactions.TransactionManager
负责管理分布式事务,允许多个资源管理器参与同一个事务,并保证它们的一致性。
其中,TransactionManager.Reenlist方法用于在事务崩溃或中断后重新注册事务的参与者,确保事务状态得以恢复。例如,当数据库事务因网络中断而未能正确提交,事务管理器可在系统恢复后重新注册该事务,并尝试提交或回滚操作。
然而,该方法的
byte[]
参数为二进制序列化数据,使用 BinaryFormatter
进行反序列化,这为攻击者提供了一个利用点:如果传入恶意序列化数据,则可能导致代码执行漏洞。