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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-49132-PoC — CVE-2025-49132 の概念実証エクスプロイト。Pterodactyl Panel <= 1.11.10 において、ロケールパラメータインジェクションを介した認証不要のリモートコード実行を可能にします。チェックモードとエクスプロイトモードを含みます。 | Kitploit
ツール/GitHubGitHub/kerburenthusiasm/cve-2025-49132-poc
ペイロード生成脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト
GitHubkerburenthusiasm/cve-2025-49132-poc

CVE-2025-49132-PoC

CVE-2025-49132 の概念実証エクスプロイト。Pterodactyl Panel <= 1.11.10 において、ロケールパラメータインジェクションを介した認証不要のリモートコード実行を可能にします。チェックモードとエクスプロイトモードを含みます。

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-49132-PoC

CVE-2025-49132 の概念実証。Pterodactyl Panel <= 1.11.10 におけるリモートコード実行を実証します。

この PoC は以下のリファレンスを参考にしています:

  • https://www.exploit-db.com/exploits/52341
  • https://github.com/63square/CVE-2025-49132

使用方法

root@kitploit:~
# Check if the web application is vulnerable
python3 poc.py -u <url> -m check

# Do something funny 
python3 poc.py -u <url> -m exploit -p <path_to_pear_dir> -t <path_to_write_to>

技術的詳細

LocaleController.php における v1.11.10 から v1.11.11 への git diff を分析すると (リンク)、コントローラが locale と namespace パラメータを検証やサニタイズなしで受け付けていることがわかります。

これがなぜ危険なのかを理解するために、panel/routes/base.php で設定されているルーティングを見てみましょう。このルートは認証関連のミドルウェアを明示的に削除しており、認証されていないユーザーが /locales/locale.json を呼び出し、locale や namespace などの必要なクエリパラメータを指定できるようにしています。つまり、これらのパラメータは ユーザー によって制御されることになります。

root@kitploit:~
Route::get('/locales/locale.json', Base\LocaleController::class)
    // Remove authentication middleware for this endpoint
    ->withoutMiddleware(['auth', RequireTwoFactorAuthentication::class]);

LocalController.php に戻ると、次のコード行が RCE の魔法を提供します。

root@kitploit:~
$this->loader->load($locale, str_replace('.', '/', $namespace))

load 関数は Laravel の翻訳フレームワークから来ています (こちら)。

root@kitploit:~
public function load($locale, $group, $namespace = null) # 1
{
    if ($group === '*' && $namespace === '*') { # 2
        return $this->loadJsonPaths($locale);
    }

    if (is_null($namespace) || $namespace === '*') { # 3
        return $this->loadPaths($this->paths, $locale, $group); # 4
    } 

    return $this->loadNamespaced($locale, $group, $namespace);
}
  • #1 で、load 関数は 3 つの引数を取ることがわかります。最初は混乱しますが、str_replace('.', '/', $namespace) の値は実際には第 2 引数 $group に渡されます。
  • #2 では、$namespace は常に NULL であるため * になることはありません。同様に、$group もここに渡される値を制御できるため * になることはありません。
  • #3 では、$namespace が null であるため、この分岐が選択され、#4 で loadPaths が実行されます。

以上を踏まえて、実際の魔法が起こる loadPaths の分析に移ります。

root@kitploit:~
protected function loadPaths(array $paths, $locale, $group)
{
    return (new Collection($paths))
    ->reduce(function ($output, $path) use ($locale, $group) {
        if ($this->files->exists($full = "{$path}/{$locale}/{$group}.php")) { # 1
            $output = array_replace_recursive($output, $this->files->getRequire($full)); # 2
        }

        return $output;
    }, []);
}
  • #1 で、ローダーは期待される翻訳ファイル名を .php を付加して構築します。
  • #2 で、そのファイルが存在する場合、getRequire() を介して読み込まれ、PHP ファイルを実行してその配列を返します。

namespace URL パラメータを制御できるため、アプリケーションがロードしようとするファイルに影響を与えることができます。.php スクリプトにマッピングされる値を指定することで、サーバーにそのスクリプトを実行させることができます。例えば、phpinfo.php をロードするには、namespace=phpinfo とパラメータを設定します。

PoC の説明

この PoC は、pearcmd.php を介して任意のファイル書き込みを実行しようと試みます。この手法は、多くの類似した PoC やセキュリティ研究で利用されています。

  • https://labs.watchtowr.com/form-tools-we-need-to-talk-about-php/
  • https://medium.com/@lashin0x/local-file-inclusion-to-remote-code-execution-rce-bea0ec06342a

pearcmd.php は、例えば以下のようなさまざまなディレクトリに配置されている可能性があることに注意してください。

  • /usr/share/php/pearcmd.php
  • /usr/share/php/PEAR/pearcmd.php
  • /usr/lib/php/pearcmd.php

など他にも多数あります。

書き込まれるファイルには、一般的な悪質な PHP コードが含まれます。

免責事項 / 責任ある使用について

許可されたテスト専用です。所有していないシステム、または明示的なテスト許可がないシステムでは使用しないでください。
すべての該当する法律を遵守する責任はあなたにあります。著者は誤用に対する一切の責任を負いません。

問題点

Python の requests ライブラリは、提供された URL 内の文字をエンコードするため、少し助けすぎてしまいます。この問題の解決に長い時間を費やし、結局 curl を直接使用することにしました。誰かがこの問題を解決する手助けを提供してくれるとありがたいです。

ツールをダウンロード