概述:.Net 反序列及漏洞相关自洽记录。

免责声明:本文所涉及的信息安全技术知识仅供参考和学习之用,并不构成任何明示或暗示的保证。读者在使用本文提供的信息时,应自行判断其适用性,并承担由此产生的一切风险和责任。本文作者对于读者基于本文内容所做出的任何行为或决定不承担任何责任。在任何情况下,本文作者不对因使用本文内容而导致的任何直接、间接、特殊或后果性损失承担责任。读者在使用本文内容时应当遵守当地法律法规,并保证不违反任何相关法律法规。

开源项目和文章推荐

项目:

  1. Ivan1ee/NET-Deserialize: 总结了 20+.Net 反序列化文章,持续更新

文章:

  1. 【最新漏洞预警】开源组件漏洞之 CVE-2021-23758 AjaxPro.NET 反序列化漏洞 | CN-SEC 中文网
  2. AjaxPro.NET 反序列化漏洞(CVE-2021-23758)-新华三集团-H3C

反序列化说明

在 .NET 中,反序列化漏洞通常是由于不安全地处理序列化的数据而产生的。当应用程序反序列化来自不受信任来源的数据时,攻击者可能会构造恶意的序列化数据,从而在反序列化过程中触发任意代码执行或其他恶意行为。

.NET 框架提供了多种序列化机制,如二进制格式化程序(BinaryFormatter)、SOAP 格式化程序(SoapFormatter)、数据契约序列化程序(DataContractSerializer)等。这些序列化机制在默认情况下可能不安全,因为它们可能允许攻击者利用某些类型的安全漏洞。

.Net 反序列化常见相关函数

目前已经有发现的相关反序列漏洞涉及的函数包括但不限于以下所示相关函数:

  1. XmlSerializer
  2. NetDataContractSerializer
  3. FastJson
  4. BinaryFormatter
  5. Json.Net
  6. .Net Remoting
  7. SoapFormatter
  8. DataContractSerializer
  9. LosFormatter
  10. ObjectStateFormatter 【.Net】可执行文件结构分析.md
  11. JavaScriptSerializer

堆栈实例

可查看文章 【CVE-2021-23758】Ajax .NET Professional 中的 RCE 漏洞 中的分析。关键调用如下所示:

1
2
3
4
5
AjaxPro.2.dll!AjaxPro.JavaScriptDeserializer.DeserializeCustomObject(AjaxPro.JavaScriptObject o, System.Type type) 
AjaxPro.2.dll!AjaxPro.JavaScriptDeserializer.Deserialize(AjaxPro.IJavaScriptObject o, System.Type type)
AjaxPro.2.dll!AjaxPro.XmlHttpRequestProcessor.RetreiveParameters()
AjaxPro.2.dll!AjaxPro.AjaxProcHelper.Run()
AjaxPro.2.dll!AjaxPro.AjaxSyncHttpHandler.ProcessRequest(System.Web.HttpContext context)