
nmap-vulners v1.5
Script NSE pour Nmap qui interroge l'API Vulners pour identifier les vulnérabilités connues (CVE) des services réseau détectés, améliorant le scan de ports standard avec une recherche automatisée de CVE et un score CVSS.
nmap-vulners
Transformez un scan de services nmap en une liste classée de CVE, d'exploits et de ce qui est attaqué dans la nature.
Un script NSE qui prend le logiciel déjà identifié par nmap, interroge la base de données Vulners pour savoir ce qui est connu à son sujet, et affiche la réponse dans le rapport de scan — du pire au meilleur, selon ce qui est réellement exploitable.
De vrais scans d'hôtes publiés pour être scannés. Sans clé, puis avec une clé, puis un port web : le -sV de nmap signale une bannière Coyote et le balayage identifie le Tomcat et le jQuery qui se cachent derrière.
Ce qu'il fait
Pour chaque port ouvert, il recherche le logiciel identifié par nmap — les CPE produits par -sV — et affiche ce que Vulners sait à son sujet : du pire au meilleur selon ce qui est exploité plutôt qu'uniquement selon le score, et chaque ligne est un lien vers la page correspondante.
Sur un port HTTP, il identifie également la pile web elle-même, ce qui nomme les logiciels que -sV ne peut pas voir — un framework applicatif, un CMS, la version de PHP derrière un reverse proxy. 721 règles lisent les parties d'une réponse qui portent une version : l'en-tête Server, X-Powered-By, les cookies, le titre de la page, les balises <meta>, les noms de fichiers <script src> et le corps. Ces identités sont également recherchées et publiées sur le port afin que le reste du scan puisse les utiliser.
Deux choses qu'il fait au-delà du balayage :
- il lit la bannière de service propre à nmap. Lorsque
-sVn'a pas pu nommer un service, la bannière brute est comparée à des règles pour FTP, SMTP, SSH, MySQL, DNS, NTP, LDAP et plus encore. Cela ne coûte aucune requête supplémentaire, et c'est le cas où un port ne signalerait sinon rien du tout. - il interroge un produit qui ne veut pas se révéler. Un CMS qui se nomme lui-même mais cache sa version est courant, et aucun motif de correspondance ne peut extraire un numéro qui n'est pas sur la page. Lorsque le produit est reconnu mais que la version ne l'est pas, une requête est envoyée à l'endroit qui répond —
/CHANGELOG.txtpour Drupal,/administrator/manifests/files/joomla.xmlpour Joomla. Un hôte qui n'exécute aucun des six produits sondés ne reçoit rien de plus.```sh nmap -sV --script vulners
Voilà toute l'interface. Elle fonctionne sans clé API ; avec une, elle vous en dit
davantage. Il n'y a pas de changement de mode.```
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.7 ((Ubuntu))
| vulners: cpe:/a:apache:http_server:2.4.7 272 findings, 56 exploitable
| SEVERITY CVSS AI FLAGS LINK
| ======== ==== ==== ======= ==============================================================
| CRITICAL 10.0 8.8 EXP https://vulners.com/gitee/3E6BA608-776F-5B1F-9BA5-589CD2A5A351
| CRITICAL 9.8 9.9 EXP https://vulners.com/zdt/1337DAY-ID-39214
| CRITICAL 9.8 9.6 EXP https://vulners.com/packetstorm/PACKETSTORM:171631
| CRITICAL 9.8 9.9 https://vulners.com/cve/CVE-2021-44790
| CRITICAL 9.8 9.8 https://vulners.com/cve/CVE-2023-25690
|_ 262 more not shown; -v shows all, -vv adds where each was found
Avec une clé, le même scan du même hôte répond différemment - KEV signifie que la CISA a enregistré la vulnérabilité comme exploitée dans la nature, et EPSS est la probabilité publiée qu'elle le soit :```
| vulners: cpe:/a:apache:http_server:2.4.7 272 findings, 78 exploitable
| SEVERITY CVSS EPSS FLAGS LINK
| ======== ==== ==== ======= ==============================================================
| CRITICAL 9.1 >99% KEV EXP https://vulners.com/cve/CVE-2024-38475
| CRITICAL 9.0 >99% KEV EXP https://vulners.com/cve/CVE-2021-40438
| CRITICAL 9.1 >99% KEV https://vulners.com/cnvd/CNVD-2024-36387
| CRITICAL 10.0 71% EXP https://vulners.com/gitee/3E6BA608-776F-5B1F-9BA5-589CD2A5A351
| CRITICAL 9.8 97% EXP https://vulners.com/cve/CVE-2021-44790
|_ 262 more not shown; -v shows all, -vv adds where each was found
Mêmes 272 résultats, un ordre différent, une première ligne différente — et 22 de plus
connus comme exploitables, car une clé relie chaque exploit aux CVE qu'il
exploite. Ces deux réponses sont de vraies réponses de vulners.com, capturées contre un
serveur local présentant cette bannière.
## Classement
Les faits priment sur les prédictions. Les résultats sont ordonnés :
1. **CISA KEV** — enregistré comme exploité dans la nature
2. **SSVC `active`** — le jugement d'un coordinateur selon lequel l'exploitation est en cours
3. **un exploit existe** — le code est publié, pour celui-ci ou pour une CVE qu'il nomme
4. **EPSS élevé** — un modèle s'attend à une exploitation
5. tout le reste
Le CVSS départage les égalités au sein d'une bande, pas entre elles : un 7,5 exploité est un
problème plus grave qu'un 9,8 non exploité, et c'est l'ordre qui le dit.
Les colonnes suivent les données. Un signal que la réponse n'a pas porté perd sa colonne
plutôt que d'afficher une cellule vide, car un EPSS vierge se lit comme « calme », et
c'est une affirmation qu'un champ absent ne peut pas étayer.
## Ce qu'une clé API ajoute
| | |
|---|---|
| **Sans clé** | Chaque CPE trouvé par nmap est recherché sur le point de terminaison gratuit. Résultats, scores, indicateurs d'exploit et le propre score IA de Vulners. Aucun crédit, aucun compte |
| **Une clé, sans crédits** | Chaque résultat gagne ce que le point de terminaison id connaît : titres, dates, la page d'avis ou d'exploit en amont, le lien exploit-vers-CVE, CISA KEV et — selon la licence — EPSS et SSVC |
| **Une clé, un crédit** | Les logiciels que le chemin gratuit ne pouvait pas nommer du tout sont identifiés à partir de leur bannière brute. C'est la seule chose ici qui coûte quoi que ce soit, et uniquement pour un service sans CPE |
Un port qui porte déjà un CPE ne coûte jamais de crédit : mesuré sur quatre
produits, la recherche gratuite renvoie les **mêmes CVE** que la recherche payante pour un CPE.
Ce qu'un crédit achète, c'est l'identification, pas davantage de vulnérabilités.
Les clés gratuites se trouvent sur [vulners.com/userinfo](https://vulners.com/userinfo).
## Installation
**macOS, Linux, Kali, WSL** — une ligne, sans arguments :```sh
curl -fsSL https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/install.sh | sh
Windows - PowerShell en tant qu'administrateur :```powershell irm https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/install.ps1 | iex
L’installateur demande à nmap où il conserve ses données, y copie les scripts et leurs fichiers de données, reconstruit la base de données des scripts, puis vérifie que `--script vulners` pointe bien vers ce qu’il vient d’installer — nmap fournit son propre `vulners.nse`, et celui-ci le remplace.