Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-33032 — Un seul appel de fonction manquant lors de l'enregistrement de la route a suffi pour transformer l'interface MCP en passerelle RCE non authentifiée. | Kitploit
Outils/GitHubGitHub/keraattin/cve-2026-33032
ReconnaissanceScanners de VulnérabilitésExploitationSécurité WebSécurité RéseauTests d'IntrusionSécurité des API
GitHubkeraattin/cve-2026-33032

CVE-2026-33032

Un seul appel de fonction manquant lors de l'enregistrement de la route a suffi pour transformer l'interface MCP en passerelle RCE non authentifiée.

Voir le dépôt
544il y a 5 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-33032 / MCPwn

CVE CVSS Status Affected License Python

Outil de détection non destructif pour le contournement d'authentification MCP de nginx-ui connu publiquement sous le nom de MCPwn. Permet une prise de contrôle non authentifiée en deux requêtes HTTP de toute instance nginx-ui exécutant une version vulnérable.

Table des matières

  1. Faits rapides
  2. Vue d'ensemble de la vulnérabilité
  3. Analyse technique approfondie
  4. Stratégie de détection
  5. Installation
  6. Utilisation
  7. Exemple de sortie
  8. Chaînage avec CVE-2026-27944
  9. Remédiation
  10. Utilisation responsable
  11. Références
  12. Licence

Faits rapides

ChampValeur
ID CVECVE-2026-33032
AliasMCPwn
CVSS 3.19.8 / Critique (AV:N / AC:L / PR:N / UI:N / S:U / C:H/I:H/A:H)
CWECWE-306 Absence d'authentification pour une fonction critique
Produit concernénginx-ui (github.com/0xjacky/nginx-ui)
Versions concernéesToutes les versions antérieures à 2.3.4
Version corrigée2.3.4
Statut d'exploitationActive dans la nature (Picus Security, Recorded Future)
Exposition Shodan~2 689 instances accessibles sur Internet
Date de publication2026-04-15

Vue d'ensemble de la vulnérabilité

nginx-ui expose une interface Model Context Protocol (MCP) qui permet à un opérateur authentifié de piloter des outils destructeurs tels que la modification de la configuration nginx, les commandes de redémarrage et les opérations de sauvegarde via JSON-RPC.

Le point de terminaison /mcp est protégé par le middleware AuthRequired(), tandis que son point de terminaison associé /mcp_message, qui reçoit réellement les invocations d'outils, a été déployé sans le middleware. Tout client capable d'atteindre l'interface sur le réseau peut :

  1. Ouvrir un flux Server Sent Events (SSE) vers /mcp et recevoir un sessionID frais sans présenter aucune information d'identification.
  2. Utiliser ce sessionID pour invoquer n'importe quel outil MCP enregistré en envoyant une requête POST vers /mcp_message, toujours sans authentification.

L'attaquant obtient un contrôle total du processus nginx : modifier les blocs serveur pour rediriger le trafic, extraire les clés privées TLS via des lectures de chemins, recharger ou arrêter nginx, et implanter des portes dérobées persistantes.

Analyse technique approfondie

Cause racine au niveau du code

// vulnérable (pré-2.3.4)
r.GET("/mcp",          AuthRequired(), mcpHandler)
r.POST("/mcp_message", mcpMessageHandler)    // middleware manquant

// corrigé dans 2.3.4
r.GET("/mcp",          AuthRequired(), mcpHandler)
r.POST("/mcp_message", AuthRequired(), mcpMessageHandler)

Un seul appel de fonction manquant dans l'enregistrement des routes a suffi pour transformer l'interface MCP en passerelle RCE non authentifiée.

Schéma d'attaque de bout en bout

  Attaquant                              nginx-ui (<2.3.4)
     |   1) GET /mcp  (sans auth)              |
     | -------------------------------------->  |
     |   2) event: endpoint data: /mcp_message?sessionID=XYZ
     | <--------------------------------------  |
     |   3) POST /mcp_message?sessionID=XYZ     |
     |      corps : JSON-RPC call_tool "nginx_reload" ou
     |             "edit_config {...}"          |
     | -------------------------------------->  |
     |   4) 200 OK ; outil exécuté avec tous les privilèges
     | <--------------------------------------  |

Matrice d'impact

Outil MCPEffet sur le serveur nginx
edit_configRéécrire des blocs serveur arbitraires, insérer un upstream attaquant
reload_nginxAppliquer la configuration de l'attaquant sans action manuelle
stop_nginxDéni de service
read_fileExfiltrer les clés privées TLS, les informations d'identification depuis les chemins montés
create_certRéémettre des certificats TLS sous le contrôle de l'attaquant
list_backups / downloadRécupérer l'intégralité de la sauvegarde nginx-ui, y compris node_secret et les hachages

Stratégie de détection

Ce dépôt évite intentionnellement toute action destructrice. Le détecteur n'utilise que des méthodes MCP en lecture seule (tools/list). La logique :

> Étape 1  Empreinte de nginx-ui via
>         GET /               (titre HTML, bundles JS)
>         GET /api/settings   (JSON référençant les clés nginx-ui)
>         Extraction de la version via l'en-tête / regex du corps
> Étape 2  Ouvrir le flux SSE vers /mcp
>         Analyser le premier sessionID de l'événement "endpoint"
> Étape 3  POST /mcp_message?sessionID=<id>
>         Corps : {"jsonrpc":"2.0","method":"tools/list","params":{}}
>         Aucun en-tête Authorization
> Étape 4  Vulnérable si statut 200 et le corps contient un manifeste d'outils
>         Corrigé si statut 401 / 403 / 404
>         Non concluant sinon

Pourquoi c'est sûr

La méthode JSON-RPC tools/list est en lecture seule. Elle énumère les outils connus du serveur MCP mais n'en invoque aucun. Le script refuse d'envoyer toute autre méthode et ne construit jamais de charges utiles pour les outils destructeurs.

Installation

git clone https://github.com/your-org/CVE-2026-33032-detector.git
cd CVE-2026-33032-detector
python3 --version      # 3.9 ou plus récent
# Aucun paquet tiers requis.

Pour le composant Nmap NSE, copiez nginx-ui-mcpwn.nse dans votre répertoire de scripts local et actualisez la base de données de scripts :

cp nginx-ui-mcpwn.nse /usr/share/nmap/scripts/
sudo nmap --script-updatedb

Utilisation

Détecteur Python

# Cible unique
python3 detect_nginx_ui_mcpwn.py --target https://nginx-ui.internal

# Analyse en masse depuis un fichier
python3 detect_nginx_ui_mcpwn.py --targets targets.txt --workers 20

# Sortie JSON (NDJSON) adaptée au piping vers jq
python3 detect_nginx_ui_mcpwn.py --target 10.0.0.5:9000 --json | jq .

Référence des arguments en ligne de commande :

Télécharger l’outil