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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
POC-CVE-2022-30600 — CVE-2022-30600の概念実証 | Kitploit
ツール/GitHubGitHub/boonjune/poc-cve-2022-30600
パスワード攻撃脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト認証
GitHubboonjune/poc-cve-2022-30600

POC-CVE-2022-30600

CVE-2022-30600の概念実証

リポジトリを見る
3113年前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2022-30600 の概念実証

概要

このリポジトリには、CVE-2022-30600 を悪用する概念実証のための 2 つの実装が含まれています。

CVE-2022-30600 は、攻撃者が moodle Web アプリケーション内のアカウントロックアウトしきい値をバイパスできるようにするセキュリティ脆弱性です。

NVD データベース(https://nvd.nist.gov/vuln/detail/CVE-2022-30600)の以下のエントリで概説されているように、以下のバージョンがこのエクスプロイトに対して脆弱であることが知られています。

3.9 - 3.9.13

3.10 - 3.10.10

3.11 - 3.11.6

攻撃の詳細

この脆弱性を修正するために使用されたコミットで概説されているように、問題はデータベース内の login_failed_count 値にアクセスしてインクリメントするために使用されるロジックにあります。

https://git.moodle.org/gw?p=moodle.git;a=commitdiff;h=59b5858da200f63ecb59a9113af2b99ef1496fe5;hp=a0f47c8bc4d6f5971025de7d63f22475701d2f86

2 つ以上の同時ログイン要求が発生した場合、moodle Web アプリケーションがアプリケーション内のログイン値を正しくチェックおよび更新できない可能性があります。その結果、2 回以上のログイン失敗が 1 回のログイン失敗としてのみカウントされます。

これをよりよく理解するために、以下の図は、クライアント、Web アプリ、およびデータベースの観点からの失敗したログイン要求の高レベルの内訳です。

root@kitploit:~
sequenceDiagram 
    participant C as Client 
    participant W as Webapp 
    participant D as Database 
    C->>W: Login Request 
    W->>D: Requests failed_login_attempt 
    D->>W: failed_login_attempt = 0 
    W->>W: local failed_login_attempt  = 0 
    W->>W: local failed_login_attempt  = 1 
    W->>D: failed_login_attempt = 1 
    W->>C: Login Failed

その結果、データベース内の failed_login_attempt 値は正しくなり、後続のログイン試行は正しく値を更新します。

攻撃者が多数の同時ログイン要求を送信した場合、以下の問題が発生します。

root@kitploit:~
sequenceDiagram 
    participant C as Client 
    participant W as Webapp 
    participant D as Database 
    C->>W: Login Request (session 1) 
    C->>W: Login Request (session 2) 
    W->>D: Requests failed_login_attempt (session 1) 
    W->>D: Requests failed_login_attempt (session 2) 
    D->>W: failed_login_attempt = 0 (session 1) 
    D->>W: failed_login_attempt = 0 (session 2) 
    W->>W: local failed_login_attempt = 0 (session 1) 
    W->>W: local failed_login_attempt = 0 (session 2) 
    W->>W: local failed_login_attempt = 1 (session 1) 
    W->>W: local failed_login_attempt = 1 (session 2) 
    W->>D: failed_login_attempt = 1 (session 1) 
    W->>D: failed_login_attempt = 1 (session 2) 
    W->>C: Login Failed (session 1) 
    W->>C: Login Failed (session 2)

この相互作用の結果、2 回のログイン失敗要求が発生したにもかかわらず、failed_login_attempt データベース値は 1 だけインクリメントされます。これは数百の要求に拡大でき、制限はクライアントが行える同時要求数と Web サーバーが同時に管理できる要求数です。

さらに、攻撃者が複数のクライアント(ボットネットなど)にアクセスでき、これらの要求が行われる時間を同期できる場合、攻撃者は 1 つのクライアントを使用する際の制限を克服し、攻撃をより緩和しにくくすることができます。

Python3 実装

説明

poc.py はこの攻撃の Python3 実装です。同時要求を実行するためにスレッドを使用します。この概念実証は機能しますが、Python3 に存在するグローバルインタプリタロック(GIL)により、この状況下で複数のスレッドを使用する利点が妨げられます。攻撃が単一のクライアントで実行される場合、C++ 実装の方が適切に動作するため、強くお勧めします。

使用方法

poc.py [-h] -u USERNAME -url TARGET -w WORDLIST -t THREADS [-a ATTEMPTS] [-d DELAY]

オプション: -h, --help
 このヘルプメッセージを表示します
-u USERNAME, --username USERNAME
 対象となるアカウントのユーザー名
-url TARGET, --target TARGET
 対象となる moodle Web アプリケーションのベース URL
-w WORDLIST, --wordlist WORDLIST
 使用するワードリストファイルへのパス
-t THREADS, --threads THREADS
 各試行で作成されるスレッド数
-a ATTEMPTS, --attempts ATTEMPTS
 実行する試行回数。デフォルトは 1 です
-d DELAY, --delay DELAY
 各試行間の秒数。デフォルト値は 2 です

例

python3 poc.py -u admin -url https://moodle/ -w /usr/share/wordlists/rockyou.txt -t 15 -a 8

対象 : https://moodle/
アカウントユーザー名 : admin
ワードリスト : /usr/share/wordlists/rockyou.txt
スレッド : 各試行で 15 のログイン要求が行われます
試行 : 攻撃は合計 8 回繰り返されます

この例では、合計 120 回(8 * 15)のログイン要求が行われます。各試行間には 2 秒の遅延があります。

C++ 実装

説明

poc.cpp は攻撃の C++ 実装であり、攻撃を実行するために curl ライブラリを使用します。そのため、アプリケーションをコンパイルするにはいくつかのコンパイラフラグが必要です。全体として、この実装は Python3 バージョンよりも優れています。スレッドがクライアントデバイスのすべてのコアを使用できるため、より短い時間でより多くの同時接続が可能になるからです。これにより、エクスプロイトがより一貫して動作できるようになります。

コンパイラフラグ

g++ poc.cpp -o poc -lcurl

使用方法

Usage: poc [OPTION...]
-a, --attempts

 攻撃が実行される回数
-t, --threads

 各試行で使用するスレッド数
-n, --username
 対象とするアカウントのユーザー名
-u, --URL
 moodle Web アプリケーションのベース URL
-d, --delay
 試行間の時間遅延。デフォルトは 5
-v, --version
 バージョンを表示
-h, --help
 ヘルプメッセージを表示
-w, --wordlist arg
 パスワードのワードリスト

例

./poc -w /usr/share/wordlists/rockyou.txt -u https://moodle/ -n admin -a 3 -t 5 -d 2

ワードリスト : /usr/share/wordlists/rockyou.txt
URL : https://moodle/
アカウントユーザー名 : admin
試行 : 3 回の試行が行われます
スレッド : 各試行で 5 つのスレッドが使用されます
遅延 : 各試行間に 2 秒の遅延があります

テスト環境

これらのスクリプトを開発、テスト、デバッグするために、仮想マシンを作成しました。この仮想マシンは以下のソフトウェアとバージョンを使用しました。

Moodle 3.9.0 PHP 7.2.34 MySQL 8.0.30 Ubuntu 5.15.0-41-generic Apache 2.4.52

注意

私のソースコードが違法行為に使用されることを容認しません。

ツールをダウンロード