
nmap-vulners v1.5
Script NSE de Nmap que consulta la API de Vulners para identificar vulnerabilidades conocidas (CVE) en los servicios de red detectados, mejorando el escaneo de puertos estándar con búsqueda automatizada de CVE y puntuación CVSS.
nmap-vulners
Convierte un escaneo de servicios de nmap en una lista clasificada de CVEs, exploits y qué se está atacando en la naturaleza.
Un script NSE que toma el software que nmap ya identificó, consulta a la base de datos de Vulners qué se sabe al respecto, e imprime la respuesta dentro del informe del escaneo: primero lo peor, según lo que realmente es explotable.
Escaneos reales de hosts publicados para escanear. Sin clave, luego con clave, y luego un puerto web: el -sV de nmap reporta un banner de Coyote y el barrido identifica el Tomcat y el jQuery detrás de él.
Qué hace
Para cada puerto abierto, busca el software que nmap identificó — los CPEs que produjo -sV — e imprime lo que Vulners sabe al respecto: primero lo peor según lo que se está explotando en lugar de solo por puntuación, y cada fila es un enlace a la página detrás de ella.
En un puerto HTTP también identifica la propia pila web, lo que nombra software que -sV no puede ver — un framework de aplicación, un CMS, la versión de PHP detrás de un proxy inverso. 721 reglas leen las partes de una respuesta que llevan una versión: la cabecera Server, X-Powered-By, cookies, el título de la página, etiquetas <meta>, nombres de archivo <script src> y el cuerpo. Esas identidades también se buscan y se publican en el puerto para que el resto del escaneo pueda usarlas.
Dos cosas que hace más allá del barrido:
- lee el propio banner de servicio de nmap. Cuando
-sVno pudo nombrar un servicio, el banner sin procesar se compara con reglas para FTP, SMTP, SSH, MySQL, DNS, NTP, LDAP y más. Eso no cuesta ninguna solicitud extra, y es el caso en el que un puerto de otro modo no reportaría nada en absoluto. - pregunta a un producto que no quiere decirlo. Un CMS que se nombra a sí mismo y oculta su versión es común, y ninguna cantidad de coincidencia de patrones extrae un número que no está en la página. Cuando el producto es reconocido y la versión no, una solicitud va al lugar que responde —
/CHANGELOG.txtpara Drupal,/administrator/manifests/files/joomla.xmlpara Joomla. A un host que no ejecuta ninguno de los seis productos sondeados no se le envía nada extra.```sh nmap -sV --script vulners
Esa es toda la interfaz. Funciona sin una clave de API; con una te proporciona más información. No hay cambio de modo.```
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
Con una clave, el mismo escaneo del mismo host responde de manera diferente: KEV significa que CISA ha registrado la vulnerabilidad como explotada en la naturaleza, y EPSS es la probabilidad publicada de que lo sea:```
| 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
Mismos 272 hallazgos, un orden distinto, una fila superior diferente - y 22 más de ellos
conocidos como explotables, porque una clave vincula cada exploit con los CVE que
explota. Ambas son respuestas reales de vulners.com, capturadas contra un
servidor local que presenta ese banner.
## Clasificación
Los hechos superan a las predicciones. Los hallazgos se ordenan:
1. **CISA KEV** - registrado como explotado en la naturaleza
2. **SSVC `active`** - el juicio de un coordinador de que la explotación está ocurriendo
3. **existe un exploit** - el código está publicado, para este o para un CVE que nombra
4. **EPSS alto** - un modelo espera explotación
5. todo lo demás
CVSS desempata dentro de una banda, no entre bandas: un 7.5 explotado es un peor
problema que un 9.8 no explotado, y este es el orden que lo dice.
Las columnas siguen los datos. Una señal que la respuesta no aportó pierde su
columna en lugar de mostrar una celda vacía, porque un EPSS en blanco se lee como
"tranquilo", y eso es una afirmación que un campo ausente no puede respaldar.
## Qué añade una clave de API
| | |
|---|---|
| **Sin clave** | Cada CPE que nmap encontró se consulta en el endpoint gratuito. Hallazgos, puntuaciones, indicadores de exploit y la propia puntuación de IA de Vulners. Sin créditos, sin cuenta |
| **Una clave, sin créditos** | Cada hallazgo gana lo que el endpoint de id conoce: títulos, fechas, la página del aviso o exploit upstream, el vínculo exploit-a-CVE, CISA KEV y - según la licencia - EPSS y SSVC |
| **Una clave, un crédito** | El software que la ruta gratuita no pudo nombrar en absoluto se identifica desde su banner crudo. Esto es lo único aquí que cuesta algo, y solo para un servicio sin CPE |
Un puerto que ya lleva un CPE nunca cuesta un crédito: medido en cuatro
productos, la consulta gratuita devuelve los **mismos CVE** que la de pago para un CPE.
Lo que compra un crédito es identificación, no más vulnerabilidades.
Las claves gratuitas están en [vulners.com/userinfo](https://vulners.com/userinfo).
## Instalación
**macOS, Linux, Kali, WSL** - una línea, sin argumentos:```sh
curl -fsSL https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/install.sh | sh
Windows - PowerShell como Administrador:```powershell irm https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/install.ps1 | iex
El instalador le pregunta a nmap dónde guarda sus datos, copia los scripts y sus archivos de datos allí, reconstruye la base de datos de scripts y luego verifica que `--script vulners` realmente resuelva a lo que acaba de instalar: nmap incluye un `vulners.nse` propio, y este lo reemplaza.
<details>
<summary><b>Sin root y otras opciones</b></summary>```sh
# into ~/.nmap, no sudo; the installer prints the NMAPDIR line to add to your profile
curl -fsSL https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/install.sh | sh -s -- --user