Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
nmap-vulners — 감지된 네트워크 서비스에 대한 알려진 취약점(CVE)을 식별하기 위해 Vulners API를 쿼리하는 Nmap NSE 스크립트로, 자동화된 CVE 조회 및 CVSS 점수 산정을 통해 표준 포트 스캐닝을 향상시킵니다. | Kitploit
도구/GitHubGitHub/vulnerscom/nmap-vulners
Vulnerability ScannersVulnerability AnalysisInformation GatheringNetwork Security
GitHubvulnerscom/nmap-vulners

nmap-vulners

감지된 네트워크 서비스에 대한 알려진 취약점(CVE)을 식별하기 위해 Vulners API를 쿼리하는 Nmap NSE 스크립트로, 자동화된 CVE 조회 및 CVSS 점수 산정을 통해 표준 포트 스캐닝을 향상시킵니다.

저장소 보기
3.4k5595129일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
<div align="center">

# nmap-vulners

**nmap 서비스 스캔을 실제 공격 대상이 되는 CVE 및 익스플로잇의 순위 목록으로 변환합니다.**

nmap이 이미 식별한 소프트웨어를 가져와 [Vulners](https://vulners.com) 데이터베이스에 해당 소프트웨어에 대해 알려진 내용을 질의하고, 그 답변을 스캔 보고서 안에 출력하는 하나의 NSE 스크립트입니다. 실제로 익스플로잇 가능한 항목을 기준으로 가장 심각한 것부터 나열합니다.

[![tests](https://img.shields.io/github/actions/workflow/status/vulnersCom/nmap-vulners/ci.yml?branch=master&label=tests&logo=github)](https://github.com/vulnersCom/nmap-vulners/actions)
[![license](https://img.shields.io/badge/license-Nmap%20Public%20Source-0e7c86)](LICENSE)
[![nmap](https://img.shields.io/badge/nmap-7.x-4b8bbe?logo=gnu)](https://nmap.org)
[![data](https://img.shields.io/badge/data-vulners.com-ff5f56)](https://vulners.com)
[![stars](https://img.shields.io/github/stars/vulnersCom/nmap-vulners?logo=github&color=yellow)](https://github.com/vulnersCom/nmap-vulners/stargazers)

<img src="https://assets.kitploit.com/production/public/readmes/1680/0a17fe209e2ad4d8bbd8bf49c72243a8c8b3f0fb9e603317b21c8a2cd6982b0f.gif" alt="API 키가 없는 SSH 포트, 키가 있는 동일 포트, 그리고 Coyote 배너 뒤의 Tomcat을 식별하는 웹 포트에 대한 세 가지 스캔" width="900">

<sub>스캔용으로 공개된 호스트에 대한 실제 스캔입니다. 키 없음, 그다음 키 있음, 그다음 웹 포트: nmap의 <code>-sV</code>가 Coyote 배너를 보고하고 스윕이 그 뒤의 Tomcat과 jQuery를 식별합니다.</sub>

</div>

---

## 기능

열려 있는 모든 포트에 대해 nmap이 식별한 소프트웨어(`-sV`가 생성한 CPE)를 조회하고 Vulners가 해당 소프트웨어에 대해 알고 있는 내용을 출력합니다. 점수만이 아니라 실제로 익스플로잇되고 있는 항목을 기준으로 가장 심각한 것부터 나열하며, 각 행은 해당 정보의 상세 페이지로 연결되는 링크입니다.

HTTP 포트에서는 웹 스택 자체도 지문 분석하여 `-sV`가 볼 수 없는 소프트웨어(애플리케이션 프레임워크, CMS, 리버스 프록시 뒤의 PHP 버전)를 식별합니다. 721개의 규칙이 버전 정보를 담고 있는 응답의 부분( `Server` 헤더, `X-Powered-By`, 쿠키, 페이지 제목, `<meta>` 태그, `<script src>` 파일 이름 및 본문)을 읽습니다. 이러한 식별 결과도 조회되어 포트에 게시되므로 나머지 스캔에서 활용할 수 있습니다.

스윕 외에 추가로 수행하는 두 가지 작업:

* **nmap 자체의 서비스 배너를 읽습니다.** `-sV`가 서비스를 식별하지 못한 경우, 원시 배너를 FTP, SMTP, SSH, MySQL, DNS, NTP, LDAP 등에 대한 규칙과 대조합니다. 이는 추가 요청 비용이 들지 않으며, 그 외에는 포트가 아무것도 보고하지 않을 상황에서 유용합니다.
* **자신을 밝히지 않는 제품에 질의합니다.** 자신의 이름은 밝히면서 버전을 숨기는 CMS는 흔하며, 아무리 패턴 매칭을 해도 페이지에 없는 숫자를 추출할 수는 없습니다. 제품이 인식되었지만 버전이 인식되지 않은 경우, 답을 알 수 있는 곳에 요청 하나를 보냅니다. Drupal의 경우 `/CHANGELOG.txt`, Joomla의 경우 `/administrator/manifests/files/joomla.xml`입니다. 여섯 가지 프로빙 대상 제품 중 어느 것도 실행하지 않는 호스트에는 추가 요청이 전송되지 않습니다.```sh
nmap -sV --script vulners <target>
```
That is the whole interface. It works without an API key; with one it tells you
more. There is no mode switch.```
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
```
키가 있으면 동일한 호스트에 대한 동일한 스캔이 다르게 응답합니다. `KEV`는
CISA가 해당 취약점이 실제 환경에서 악용된 것으로 기록했음을 의미하고, `EPSS`는
악용될 게시된 확률입니다:```
| 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
```
동일한 272개의 발견 항목, 다른 순서, 다른 최상위 행 - 그리고 그중 22개는 더 많이
악용 가능한 것으로 알려져 있는데, 이는 각 익스플로잇을 해당 CVE에 연결하는 키가 있기 때문이다.
이 두 결과 모두 vulners.com의 실제 응답으로, 해당 배너를 제시하는 로컬 서버를 대상으로 캡처된 것이다.

## 순위

사실은 예측보다 우선한다. 발견 항목은 다음과 같이 정렬된다:

1. **CISA KEV** - 실제 환경에서 악용된 것으로 기록됨
2. **SSVC `active`** - 조정자가 악용이 진행 중이라고 판단한 경우
3. **익스플로잇 존재** - 이 취약점 또는 해당 CVE에 대해 코드가 공개됨
4. **높은 EPSS** - 모델이 악용을 예측함
5. 그 외 모든 항목

CVSS는 동일한 대역 내에서만 동률을 깨며, 대역 간에는 적용되지 않는다: 악용된 7.5는
악용되지 않은 9.8보다 더 심각한 문제이며, 이를 말해주는 순서가 바로 이것이다.

열은 데이터를 따른다. 응답이 담지 않은 신호는 빈 셀을 표시하는 대신 해당 열을 잃는다.
빈 EPSS는 "조용함"으로 읽히기 때문이며, 이는 존재하지 않는 필드가 뒷받침할 수 없는 주장이다.

## API 키가 추가하는 것

| | |
|---|---|
| **키 없음** | nmap이 찾은 모든 CPE가 무료 엔드포인트에서 조회된다. 발견 항목, 점수, 익스플로잇 플래그 및 Vulners 자체 AI 점수. 크레딧 없음, 계정 없음 |
| **키 있음, 크레딧 없음** | 각 발견 항목은 id 엔드포인트가 아는 정보를 얻는다: 제목, 날짜, 상위 권고 또는 익스플로잇 페이지, 익스플로잇-대-CVE 연결, CISA KEV, 그리고 라이선스에 따라 EPSS 및 SSVC |
| **키 있음, 크레딧 1개** | 무료 경로로 전혀 식별할 수 없었던 소프트웨어가 원시 배너에서 식별된다. 여기서 비용이 드는 유일한 항목이며, CPE가 없는 서비스에만 해당한다 |

이미 CPE를 보유한 포트는 크레딧을 소모하지 않는다: 네 가지 제품을 대상으로 측정한 결과,
무료 조회는 CPE에 대해 유료 조회와 **동일한 CVE**를 반환한다. 크레딧이 구매하는 것은
식별이지 더 많은 취약점이 아니다.

무료 키는 [vulners.com/userinfo](https://vulners.com/userinfo)에서 얻을 수 있다.

## 설치

**macOS, Linux, Kali, WSL** - 인수 없이 한 줄로:```sh
curl -fsSL https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/install.sh | sh
```
**Windows** - 관리자 권한의 PowerShell:```powershell
irm https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/install.ps1 | iex
```
설치 프로그램은 nmap에 데이터가 저장되는 위치를 묻고, 스크립트와 해당 데이터 파일을 그곳에 복사한 다음 스크립트 데이터베이스를 재구축하고, `--script vulners`가 방금 설치한 항목으로 실제로 해석되는지 확인합니다. nmap에는 자체 `vulners.nse`가 포함되어 있으며, 이 설치가 그것을 대체합니다.

<details>
<summary><b>루트 권한 없이, 및 기타 옵션</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

# a specific directory
./install.sh --prefix /usr/local/share/nmap

# a specific release
./install.sh --ref v2.0

# remove everything it installed
./install.sh --uninstall
```
PowerShell도 동일한 옵션을 사용합니다: `-User`, `-Prefix`, `-Ref`, `-Uninstall`.

</details>

<details>
<summary><b>체크아웃에서</b></summary>```sh
git clone https://github.com/vulnersCom/nmap-vulners
cd nmap-vulners
./install.sh
```
설치 프로그램은 옆에 있는 파일들을 사용하므로, 이 방식은 여러분이 클론한 내용을 정확히 설치합니다. 체크아웃 디렉터리에서 스크립트를 직접 실행해도 작동합니다:```sh
nmap -sV --script "$PWD/vulners.nse" <target>
```
> 체크아웃에서 실행할 때는 **절대** 경로를 사용하세요. nmap은 상대 경로
> `--script ./vulners.nse`를 자체 `script.db`에 대해 먼저 확인하고,
> nmap에 포함된 복사본을 조용히 실행하므로 여러분의 것이 아닌 복사본이 실행됩니다.

</details>

<details>
<summary><b>수동 설치</b></summary>

파일 하나: `vulners.nse`를 `<nmap data dir>/scripts/`에 복사하고
`sudo nmap --script-updatedb`를 실행하세요. 배치할 다른 것은 없습니다. 스크립트는
사전을 스캔 시점에 다운로드하고 디스크에 아무것도 쓰지 않으므로, 잊을 것도 없습니다.
이전에는 실행은 되지만 아무것도 찾지 못하고 그 이유를 알려주지 않는 스크립트가
생기곤 했습니다.

1.x에서 업그레이드하는 경우, 해당 디렉터리에서 `vulners_enterprise.nse`와
`http-vulners-regex.nse`도 삭제하세요. 남아 있는 `http-vulners-regex.nse`는
여전히 `default` 카테고리를 포함하며, 일반 `-sC`에서도 대상을 계속 훑습니다.
설치 프로그램이 이 작업을 대신 처리합니다.

nmap 데이터 디렉터리는 보통 `/usr/share/nmap`(Debian, Ubuntu, Kali),
`/usr/local/share/nmap`(소스에서 빌드), `/opt/homebrew/share/nmap`
(Homebrew) 또는 `C:\Program Files (x86)\Nmap`(Windows)입니다. 확실히 하려면 nmap에 물어보세요:```sh
nmap -d2 --script-help probe 2>&1 | grep nse_main.lua
```
`nse_main.lua` 파일이 들어 있는 디렉터리가 이 nmap이 사용하는 디렉터리입니다.

</details>

## 스크립트 인자

| 인자 | 기본값 | 의미 |
|---|---|---|
| `vulners.mincvss` | `0` | 이 값보다 낮은 점수의 결과를 숨깁니다. 점수가 매겨지지 않은 게시판과 알려진 익스플로잇이 있는 항목은 임계값과 관계없이 표시됩니다 |
| `vulners.paths` | 게시된 939개 경로 | 웹 스캔용 경로: Lua 목록, 줄마다 경로 하나씩 있는 파일을 가리키는 문자열 하나, 또는 스캔을 끄는 `none`. 읽을 수 없는 파일을 지정하면 게시된 목록으로 대체하지 않고 스캔을 중단하고 그 사실을 알립니다 |
| `vulners.width` | `80` | 테이블이 배치되는 터미널 너비 |
| `vulners.max_items` | `32` | 전체 스캔에서 청구되는 항목의 상한 |
| `vulners.api_key` | - | API 토큰. 누출 위험: nmap이 자체 명령줄을 `-oX`에 복사합니다 |
| `vulners.api_key_file` | - | 첫 줄이 토큰인 파일의 절대 경로 |
| `vulners.api_host` | `vulners.com` | API의 호스트 이름 |
| `vulners.api_port` | `443` | `api_host`의 포트 |

이름만 사용해도 되므로 `--script-args mincvss=7`만으로 충분합니다.

1.x 인자 접두사 - `vulners_enterprise.*` 및
`http-vulners-regex.paths` - 는 한 릴리스 동안 허용되며
폐기 알림을 출력합니다.

## API 키를 보관할 위치

선호 순서:

1. `~/.nmap/vulners.key`, 한 줄, 모드 600 - 설치 프로그램이 작성하도록 제안합니다
2. 환경의 `VULNERS_API_KEY`
3. `--script-args vulners.api_key_file=/absolute/path`
4. `--script-args vulners.api_key=<token>`

마지막 방법은 편리하지만 누출 위험이 있습니다: nmap이 자체 명령줄을 모든
보고서에 복사하므로 토큰이 `-oX` 출력의 `args` 속성과 셸
기록에 남게 됩니다. 스크립트 자체는 디버그 출력을 포함해 토큰을 어디에도
기록하지 않습니다. 이를 확인하는 회귀 테스트가 있습니다.

명시적으로 지정한 키 파일을 읽을 수 없으면 조용히 대체하지 않고 실행을
중단합니다. 파일을 지정한 운영자는 그 파일을 의미하는 것이므로 - 보고서에는
어느 파일이었는지 표시됩니다. 잘못 입력된 경로는 깨끗한 스캔처럼 보일 수 없습니다.

## 지문의 출처

스크립트는 지문을 휴대하지 않습니다. 첫 호스트에 접촉하기 전에 스캔당 세 개의
사전을 한 번 다운로드합니다:```
https://raw.githubusercontent.com/vulnersCom/nmap-vulners/catalog/
    index.json          what exists, at which serial
    fingerprints.json   721 product and version rules
    paths.json          939 paths the sweep requests
    probes.json         targeted version probes
```
스캔당 요청은 네 번입니다. 호스트당도 포트당도 아닌 파일당 한 번씩이며, nmap의 사전 스캔 단계에서 250KB JSON 중 40KB가 압축된 상태로 전송됩니다. 게시된 브랜치를 기준으로 측정했습니다. 따라서 설치된 스크립트는 업데이트 없이도 새 핑거프린트를 자동으로 받아들입니다.

**파일 시스템에 아무것도 쓰지 않습니다.** 사전은 스캔이 진행되는 동안만 메모리에 보관되었다가 버려지며, 이는 nmap이 제공하는 모든 스크립트가 동작하는 방식과 같습니다. 총 611개 중 26개가 쓰기용 파일을 열지만, 모두 스크립트 인수가 지정한 위치에만 씁니다. 캐시를 유지하는 스크립트는 없으며, 이 스크립트도 마찬가지입니다.

**다운로드할 수 없어도 스캔은 계속 실행됩니다.** 사전은 웹 핑거프린팅에만 사용되고 그 외에는 아무것도 하지 않으므로, GitHub에 연결할 수 없는 시스템은 그 기능만 잃고 나머지는 모두 유지합니다. nmap 자체가 식별한 소프트웨어는 여전히 조회되며, 보고서에는 어떤 기능이 누락되었는지 명시되어 빈 결과를 깨끗한 네트워크로 오인하지 않게 해줍니다.

| 인수 | 기능 |
|---|---|
| `vulners.catalog_url=<url>` | 미러에서 대신 가져오기 - 에어갭 네트워크용. 대괄호 안의 호스트 이름 또는 IPv6 주소, `http://[fd00::1]/catalog/` |
| `vulners.catalog=none` | 전혀 가져오지 않음; nmap이 명명한 것만 조회 |

## 스위프(sweep)와 그 소음 수준

HTTP 포트에서 스크립트는 카탈로그가 게시하는 모든 경로(939개 경로)를 요청하고, 모든 응답에 대해 721개 규칙 전체를 대조합니다. 경로는 WhatWeb, nuclei, FingerprintHub에서 가져온 것으로, 제품이 인식되는 위치이지 추측이 아닙니다. 실행 중이지 않은 소프트웨어에 속한 경로라도 요청할 가치가 있는데, 응답에는 여전히 `Server`, `X-Powered-By`, 쿠키, 제목이 포함되어 있고, 규칙은 바로 그 항목들에서 앞에 있는 스택을 찾아내기 때문입니다.

**속도는 우리 설정이 아니라 사용자의 `-T`가 결정합니다.** 목록은 줄어들지 않으며, 줄어드는 것은 속도뿐입니다:

| | 배치 수 | 배치 간 대기 | 측정값, 웹 포트 1개 기준 |
|---|---|---|---|
| `-T0` paranoid | 188 x 5 | 2 s | 11 m 22 s |
| `-T1` sneaky | 94 x 10 | 1 s | 1 m 56 s |
| `-T2` polite | 38 x 25 | 0.5 s | 26.2 s |
| `-T3` normal | 10 x 100 | 0.1 s | 7.6 s |
| `-T4` aggressive | 4 x 250 | 없음 | 6.7 s |
| `-T5` insane | 1 | 없음 | 6.6 s |

여섯 가지 모두 동일한 로컬 서버를 대상으로 한 번의 실행에서 측정했습니다. 해당 서버에 `-sV`만 단독으로 실행하면 6.1초가 걸리므로, 기본 설정에서 스위프는 1.5초를 추가로 소모합니다. 느린 두 행은 `-T0`과 `-T1`이 제 역할을 하는 것입니다. 188개와 94개 배치 사이에 의도적인 대기가 있습니다.

요청은 34~48개 연결에 걸쳐 파이프라인으로 전송되며, 동시에 최대 4개만 열립니다. 이는 nselib의 `pipeline_go`로, nmap 자체의 `http-enum`이 사용하는 것과 동일한 메커니즘이며 서버의 `Keep-Alive: max=`와 `--script-args http.max-pipeline=N`을 존중합니다.

`--script-args vulners.paths=none`은 스위프를 완전히 끕니다.

## 작동 방식```
nmap -sV
   |
   +-- service fingerprint --> port.version.cpe --------------+
   |                                                          |
   +-- vulners.nse                                            |
         reads nmap's banner for services -sV could not name   |
         on an HTTP port: requests the path list in one        |
         pipeline, matches 721 rules against the header, the   |
         title, the meta tags, the scripts and the body        |
         probes for a version when a product hid it            |
         publishes everything it recognised ------------------+
                                                               |
                                                               v
                                        GET /api/v3/burp/software/  per identity
                                          free, no key, CDN-cached
                                                               |
                                        POST /api/v3/search/id/ per 100 findings
                                          free, needs a key: enrichment
                                                               |
                                        POST /api/v4/audit/smart  only for a
                                          service with no CPE: 1 credit
                                                               |
                                                   ranked, filtered, printed
```
답변은 전체 스캔에 대해 신원별로 캐시되므로, 동일한 서버가 100대라도 조회는 한 번만 수행됩니다. 보강 정보는 발견 항목 ID별로 캐시되므로, 중복된 소프트웨어를 실행하는 두 개의 웹 포트가 각 문서를 한 번씩만 가져옵니다.

## 기계 판독 가능 출력

출력되는 모든 내용은 구조화되어 있으므로, `-oX`는 사람이 읽는 텍스트를 건드리지 않고도 파싱할 수 있습니다. 스크립트 ID, 두 개의 테이블 수준, 그리고 다섯 개의 원본 요소 키는 1.x에서 변경되지 않았으며, 이는 DefectDojo, Faraday, nmap2csv 및 raven이 읽는 형식입니다:```xml
<script id="vulners">
  <elem key="schema">2.0</elem>
  <elem key="mode">keyed</elem>
  <table key="cpe:/a:apache:http_server:2.4.7">
    <table>
      <elem key="id">CVE-2021-40438</elem>
      <elem key="type">cve</elem>
      <elem key="severity">CRITICAL</elem>
      <elem key="cvss">9.0</elem>
      <elem key="cvss_type">cvss3.1</elem>
      <elem key="is_exploit">false</elem>
      <elem key="exploit_known">true</elem>
      <elem key="kev">true</elem>
      <elem key="epss">0.99612</elem>
      <elem key="exploitation">active</elem>
      <elem key="title">Apache HTTP Server SSRF in mod_proxy</elem>
      <elem key="href">https://vulners.com/cve/CVE-2021-40438</elem>
      <elem key="source_href">https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2021-40438</elem>
    </table>
  </table>
</script>
```
2.0의 새로운 기능: `schema`, `mode`, `severity`, `exploit_known`, `kev`, `epss`,
`epss_percentile`, `exploitation`, `ai_score`, `title`, `published`, `href`,
`source_href`, `found_on`. 각 항목은 존재하거나 부재하며, 절대 비어 있지 않습니다.
이전보다 더 깊게 중첩된 것은 없습니다. 세 번째 테이블 수준은
검토된 모든 임포터에 보이지 않기 때문입니다.

`href`는 두 모드 모두에서 항상 해당 발견에 대한 vulners.com 페이지입니다.
엔드포인트 자체의 `href`는 **업스트림** 주소입니다 - CVE의 경우 nvd.nist.gov,
스크랩된 익스플로잇의 경우 github.com - 그리고 이는 별도로
`source_href`로 전달되므로, 어느 필드의 의미도 어떤 모드가 생성했는지에 의존하지 않습니다.

구조화된 출력은 `mincvss`를 통과한 모든 발견을 항상 포함하며,
상세 수준 사다리가 텍스트에서 숨기는 발견조차 포함합니다 - 따라서 어떤 자동화도
`-v`를 전달하지 않아 발견을 잃지 않습니다.

**렌더링된 텍스트는 단절입니다.** `*EXPLOIT*` 및 `*HAS EXPLOIT*` 토큰과
탭으로 구분된 레이아웃은 사라지고, 위의 정렬된 테이블로 대체되었습니다.
행별 vulners.com 링크는 유지되었습니다: 그것은 마지막 열이며, 레이아웃이
줄이지 않을 유일한 셀입니다. URL의 절반은 URL이 아니기 때문입니다. 텍스트 스크래핑
소비자는 업데이트가 필요합니다; `-oX` 소비자는 그렇지 않습니다.

## 정중하게 스캔하기

네트워크 스캔은 API에 보이는 것보다 훨씬 적게 요청합니다:

* 소프트웨어 식별자당 요청 1회, 답변은 전체 스캔 동안 캐시됨
* 이미 진행 중인 조회는 반복되지 않고 대기함
* 발견은 **CDN 캐시된** 엔드포인트로 이동하며, 키가 구성되어 있어도 키 없이
  진행되므로 공유 캐시에 머물러 오리진에 도달하지 않음
* 939개 경로 스윕은 경로당 하나가 아닌 소수의 **파이프라인 연결**을 통해
  실행되며, 압축된 페이지를 요청하고, 바이트 예산을 소진하면 매칭을 중단함
* 속도 제한이나 중단은 호스트별 재시도 대신 해당 스캔 구간을 중지하며,
  거부된 키는 스캔을 침묵시키는 대신 무료 경로로 전환됨
* 크레딧은 무료 경로가 전혀 답할 수 없는 곳에서만 소비됨

## 개발

테스트, 위생 게이트 및 `CONTRIBUTING.md`는 git 저장소에만
있습니다; 릴리스 아카이브는 스크립트와 해당 데이터를 제공합니다. 8개의 게이트는
명시된 곳을 제외하고 모두 오프라인이며, CI는 정확히 이를 실행합니다:```sh
nmap -sn -Pn --script ./tests/run.nse --script-args testdir=tests,root=. 127.0.0.1
python3 tests/e2e/run_e2e.py
python3 tools/check.py
python3 tools/catalog.py --check
python3 tools/xml_contract.py --selftest
python3 tools/fingerprints/selftest.py
python3 tools/catalog_diff.py --selftest
python3 tools/nmap_style.py
```
270개의 유닛 테스트 케이스가 실제 NSE 라이브러리를 대상으로 nmap 내부에서 실행되고, 64개의 엔드투엔드 케이스는 실제 nmap 바이너리를 로컬 웹 서버와 실제 API가 강제하는 것과 동일한 규칙을 적용하는 대체 Vulners API에 대해 구동합니다. 위생 게이트는 비밀, 스캔 출력, 편집기 잔여물을 트리에서 제외하고, NSE가 손실된 결과로 바꿔버릴 전역 읽기를 거부합니다. 마지막 네 개는 데이터와 이를 게시하는 도구를 담고 있습니다 - 카탈로그의 구조, 모든 임포터가 읽는 XML 계약, 패턴 변환기, 그리고 재빌드가 게시하기에 안전한지 판단하는 게이트입니다. 마지막 하나는 전체 저장소를 [Nmap의 자체 코드 표준](https://secwiki.org/w/Nmap/Code_Standards)에 맞추는데, `HACKING`은 이를 nmap 트리에 포함되길 원하는 스크립트의 권위로 명명합니다: 탭 없음, 끝 공백 없음, 80열 미만 줄, 세미콜론 없음, `--;`로 시작하는 비공개 NSEdoc, Python은 PEP 8.
`python3 tests/e2e/run_e2e.py --live`는 실제 서비스에 대한 검사를 추가합니다.
[CONTRIBUTING.md](https://github.com/vulnerscom/nmap-vulners/blob/master/CONTRIBUTING.md)를 참조하세요.

## FAQ

**무언가를 악용하나요?** 아니요. 배너와 페이지를 읽고 데이터베이스에 질의할 뿐입니다 - 페이로드를 보내지 않으며 자격 증명을 시도하지 않습니다. `safe`가 아닌 `discovery, intrusive, vuln, external`로 분류되는 이유는 하나입니다: 경로 스윕이 웹 포트의 939개 경로를 요청하는데, nmap의 `safe` 정의는 대량의 대역폭을 사용하는 스크립트를 제외하기 때문입니다. nmap 자체의 `http-enum`도 2,204개를 요청하며 동일한 라벨을 갖습니다. `-T`는 요청이 나가는 속도를 정할 뿐 개수는 정하지 않으며, `--script-args vulners.paths=none`은 스윕을 완전히 끕니다.

**API 키 없이도 작동하나요?** 네, 완전히 작동합니다. 키가 없으면 무료 엔드포인트를 사용하며, 이는 CPE에 대해 유료 엔드포인트와 동일한 취약점을 반환합니다. 키는 발견 항목별 세부 정보를 추가하고, 무료 경로가 명명할 수 없는 소프트웨어도 지정할 수 있습니다.

**왜 `-sC`가 웹 소프트웨어를 더 이상 찾지 못하나요?** `vulners`가 더 이상 nmap의 `default` 카테고리에 없고, `http-vulners-regex.nse`에 있던 핑거프린트 스윕도 마찬가지이기 때문입니다. 대상 소프트웨어의 식별 정보를 제3자에게 보내는 것은 사용자가 요청한 경우에만 이루어져야 합니다: `--script vulners`를 실행하세요.

**왜 한 취약점은 `cvss2.0`을 보여주고 다른 것은 `cvss3.1`을 보여주나요?** 라벨은 점수가 속한 척도를 나타냅니다. Vulners는 출처가 게시한 것을 반환합니다. v2 점수 9.3은 v3 점수 9.3이 아닙니다.

**`mincvss`를 설정했는데 왜 낮은 점수의 항목이 표시되나요?** 알려진 익스플로잇이 있거나, 출처가 점수를 매기지 않았기 때문입니다. 둘 다 의도된 것입니다.

**보고서에 카탈로그를 다운로드할 수 없다고 나옵니다.** 그렇다면 웹 핑거프린팅은 실행되지 않았고 나머지는 모두 실행된 것입니다: nmap 자체가 명명한 소프트웨어는 여전히 조회되었습니다. 그 이유 때문에 명시적으로 언급된 것입니다 - 실행되지 않은 기능은 아무것도 찾지 못한 기능으로 읽히기 때문입니다. 두 원인은 별도의 표현으로 구분됩니다: "다운로드할 수 없음"은 네트워크 문제이고, "응답했지만 사전 중 하나를 읽을 수 없음"은 사용자가 가리킨 미러 문제입니다.

**취약하다고 아는 호스트에서 아무것도 찾지 못했습니다.** `-d2`로 실행하세요: 질의한 모든 식별 정보를 기록합니다. 보통 nmap이 서비스를 명명했지만 버전을 명명하지 않아 조회할 버전이 없는 경우입니다.

## 라이선스

스크립트는 Nmap 자체와 동일한 라이선스입니다 - Nmap Public Source License는 [LICENSE](https://github.com/vulnerscom/nmap-vulners/blob/master/LICENSE)를, 그 의미는 [nmap.org/npsl](https://nmap.org/npsl/)을 참조하세요.

취약점 데이터는 [Vulners](https://vulners.com)에서 제공되며 해당 약관이 적용됩니다.

## 관련 자료

* [vulners.com](https://vulners.com) - 이 스크립트 뒤에 있는 데이터베이스
* [vulnersCom/api](https://github.com/vulnersCom/api) - Python 클라이언트
* [vulnersCom/burp-vulners-scanner](https://github.com/vulnersCom/burp-vulners-scanner) - Burp Suite 내부의 동일한 데이터
* [nmap.org/book/nse.html](https://nmap.org/book/nse.html) - NSE 스크립트 작동 방식

---

<div align="center">

Vulners 팀이 유지 관리함 &lt;[email protected]&gt;

`#nmap` `#nse` `#vulnerability-scanner` `#cve` `#cvss` `#cpe` `#vulners`
`#security-tools` `#pentest` `#infosec` `#network-scanner` `#exploit-database`
`#lua` `#vulnerability-detection` `#security-automation`

</div>
도구 다운로드