
nmap-vulners v1.5
Nmap NSE स्क्रिप्ट जो पहचाने गए नेटवर्क सेवाओं के लिए ज्ञात कमजोरियों (CVEs) की पहचान करने के लिए Vulners API से क्वेरी करती है, मानक पोर्ट स्कैनिंग को स्वचालित CVE लुकअप और CVSS स्कोरिंग के साथ बढ़ाती है।
nmap-vulners
nmap सेवा स्कैन को CVEs, CVSS स्कोर और ज्ञात एक्सप्लॉइट्स की सूची में बदलें।
तीन NSE स्क्रिप्ट जो nmap द्वारा पहले से पहचाने गए सॉफ़्टवेयर को लेती हैं, Vulners डेटाबेस से पूछती हैं कि उसके बारे में क्या ज्ञात है, और उत्तर को स्कैन रिपोर्ट के अंदर प्रिंट करती हैं।

तीन स्क्रिप्ट
| स्क्रिप्ट | कुंजी चाहिए? | कार्य |
|---|---|---|
vulners.nse | नहीं | nmap द्वारा मिले हर CPE को सार्वजनिक Vulners एंडपॉइंट पर भेजता है और उसके बारे में जो ज्ञात है उसे प्रिंट करता है, पहले सर्वोच्च CVSS |
vulners_enterprise.nse | हाँ | Vulners API v4 के माध्यम से वही लुकअप: CVSS v3 स्कोर और वे एक्सप्लॉइट जो प्रत्येक CVE को संदर्भित करते हैं |
http-vulners-regex.nse | नहीं | HTTP हेडर और पेज सामग्री से वेब सॉफ़्टवेयर का फ़िंगरप्रिंट लेता है, ताकि बाकी दोनों के पास देखने के लिए कुछ हो, भले ही -sV उसे नाम न दे सके |
वे स्वतंत्र हैं। एक चलाएँ, या तीनों चलाएँ - regex स्क्रिप्ट अपने निष्कर्षों को बाकी दोनों को स्वचालित रूप से सौंप देती है।
इंस्टॉल
macOS, Linux, Kali, WSL - एक पंक्ति, कोई तर्क नहीं:
curl -fsSL https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/install.sh | sh
Windows - PowerShell व्यवस्थापक के रूप में:
irm https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/install.ps1 | iex
इंस्टॉलर nmap से पूछता है कि वह अपना डेटा कहाँ रखता है, स्क्रिप्ट और उनकी डेटा
फ़ाइलों को वहाँ कॉपी करता है, स्क्रिप्ट डेटाबेस को फिर से बनाता है, और फिर जाँचता है कि
--script vulners वास्तव में उसी को संदर्भित करता है जो उसने अभी इंस्टॉल किया है - nmap
अपनी स्वयं की एक vulners.nse के साथ आता है, और यह उसे बदल देती है।
रूट के बिना, और अन्य विकल्प
# 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 v1.5
# remove everything it installed
./install.sh --uninstall
PowerShell समान विकल्प लेता है: -User, -Prefix, -Ref, -Uninstall।
चेकआउट से
git clone https://github.com/vulnersCom/nmap-vulners
cd nmap-vulners
./install.sh
इंस्टॉलर अपने पास मौजूद फ़ाइलों का उपयोग करता है, इसलिए यह ठीक वही इंस्टॉल करता है जो आपने क्लोन किया था। चेकआउट से सीधे स्क्रिप्ट चलाना भी काम करता है:
nmap -sV --script "$PWD/vulners.nse" <target>
चेकआउट से चलाते समय पूर्ण पथ का उपयोग करें। nmap एक सापेक्ष
--script ./vulners.nseको पहले अपने स्वयं केscript.dbके विरुद्ध हल करता है, और चुपचाप आपकी स्क्रिप्ट के बजाय nmap के साथ आई प्रति चलाता है।
मैन्युअल रूप से
पाँच फ़ाइलें, दो निर्देशिकाएँ:
| फ़ाइल | कहाँ जाती है |
|---|---|
vulners.nse, vulners_enterprise.nse, http-vulners-regex.nse | <nmap data dir>/scripts/ |
http-vulners-regex.json, http-vulners-paths.txt | <nmap data dir>/nselib/data/ |
फिर sudo nmap --script-updatedb चलाएँ।
nmap डेटा निर्देशिका आमतौर पर /usr/share/nmap (Debian, Ubuntu, Kali),
/usr/local/share/nmap (स्रोत से निर्मित), /opt/homebrew/share/nmap
(Homebrew) या C:\Program Files (x86)\Nmap (Windows) होती है। निश्चित होने के लिए, nmap से पूछें:
nmap -d2 --script-help probe 2>&1 | grep nse_main.lua
nse_main.lua रखने वाली निर्देशिका वही है जिसका यह nmap उपयोग करता है।
उपयोग
vulners - कोई कुंजी आवश्यक नहीं
nmap -sV --script vulners [--script-args mincvss=<score>] <target>
nmap द्वारा रिपोर्ट किया गया हर CPE देखा जाता है; प्रत्येक भेद्यता उसके स्कोर, उस स्कोर के
पैमाने और एक लिंक के साथ प्रिंट होती है। ज्ञात एक्सप्लॉइट वाली प्रविष्टियाँ *EXPLOIT*
चिह्नित होती हैं और थ्रेशोल्ड चाहे जो भी हो, दिखाई जाती हैं, क्योंकि एक शोषित
निम्न-गंभीरता वाला बग फिर भी आपके सिस्टम से समझौता करवा सकता है।
vulners_enterprise - Vulners API कुंजी
export VULNERS_API_KEY=<token>
nmap -sV --script vulners_enterprise [--script-args mincvss=<score>] <target>

एंटरप्राइज़ एंडपॉइंट CVSS v3 मेट्रिक्स के साथ-साथ उन एक्सप्लॉइट संदर्भों के साथ उत्तर देता है
जिन्हें Vulners ने एकत्र किया है, इसलिए एक शोषित CVE *HAS EXPLOIT* चिह्नित होता है और
एक्सप्लॉइट स्वयं उसके बगल में सूचीबद्ध होता है। एक पोर्ट के सभी CPE एक अनुरोध में जाते हैं।
http-vulners-regex - फ़िंगरप्रिंट लें जिसे -sV नाम नहीं दे सकता
nmap -sV --script http-vulners-regex [--script-args paths={"/"}] <target>

178 पैटर्न HTTP हेडर और पेज मार्कअप - Server, X-Powered-By, जनरेटर टैग, एसेट URL - को
CPE पर मैप करते हैं: वेब सर्वर, CMS, फ्रेमवर्क, WordPress प्लगइन्स, JavaScript लाइब्रेरीज़।
जो कुछ भी मिलता है वह पोर्ट पर प्रकाशित होता है, इसलिए vulners और vulners_enterprise
उसी स्कैन में उसे देखते हैं।
स्क्रिप्ट तर्क
vulners
| तर्क | डिफ़ॉल्ट | अर्थ |
|---|---|---|
vulners.mincvss | 0 | इससे नीचे स्कोर की गई भेद्यताएँ छिपाएँ। बिना स्कोर वाले बुलेटिन और एक्सप्लॉइट हमेशा दिखाए जाते हैं |
vulners.api_host | vulners.com | API का होस्ट नाम |
vulners.api_port | 443 | api_host पर पोर्ट |
vulners_enterprise
| तर्क | डिफ़ॉल्ट | अर्थ |
|---|---|---|
vulners_enterprise.mincvss | 0 | ऊपर जैसा |
vulners_enterprise.api_key | - | API टोकन। पर्यावरण चर को प्राथमिकता दें, नीचे देखें |
vulners_enterprise.api_key_file | - | एक फ़ाइल का पूर्ण पथ जिसकी पहली पंक्ति टोकन है |
vulners_enterprise.api_host | vulners.com | API का होस्ट नाम |
vulners_enterprise.api_port | 443 | api_host पर पोर्ट |
http-vulners-regex
| तर्क | डिफ़ॉल्ट | अर्थ |
|---|---|---|
http-vulners-regex.paths | http-vulners-paths.txt (125 paths) | पथों की एक Lua सूची, या एक स्ट्रिंग जो एक फ़ाइल का नाम देती है जिसमें प्रति पंक्ति एक पथ है |
पूरी पथ सूची एक ही HTTP पाइपलाइन में जाती है। जिस फ़ाइल को पढ़ा नहीं जा सकता वह भेजी गई सूची पर वापस गिरने के बजाय स्क्रिप्ट को रोक देती है, इसलिए फ़ाइल नाम में टाइपो तीन-पथ वाले स्कैन को 125-पथ वाले में नहीं बदल सकता।
API कुंजी कहाँ रखें
प्राथमिकता के क्रम में:
- पर्यावरण में
VULNERS_API_KEY --script-args vulners_enterprise.api_key_file=/absolute/path--script-args vulners_enterprise.api_key=<token>
तीसरा सुविधाजनक है लेकिन लीक कर सकता है: nmap अपनी कमांड लाइन को हर रिपोर्ट में कॉपी करता है,
इसलिए टोकन -oX आउटपुट के args विशेषता में और आपके शेल इतिहास में समाप्त हो जाता है।
स्क्रिप्ट स्वयं टोकन को कहीं नहीं लिखती, उसके डीबग आउटपुट सहित - एक रिग्रेशन टेस्ट है जो यह बताता है।
टोकन आपके vulners.com खाते में रहते हैं। एक के बिना,
vulners_enterprise चुप रहता है और कुछ नहीं भेजता।
तीनों एक साथ कैसे काम करते हैं
nmap -sV
|
+-- service fingerprint --> port.version.cpe ------------+
| |
+-- http-vulners-regex.nse |
requests the path list in one pipeline |
matches headers and bodies against 178 patterns |
publishes the CPEs it found for that port ---------+
|
v
vulners.nse / vulners_enterprise.nse
one batched request per port
answers cached for the whole scan
sorted by CVSS, exploits marked
मशीन-पठनीय आउटपुट
स्क्रिप्ट जो कुछ भी प्रिंट करती हैं वह संरचित भी होता है, इसलिए -oX आउटपुट को मानव-पठनीय
पाठ को छुए बिना पार्स किया जा सकता है:
<script id="vulners_enterprise">
<table key="cpe:/a:apache:http_server:2.4.7">
<table>
<elem key="id">CVE-2021-44790</elem>
<elem key="type">cve</elem>
<elem key="cvss">9.8</elem>
<elem key="cvss_type">cvss3.1</elem>
</table>
<table>
<elem key="id">EDB-ID:51193</elem>
<elem key="type">exploitdb</elem>
<elem key="cvss">9.8</elem>
<elem key="cvss_type">cvss3.1</elem>
<elem key="is_exploit">true</elem>
</table>
</table>
</script>
कुंजियाँ id, type, cvss, cvss_type और is_exploit हैं, जो केवल उन प्रविष्टियों पर
मौजूद होती हैं जिनके पास एक होता है। परिणाम तालिकाएँ उस CPE द्वारा कुंजीबद्ध होती हैं जिसके
लिए वे पाई गई थीं। एक बिना स्कोर वाला बुलेटिन न तो cvss और न ही cvss_type रखता है।
विनम्रता से स्कैन करना
नेटवर्क स्कैन, दिखने में जितना लगता है, API से उससे कहीं कम पूछता है:
- एक पोर्ट का हर CPE एक बैच किए गए अनुरोध में जाता है
- उत्तर पूरे स्कैन के लिए कैश किए जाते हैं, इसलिए सौ समान सर्वर एक लुकअप की लागत देते हैं, सौ की नहीं
- पहले से चल रहे लुकअप की प्रतीक्षा की जाती है, उसे दोहराया नहीं जाता
- 125-पथ वाला स्वीप 126 के बजाय 5 TCP कनेक्शनों पर चलता है, और जहाँ सर्वर प्रदान करता है वहाँ संपीड़ित पृष्ठ माँगता है
- दर सीमा या आउटेज प्रति होस्ट पुनः प्रयास करने के बजाय स्कैन के अनुरोधों को रोक देता है
विकास
परीक्षण, स्वच्छता द्वार और CONTRIBUTING.md केवल git रिपॉजिटरी में हैं; रिलीज़ संग्रह
स्क्रिप्ट और उनका डेटा भेजता है। तीन द्वार, सभी ऑफ़लाइन सिवाय जहाँ नोट किया गया है:
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
110 यूनिट मामले वास्तविक NSE लाइब्रेरीज़ के विरुद्ध nmap के अंदर चलते हैं; 33 एंड-टू-एंड
मामले वास्तविक nmap बाइनरी को स्थानीय वेब सर्वर और एक स्टैंड-इन Vulners API के विरुद्ध
चलाते हैं; स्वच्छता द्वार रहस्यों, स्कैन आउटपुट और संपादक कचरे को रिपॉजिटरी से बाहर रखता है।
python3 tests/e2e/run_e2e.py --live वास्तविक सेवा के विरुद्ध छह जाँचें जोड़ता है।
CONTRIBUTING.md देखें।
सामान्य प्रश्न
क्या यह किसी चीज़ का एक्सप्लॉइट करता है? नहीं। स्क्रिप्ट बैनर और पृष्ठ पढ़ती हैं और एक
डेटाबेस से पूछती हैं। वे nmap की safe श्रेणी में हैं।
क्या यह API कुंजी के बिना काम करता है? हाँ - vulners और http-vulners-regex को किसी
की आवश्यकता नहीं है। vulners_enterprise को है।
एक भेद्यता cvss2.0 क्यों दिखाती है जबकि दूसरी cvss3.1? लेबल उस पैमाने का नाम बताता है
जिस पर स्कोर है। Vulners वही लौटाता है जो स्रोत ने प्रकाशित किया; 9.3 का v2 स्कोर 9.3 का
v3 स्कोर नहीं है।
जब मैं mincvss सेट करता हूँ तो कम-स्कोर वाली प्रविष्टि क्यों दिखाई जाती है? क्योंकि
उसके पास एक ज्ञात एक्सप्लॉइट है, या क्योंकि स्रोत ने उसे कभी स्कोर नहीं किया। दोनों जानबूझकर हैं।
यह एक ऐसे होस्ट पर कुछ नहीं पाया जिसके बारे में मैं जानता हूँ कि वह भेद्य है। -d2 के साथ
चलाएँ: स्क्रिप्ट हर उस CPE को लॉग करती हैं जिसके बारे में उन्होंने पूछा। आमतौर पर nmap ने सेवा का
नाम बताया लेकिन उसका संस्करण नहीं, और देखने के लिए कोई संस्करण नहीं है।
लाइसेंस
स्क्रिप्ट Nmap के समान ही लाइसेंस प्राप्त हैं - Nmap Public Source License के लिए LICENSE देखें, और इसका क्या अर्थ है यह जानने के लिए nmap.org/npsl देखें।
भेद्यता डेटा Vulners से आता है और उनकी शर्तों के अधीन है।
संबंधित
- vulners.com - इन स्क्रिप्ट के पीछे का डेटाबेस
- vulnersCom/api - Python क्लाइंट
- vulnersCom/burp-vulners-scanner - Burp Suite के अंदर वही डेटा
- nmap.org/book/nse.html - NSE स्क्रिप्ट कैसे काम करती हैं
Vulners टीम द्वारा अनुरक्षित <[email protected]>
#nmap #nse #vulnerability-scanner #cve #cvss #cpe #vulners
#security-tools #pentest #infosec #network-scanner #exploit-database
#lua #vulnerability-detection #security-automation