## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-DRAGONKED2-CVE-2024-50379-POC
# CVE-2024-50379-POC
このリポジトリには、**CVE-2024-50379** を悪用する Python スクリプトが含まれています。この脆弱性を利用すると、攻撃者は脆弱なサーバーに JSP シェルをアップロードし、リモートで任意のコマンドを実行できます。このエクスプロイトは、対象サーバーの `/uploads` ディレクトリが保護されていない、または存在しない場合に特に有用です。
* * *
## 概要
**CVE-2024-50379** は、ファイルアップロードを適切に処理しないサーバーに影響を与える脆弱性であり、攻撃者が JSP シェルをアップロードすることを可能にします。このシェルを使用すると、リモートで任意のコマンドを実行できます。提供されている Python スクリプトは、脆弱なサーバーにシェルをアップロードし、コマンドラインインターフェースを介してサーバーと対話できるようにするプロセスを自動化します。
* * *
## 前提条件
スクリプトを実行する前に、以下がインストールされていることを確認してください。
* Python 3.6 以上(推奨)
* `requests` ライブラリ。pip を使用してインストールします:
root@kitploit:~
pip install requests
* * *
## 脆弱なシステム
このエクスプロイトは、**Apache Tomcat** または同様のサーバーで、ファイルアップロード機能が適切に保護されていない、または `/uploads` ディレクトリが誤って構成されているシステムを対象とします。
> **重要:** このツールは、許可を得たペネトレーションテストや教育目的などの管理された環境でのみ使用してください。許可なくこのツールを使用することは、違法かつ非倫理的である可能性があります。
* * *
## 機能
* **自動 URL フォーマット:** ツールはスキームがない URL に自動的に `http://` を付加します。
* **`/uploads` ディレクトリが存在しない場合の処理:** `/uploads` ディレクトリが見つからない場合でも、ツールはシェルアップロードを試み続けます。
* **リトライロジック:** アップロードやコマンド実行が失敗した場合、指数バックオフによるリトライを実装し、サーバーやネットワークの問題に対処します。
* **HTML 出力の解析:** コマンド出力に HTML が含まれている場合、ツールはページのタイトルなどの有用な情報を抽出しようとします。
* **インタラクティブ CLI:** シェルアップロード後、サーバーと対話するためのユーザーフレンドリーなコマンドラインインターフェースを提供します。
* * *
## 使用方法
### ステップ 1: リポジトリをクローンする
リポジトリをローカルマシンにクローンします:
root@kitploit:~
git clone https://github.com/dragonked2/CVE-2024-50379-POC.git
cd CVE-2024-50379-POC
### ステップ 2: 依存関係をインストールする
必要な Python ライブラリがインストールされていることを確認します:
root@kitploit:~
pip install requests
### ステップ 3: スクリプトを実行する
以下のコマンドでスクリプトを実行します:
root@kitploit:~
python exploit_cve_2024_50379.py
### ステップ 4: ベース URL を入力する
スクリプトは、脆弱なサーバーのベース URL(例: `http://localhost:8080`)の入力を求めます。URL に `http://` または `https://` が含まれていない場合は、自動的に `http://` が追加されます。
### ステップ 5: シェルをアップロードしてコマンドを実行する
JSP シェルが正常にアップロードされると、サーバー上で実行するコマンドを対話的に入力できます。スクリプトは出力を表示します。
対話例:
root@kitploit:~
[+] Enter the base URL (e.g., localhost:8080): http://127.0.0.1:8080
[+] Checking server accessibility...
[+] /uploads directory not found (404), but continuing with upload attempt...
[+] Attempting to upload shell (Attempt 1/3)...
[+] Shell uploaded successfully! Check the URL: http://127.0.0.1:8080/uploads/shell.jsp
[+] Enter the command to execute on the server (or 'exit' to quit): whoami
[+] Executing command: whoami
[+] Command output:
root
### ステップ 6: ツールを終了する
操作が終了したら、`exit` と入力してツールを終了します。
* * *
## エラーハンドリングとリトライ
このツールは、以下のような一般的な問題に対して堅牢なエラーハンドリングを備えています:
* サーバーが利用不可、またはネットワークの問題。
* JSP シェルのアップロード試行の失敗。
* コマンド実行の失敗。
失敗した操作は、2秒の間隔を空けて最大3回自動的にリトライされます。リトライ後も失敗した場合、エラーメッセージが表示されます。
* * *
## 貢献
貢献は歓迎します!バグを見つけた場合や改善の提案がある場合は、Issue を開くかプルリクエストを送信してください。
### 貢献方法:
1. リポジトリをフォークします。
2. 新しいブランチを作成します。
3. 変更を加えてテストします。
4. 変更内容を説明するプルリクエストを送信します。
* * *
## 免責事項
このツールは教育およびペネトレーションテストの目的のみを意図しています。所有していない、または明示的なテスト許可がないシステムではこのツールを使用しないでください。無断使用は違法であり、刑事責任を問われる可能性があります。
* * *
## ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については LICENSE ファイルを参照してください。