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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-22710 — CVE-2025-22710 の PoC | Kitploit
ツール/GitHubGitHub/dottak/cve-2025-22710
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト
GitHubdottak/cve-2025-22710

CVE-2025-22710

CVE-2025-22710 の PoC

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-22710

1️⃣ コンポーネントの種類

WordPress プラグイン

2️⃣ コンポーネントの詳細

コンポーネント名 WooCommerce Advanced Bulk Edit Products, Orders, Coupons, Any WordPress Post Type – Smart Manager

脆弱性のあるバージョン <= 8.50.0

コンポーネントスラッグ smart-manager-for-wp-e-commerce

コンポーネントリンク https://wordpress.org/plugins/smart-manager-for-wp-e-commerce/

3️⃣ OWASP 2017: TOP 10

脆弱性クラス A3: インジェクション

脆弱性タイプ SQLインジェクション

4️⃣ 前提条件

管理者

5️⃣ 脆弱性の詳細

👉 簡単な説明

WooCommerce Advanced Bulk Edit Products, Orders, Coupons, Any WordPress Post Type – Smart Manager(以下 Smart Manager)プラグインは、WordPress のすべての投稿タイプを一括編集および表示できるプラグインです。

Smart Manager プラグイン バージョン 8.50.0 以下では、投稿を表示するための高度な検索機能を使用する際に、フィルタリング値がエスケープ処理なしでデータベースクエリに渡されるため、SQL インジェクションの脆弱性が発生します。

ただし、SQL インジェクション攻撃の直接的な結果は画面に表示されませんが、真/偽条件に基づく応答値の違いにより、Blind SQL インジェクションが可能です。

👉 再現方法(PoC)

⚠️ 真/偽条件に基づく応答値の違いを確認するには、少なくとも1つの投稿が存在している必要があります。

  1. Smart Manager プラグインがインストールされた WordPress サイトを用意し、管理者アカウントでログインして Smart Manager プラグインのダッシュボードページ(/wp-admin/admin.php?page=smart-manager)に移動します。

image

  1. 検索バーの右側にある「高度な検索」チェックボックスをクリックして、詳細検索ウィンドウを開きます。

image

  1. 詳細検索フィルタリングで「投稿タイトル」と「が一致する」を選択し、テキスト入力フォームにペイロード ' OR 1=1 )) # を入力します。その後、上部の検索ボタンをクリックします。

image

  1. 検索結果を確認すると、ペイロードの条件が常に真(OR 1=1)であるため、すべての投稿が取得されます。

image

  1. 一方、詳細検索フィルタリングで「投稿タイトル」と「が一致する」を選択し、テキスト入力フォームに ' OR 1=2 )) # を入力すると、条件が常に偽(OR 1=2)であるため、投稿は取得されません。

image

image

👉 追加情報(任意)

[脆弱性の原因]

上記の PoC 説明で要求された「高度な検索」機能を実行すると、次のパケットが生成され、高度な検索で入力されたフィルタリング値(投稿タイトル、が一致する、' OR 1=1 )) #)がリクエストデータ advanced_search_query に入力されます。

root@kitploit:~
advanced_search_query=[{"condition":"OR","rules":[{"condition":"AND","rules":[{"type":"wp_posts.post_title","operator":"is","value":"' OR 1=1 )) #"}]}]}]

image

このパケットがリクエストされると、/wp-content/plugins/smart-manager-for-wp-e-commerce/classes/class-smart-manager-base.php ファイル内の get_data_model 関数が呼び出され、次の順序でデータベースクエリを実行します。

  1. リクエストデータ advanced_search_query が存在する場合、process_search_cond 関数を呼び出します。このとき、リクエストデータ advanced_search_query はキーと値のペアの引数のうち、キー search_query の値として渡されます。

    root@kitploit:~
    search_query=[{"condition":"OR","rules":[{"condition":"AND","rules":[{"type":"wp_posts.post_title","operator":"is","value":"' OR 1=1 )) #"}]}]}]
    

    image

  2. 呼び出された process_search_cond 関数は、キー search_query の値を反復処理し、フィルタリング値「投稿タイトル(post_title)」を変数 $search_col に初期化し、SQL インジェクションペイロードを含むフィルタリング値 ' OR 1=1 )) # を変数 $search_value に初期化します。

高度な検索機能では、ユーザー入力(' OR 1=1 )) #)がエスケープ処理なしでデータベースクエリに直接含まれ、SQL インジェクションの脆弱性が発生します。この脆弱性により、攻撃者は任意の SQL クエリを実行でき、データベースからの機密情報の漏洩や改ざんなど、重大なセキュリティリスクにつながる可能性があります。

[PoC コードの実装と実行]

⚠️ PoC コードの実装では、SQL インジェクションの脆弱性を悪用してデータベース名を問い合わせます。

  1. PoC コードをエディタで開き、WordPress サイトのアドレスと管理者の認証情報を入力します。

    image

  2. 次に、以下のコマンドを入力して PoC コードを実行します。

    必要なモジュール requests

    root@kitploit:~
    python poc.py
    

    image

6️⃣ Exploit Demo(エクスプロイトデモ)

video

7️⃣ 参考文献

  • https://nvd.nist.gov/vuln/detail/CVE-2025-22710
ツールをダウンロード

image

  • 変数 $search_col と $search_value は、それぞれ $search_params 配列のキー search_col(=post_title)と search_value(=' OR 1=1 )) #)に渡されます。その後、この $search_params 変数はキー search_params の値として create_flat_table_search_query 関数に渡されます。

    image

  • 次に、create_flat_table_search_query 関数は SQL クエリの WHERE 句を定義しますが、この時点で、引数として渡されたキー search_params の search_value(=' OR 1=1 )) #)はエスケープ処理なしで WHERE 句に含まれます。

    image

  • その後、create_flat_table_search_query 関数の戻り値(SQL インジェクションペイロードを含む)が process_flat_table_search_query 関数に引数として渡されます。

    image

  • process_flat_table_search_query 関数は、受け取った引数を使用してデータベースクエリを構築し、変数 $select、$from、$where を初期化します。ここで、SQL インジェクションペイロードが検証なしで変数 $where に直接渡されていることがわかります。

    image

  • 変数 $select、$from、$where は直接変数 $query_posts_search に代入され、この変数は最終的にデータベースクエリを実行する関数に引数として渡されます。

    image