Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-5076 — CVE-2026-5076 の概念実証エクスプロイト。SQLインジェクションとパスワードリセットキーの平文保存により、ARMember Premium で認証なしの管理者アカウント乗っ取りを実証します。 | Kitploit
ツール/GitHubGitHub/zycoder0day/cve-2026-5076
パスワード攻撃脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト認証
GitHubzycoder0day/cve-2026-5076

CVE-2026-5076

CVE-2026-5076 の概念実証エクスプロイト。SQLインジェクションとパスワードリセットキーの平文保存により、ARMember Premium で認証なしの管理者アカウント乗っ取りを実証します。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

☠️ CVE-2026-5076

ARMember Premium <= 7.3.1

安全でないパスワードリセット機構 → 管理者アカウント完全乗っ取り

データベースに平文で保存されるパスワードリセットキー + SQLインジェクション = 完全な管理者乗っ取り


📋 脆弱性情報

項目詳細
CVE IDCVE-2026-5076
プラグインARMember – Membership Plugin & Content Restriction
影響を受けるバージョンPremium <= 7.3.1
パッチ適用済みバージョン7.3.2
CVSSスコア9.8 Critical
CWECWE-640: 弱いパスワード回復
タイプ安全でないパスワードリセット機構 → 平文キー保存
攻撃ベクトルネットワーク / リモート / 未認証(SQLiチェーン経由)
アクティブインストール数30,000+ (Premium)
発見者Wordfence Threat Intelligence
公開日2026年6月3日

関連CVE(同一アドバイザリ)

CVEタイプ重大度
CVE-2026-5076安全でないパスワードリセット — 平文キー保存9.8 Critical
CVE-2026-5073未認証SQLインジェクション(ORDER BY)9.8 Critical
CVE-2026-5074未認証SQLインジェクション(WHERE)9.8 Critical

🎯 概要

WordPressプラグインARMember Premium <= 7.3.1における3つの重大な脆弱性。これらを連鎖させると、認証なしで管理者アカウントを完全に乗っ取ることが可能になる:

  1. CVE-2026-5076 — パスワードリセットキーがWordPress標準のようにハッシュ化されず、wp_usermeta(arm_reset_password_key)に平文で保存される
  2. CVE-2026-5073 — AJAXハンドラーarm_directory_paging_action()のorderパラメータにおけるSQLインジェクション
  3. CVE-2026-5074 — AJAXハンドラーarm_directory_paging_action()のfilterパラメータにおけるSQLインジェクション

CVE-2026-5076の直接的な影響: データベースへの読み取りアクセスを持つ者(SQLi、バックアップ流出など経由)は、パスワードリセットキーを平文で読み取ることができ、クラッキングを必要とせずに、任意のアカウントのパスワードをリセットするために直接使用できる。


🔬 技術的分析

根本原因 #1: 平文キー保存(CVE-2026-5076)

標準のWordPressは、パスワードリセットキーをuser_activation_keyカラムにwp_hash()を使ってハッシュ化した形式で保存する。ARMemberは同じキーのコピーをmeta_key arm_reset_password_keyとしてwp_usermetaに保存する — ただし平文の形式で:```php // FILE: armember-membership/core/class.arm_member_forms.php // Fungsi: arm_lost_password_action()

// WordPress menyimpan HASHED key (aman) $key = wp_generate_password(20, false); $wp_key = $wpdb->get_var( $wpdb->prepare("SELECT user_activation_key FROM $wpdb->users WHERE user_login=%s", $user_login) );

// ARMember menyimpan PLAINTEXT key (VULNERABLE!) update_user_meta($user_id, 'arm_reset_password_key', $wp_key); // ^^^^^^ // Ini adalah key ASLI yang bisa langsung dipakai

**重大な問題**: `$wp_key` は `wp_generate_password(20, false)` によって生成されるキーです(20文字の英数字)。WordPress はこのキーを `user_activation_key` に保存する前にハッシュしますが、ARMember は**ハッシュ前**の状態で保存するか、**ハッシュされていない**別のコピーを保存します。

### 根本原因 #2: キー永続化のバグ

`get_password_reset_key()` が呼び出されると(WordPress コア)、新しいキーが生成され、ハッシュされます。しかし、この関数は `arm_reset_password_key` を**更新しません**:```php
// WordPress core: get_password_reset_key($user)
// - Generate key baru
// - Hash key → simpan di user_activation_key
// - Return key plaintext
// - TAPI: arm_reset_password_key TIDAK diupdate!

その結果、古いプレーンテキストのキーは、ユーザーがパスワードリセットを行った後でも、arm_reset_password_key に永遠に保存され続けます。このキーは、メタキーが明示的に削除されるまで繰り返し使用できます。

根本原因 #3: SQLインジェクション (CVE-2026-5073/5074)

AJAXハンドラ arm_directory_paging_action() には arm_check_user_cap() によるnonceチェックがありますが、パラメータ order と filter はサニタイズなしで直接SQLクエリに渡されます。```php // FILE: armember-membership/core/class.arm_member_forms.php // Fungsi: arm_directory_paging_action()

// Nonce check (dibutuhkan nonce valid) $nonce_check = $this->arm_check_user_cap();

// ORDER BY injection — langsung ke SQL tanpa sanitasi! $orderby = "u.{$arm_member} {$order_dir}"; // $order_dir dari $_POST['order'] → LANGSUNG ke ORDER BY

// WHERE injection via filter if (!empty($filter)) { $where .= " AND " . $filter; // ← LANGSUNG concatenation! }

**ORDER BY の悪用**: `order` パラメータは SQL の `ORDER BY` 句に挿入されます。サニタイズがないため、攻撃者はサブクエリを注入できます:```sql
-- Payload SQLi via parameter order
ORDER BY u.ID ASC, IF(COND, 1, EXP(710))

-- COND = TRUE  → IF returns 1 → ORDER BY 1 → response normal (besar)
-- COND = FALSE → IF returns EXP(710) → MySQL overflow ERROR → response 90B

このオラクルは、応答時間ではなくエラーと成功に基づいてTRUE/FALSEを判定するため、ネットワークレイテンシの影響を受けません。


⛓️ 攻撃チェーンのロードマップ```

╔══════════════════════════════════════════════════════════════════════════════════╗ ║ CVE-2026-5076 FULL CHAIN ATTACK ROADMAP ║ ║ ARMember Premium <= 7.3.1 → Unauthenticated Admin Takeover ║ ╚══════════════════════════════════════════════════════════════════════════════════╝

ツールをダウンロード