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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/nefhara/cve-2025-4396
Password CrackingVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubnefhara/cve-2025-4396

CVE-2025-4396

This repository contains a practical research and validation toolkit for CVE-2025-4396, an unauthenticated Time-Based Blind SQL Injection affecting the WordPress Relevanssi plugin through the `cats` parameter.

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-4396 - WordPress Relevanssi 時間ベースブラインドSQLインジェクションツールキット

概要

このリポジトリには、CVE-2025-4396 に関する実践的な調査・検証ツールキットが含まれています。これは、WordPressの Relevanssi プラグインの cats パラメータに影響を与える、認証不要の時間ベースブラインドSQLインジェクションです。

このプロジェクトは、認定されたPurple Team演習のために構築され、以下の目的で使用されます:

  • 管理された環境で悪用可能性を検証する、
  • 異なる攻撃者トレードクラフトレベルを実演する、
  • SOCの検知カバレッジを測定する、
  • WordPressのパスワードハッシュを現実的な方法で抽出する、
  • そして、ハッシュが回収された後、オフラインクラッキングワークフローを自動化する。

リポジトリには以下が含まれます:

  • 標準抽出スクリプト、
  • より高速な二分探索抽出スクリプト、
  • 抽出したWordPress 6.8+ハッシュをHashcatで準備してクラックするヘルパースクリプト。

免責事項
このプロジェクトは、教育目的、防御的検証、および認定されたセキュリティテストのためにのみ提供されます。
所有していないシステムや、明示的な書面による評価許可を得ていないシステムに対して使用しないでください。

テスト環境

  • サーバー: Debian 11
  • WordPress 6.9.1、
  • Relevanssi プラグイン 4.24.4 (https://wordpress.org/plugins/relevanssi/advanced/ からダウンロード)、
  • kali linux OS から使用したPOC。

CVEの説明

CVE-2025-4396 は、WordPressの Relevanssi 検索機能に影響を与えるSQLインジェクションの脆弱性です。

テストしたシナリオでは、この問題は検索ワークフローを通じて、より具体的には cats パラメータを通じて到達可能です。この脆弱なコードパスにより、攻撃者が制御する入力がプラグインによって生成されるSQLクエリに影響を与えることができます。

脆弱なエンドポイントは事前認証なしでアクセス可能であるため、この欠陥はリモート攻撃者によって悪用され、認証不要のSQLインジェクションを実行される可能性があります。

実際の影響には以下が含まれます:

  • データベースクエリの操作、
  • 時間ベースブラインドSQLインジェクション、
  • パスワードハッシュなどの機密データの抽出、
  • そして、環境によっては、有効な認証情報の回復による権限昇格の可能性。

脆弱性の仕組み

根本原因

この脆弱性は、検索関連パラメータからのユーザー制御入力が、SQLクエリに組み込まれる前に安全に処理されないために存在します。

実際には、攻撃者がSQL式をバックエンドのクエリロジックに注入し、データベースに追加の条件を評価させることができることを意味します。

なぜブラインドなのか

この脆弱性はブラインドモードで悪用されます。つまり、アプリケーションはSQLエラーや生のデータベース結果を直接表示しません。

ページからクエリ出力を読み取る代わりに、攻撃者はデータベースに一連の真/偽の質問を投げかけ、1つの副作用を観察します:

  • 条件が真の場合、データベースは数秒間スリープします、
  • 条件が偽の場合、レスポンスは即座に返されます。

なぜ時間ベースなのか

この悪用は、サーバーの応答時間に測定可能な差を生み出すために、SLEEP() などのSQL関数に依存しています。

これにより、攻撃者はデータを直接見ることなく推測することができます。

例えば、攻撃者は次のような質問をすることができます:

  • 「最初の文字は $ と等しいか?」
  • 「2番目の文字のASCII値は77より大きいか?」
  • 「最初のN文字はこのパターンに一致するか?」

このプロセスを繰り返すことで、攻撃者はハッシュ全体を1文字ずつ再構築することができます。


悪用の仕組み

標準抽出ロジック

標準的なアプローチは、既知の文字セットを反復処理し、各候補を1つずつテストします。

ターゲットハッシュの各位置について:

  1. 1文字をターゲットにしたSQL条件を構築します。
  2. 推測が正しい場合にのみサーバーの遅延をトリガーします。
  3. 応答時間を測定します。
  4. ネットワークジッタによる誤検知を減らすために、同じリクエストを再送信します。
  5. 確認された文字を抽出したハッシュに追加します。
  6. 次の位置に移動します。

この方法はシンプルで信頼性がありますが、文字ごとに多くのリクエストが必要になる可能性があるため、比較的遅いです。

二分探索抽出ロジック

より高速なアプローチは、各文字のASCII値に対する二分探索を使用します。

次のような質問をする代わりに:

  • 「文字は a と等しいか?」
  • 「文字は b と等しいか?」
  • 「文字は c と等しいか?」

次のように質問します:

  • 「ASCII値は79より大きいか?」
  • 「55より大きいか?」
  • 「43より大きいか?」

これにより、リクエストごとに探索空間が半分に分割され、HTTPリクエストの数が劇的に削減されます。

実際の結果

この攻撃により、オペレーターは wp_users から user_pass 値を抽出できます。通常は、以下のような選択されたWordPressユーザーIDが対象です:

  • デフォルト管理者の 1、
  • またはコマンドラインで渡された別のID。

最近のWordPressバージョンでは、この値は新しいWordPress 6.8+パスワードパイプラインを使用する場合があり、以下を組み合わせます:

  • HMAC-SHA384 を使用した事前ハッシュ段階、
  • Base64エンコーディング、
  • そして最終的なbcryptハッシュ。

含まれるスクリプト

1. CVE_2025_4396.py

これは標準抽出スクリプトです。

目的:

固定された文字セットに対する線形探索を使用して、古典的な時間ベースブラインドSQLインジェクションを実行し、ターゲットハッシュを1文字ずつ抽出します。

主な特徴:

  • シンプルで理解しやすい、
  • 安定した環境で信頼性が高い、
  • 誤検知を減らすための二重検証ロジック、
  • 検知エンジニアリングやPoCデモのベースラインとして有用。

仕組み:

各文字位置について:

  • 事前定義された文字セットを反復処理し、
  • 単一の文字に一致するSQL条件を構築し、
  • サーバーの応答を待ち、
  • 2回目のリクエストでヒットを確認します。

必要条件:

  • python3
  • requests
  • urllib3

インストール:

root@kitploit:~
pip3 install requests urllib3
使用方法:
root@kitploit:~
python3 CVE_2025_4396.py -t "https://target.local/?s=test&cats=" -u 1 -s 3 -v
root@kitploit:~
Arguments :
    -t, --target : vulnerable target URL including the injectable parameter
    -u, --userid : WordPress user ID to target
    -s, --sleep : sleep threshold in seconds
    -v, --verbose : enable debug logging

2. CVE_2025_4396_Stealth.py

これは二分探索版です。

目的:

標準スクリプトと同じ抽出目的を実行しますが、線形の文字ごとの探索をASCII値に対する二分探索に置き換えます。

主な特徴:

  • HTTPリクエストが大幅に少ない、
  • ネットワークフットプリントが小さい、
  • 誤検知を防ぐためのダブルチェックステップも含まれています。

仕組み:

各位置について:

  • 印刷可能なASCII範囲を定義します。
  • 中点をテストします。
  • ターゲット文字がその中点より大きいかどうかを尋ねます。
  • それに応じて範囲を縮小します。
  • 正確な文字が特定されるまで続けます。

必要条件:

  • python3
  • requests
  • urllib3

インストール:

root@kitploit:~
pip3 install requests urllib3

使用方法:

root@kitploit:~
python3 CVE_2025_4396_Stealth.py -t "https://target.local/?s=test&cats=" -u 1 -s 3 -v

使用すべきタイミング:

  • ターゲットが脆弱であることが確認されている、
  • レイテンシが十分に安定している、
  • そしてリクエスト量を削減することが目標である場合。

オフラインハッシュクラッキングワークフロー

WordPressからパスワードハッシュが抽出されたら、次のステップはオフラインでクラックすることです。

WordPress 6.8+ ハッシュに関する注意事項。テストしたワークフローでは、抽出された値は次のようになります:

root@kitploit:~
$wp$2y$10$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.

Hashcatの場合、使用可能なbcrypt部分は次のとおりです:

root@kitploit:~
$2y$10$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.

ただし、このbcryptは生のパスワードに直接適用されるわけではありません。WordPressは最初に前処理段階を適用します:

  • 候補パスワードに対するPHPスタイルのtrim、
  • キー wp-sha384 を使用したHMAC-SHA384、
  • 結果のダイジェストのBase64エンコーディング、
  • そしてbcrypt検証。

事前ハッシュステップが必要な理由

これは、WordPress 6.8+の正確なロジックを再現したい場合、通常のワードリストをHashcatに直接送信できないことを意味します。

代わりに、各候補パスワードは、まずWordPress互換の事前ハッシュ表現に変換する必要があります。

このリポジトリには、以下の「ヘルパー」スクリプトも含まれています:

  • 抽出されたハッシュを引数として受け取り、
  • 必要に応じて $wp$ プレフィックスを除去し、
  • 指定されたワードリストを前処理し、
  • 変換された辞書を生成し、
  • オプションでマッピングファイルを作成し、
  • Hashcatを自動的に起動し、
  • 回復された事前ハッシュを元のクリアテキストパスワードに解決します。

典型的なワークフロー

ハッシュを抽出する:

  • 結果の例:$wp$2y$10$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.

クラッキング環境を準備する:

  • python3
  • hashcat がPATHで利用可能であること

Auto_Crack.py を実行する:

root@kitploit:~
python3 Auto_Crack.py -H '\$wp\$2y\$10\$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.' -w /usr/share/wordlists/rockyou.txt
root@kitploit:~
We need to escape "$" with "\" -> bash compatibility

SOC検知ガイダンス

以下の検知コンテンツは、SOCチームが悪用の試みを特定し、防御の成熟度を測定するために使用できます。

Sigma検知

root@kitploit:~
title: Potential Time-Based Blind SQLi (CVE-2025-4396 Relevanssi)
id: 5a8a1c93-5c74-4b5b-a620-8e1c3e41ab5d
status: experimental
description: Detects HTTP GET requests containing typical Time-Based Blind SQL injection payloads often used to exploit CVE-2025-4396 in the WordPress Relevanssi plugin (bypassing comma filters).
author: n3fhara
date: 2026-03-18
tags:
    - attack.initial_access
    - attack.t1190
    - cve.2025-4396
logsource:
    category: webserver
detection:
    selection_endpoint:
        cs-uri-query|contains:
            - 's='
            - 'cats='
            - 'tags='
    selection_payload:
        cs-uri-query|contains:
            - 'SLEEP('
            - 'WAITFOR'
            - 'SUBSTRING('
            - 'ASCII('
            - 'LENGTH('
    selection_bypass_indicators:
        cs-uri-query|contains:
            - 'FROM'
            - 'FOR 1'
            - '*('
    condition: selection_endpoint and selection_payload and selection_bypass_indicators
falsepositives:
    - Highly unlikely. Legitimate search queries should not contain SQL functions.
level: high

Suricata検知

root@kitploit:~
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"ET EXPLOIT WordPress Relevanssi SQLi Attempt (CVE-2025-4396)"; flow:established,to_server; content:"GET"; http_method; content:"cats="; http_uri; pcre:"/(cats|tags)=.*(SLEEP|WAITFOR)%28.*(%2A|\*).*SUBSTRING/i"; classtype:web-application-attack; sid:1000001; rev:1; metadata:created_at 2026_03_18, cve CVE_2025_4396;)

SPLUNK検知

root@kitploit:~
index=web_logs sourcetype=access_combined 
| regex uri_query="(?i)cats=|tags="
| stats count as request_count, avg(response_time) as avg_time, max(response_time) as max_time, dc(uri_query) as unique_payloads by clientip
| where request_count > 20 AND max_time > 2000
| sort - max_time

KQL検知

root@kitploit:~
url.query : (*cats=* OR *tags=* OR *s=*) AND url.query : (*SLEEP* OR *WAITFOR* OR *SUBSTRING* OR *ASCII*) AND url.query : (*FROM* OR *FOR* OR *%2A*)

EQL検知

root@kitploit:~
sequence by source.ip with maxspan=1m
  [network where url.path == "/" and url.query : "*cats=*" and event.duration > 2000000000]
  [network where url.path == "/" and url.query : "*cats=*" and event.duration > 2000000000]
  [network where url.path == "/" and url.query : "*cats=*" and event.duration > 2000000000]

検知のギャップと推奨事項

上記のベースライン検知は、難読化されていない悪用には有効ですが、オペレーターがより高度なトレードクラフトを導入すると弱くなります。

攻撃者が以下のものを使用し始めると、SOCの可視性は低下します:

  • 明白なものの代わりに代替のSQL関数、
  • URLエンコーディングとコメントベースの難読化、
  • 二分探索によるリクエスト量の削減、
  • ジッタと低速(low-and-slow)タイミング、
  • プロキシローテーション、
  • ブラウザ偽装。

SOC向けの追加検知アイデア:

  • 異常な低速検索トラフィックを検出する、
  • WordPress検索エンドポイントへのリクエストを監視する:
    • 応答時間が繰り返し上昇している、
    • 同じクライアントが多数の検索リクエストを実行している、
    • または同じエンドポイントが時間の経過とともに異常なレイテンシパターンを示している。
  • エンコードされた演算子を含む検索パラメータをアラートする、
  • 明白なSQLキーワードが見えなくても、以下の組み合わせを含む検索パラメータ:
    • エンコードされた比較演算子、
    • 疑わしい括弧の密度、
    • 繰り返される数値ロジック、
    • または高度にURLエンコードされたクエリ文字列。
  • 送信元IPだけでなく、エンドポイントで相関させる、
  • 攻撃者がプロキシをローテーションする場合、IP相関は弱くなります。検知は以下にも焦点を当てるべきです:
    • 同じエンドポイントへの繰り返しのアクセス、
    • 繰り返しの遅延応答、
    • または同じWordPressページをターゲットにした繰り返しの不正な検索クエリ。
  • 長時間ウィンドウの行動検知を使用する:
    • 30分、
    • 1時間、
    • または複数時間のウィンドウ。
  • データベース側のスロークエリを監視する

リポジトリ構造

root@kitploit:~
.
├── CVE_2025_4396.py
├── CVE_2025_4396_Stealth.py
├── Auto_Crack.py
├── README.md
└── relevanssi.4.24.4.zip

法的通知

明示的にテストを許可された環境でのみ使用してください。 著者および貢献者は、誤用に対する責任を負いません。

免責事項
このプロジェクトは、教育目的、防御的検証、および認定されたセキュリティテストのためにのみ提供されます。
所有していないシステムや、明示的な書面による評価許可を得ていないシステムに対して使用しないでください。

ツールをダウンロード