使用nmap 驗證多種漏洞
0x00 前言
大家都知道在平時的漏掃中,AWVS、APPSCAN、Netspark、webspectort等漏掃工具掃描出來的漏洞問題往往存在誤報,這時我們就需要進行人工手動驗證漏洞,這裡我們有兩種思路:
一是在漏洞工具中,進行多次的重複測試,AWVS、APPSCAN、Netspark、webspectort中都有重複測試漏洞問題的功能),將得出的多次結果進行分析和統計,確認漏洞是否存在。
二是對於特定的漏洞,例如Java反序列漏洞、struts2 各種漏洞、openssl、httpd遠端拒絕服務、IIS短檔名、各種應用軟體版本低等等,我們只能使用特定的工具或者結合多種方式進行驗證。本文基於第二種方式,主要使用了nmap 的指令碼功能進行漏洞驗證
0x01 nmap 的介紹
Nmap是一個網路連線端掃描軟體,用來掃描網上電腦開放的網路連線端。確定哪些服務執行在哪些連線端,並且推斷計算機執行哪個作業系統(這是亦稱 fingerprinting)。它是網路管理員必用的軟體之一,以及用以評估網路系統安全。
在長達3.5年之後,Fyodor終於釋出了著名開源網路檢索工具的最新版本Nmap7。Nmap是最受歡迎的開源網路對映器之一此外,Nmap7這款自動化的掃描器能夠輕易檢測到Heartbleed、POODLE、FREAK等嚴重漏洞。Nmap7中對ssl-enum-ciphers(SSL列舉密碼)指令碼替換了新的實現演算法,使得它能夠通過列舉SSL/TLS協議版本和密碼套件來快速分析TLS連線,它還能夠迅速識別部署問題。另外,使用Nmap7能夠輕易發現包含漏洞的伺服器,Nmap7中包含了對提速和掃描實現的改進。這個工具的新版本包括一個更新、更快的Nmap指令碼引擎(Nmap Scripting Engine,NSE),同時它還允許使用者編寫Lua指令碼。
0x02 使用nmap 檢測多種漏洞
由於常見的漏洞問題非常多,本文主要介紹漏洞掃描和滲透測試中會經常遇到的一些漏洞,並且嘗試使用namp 對這些被掃描工具掃描出來的漏洞進行人工手動驗證,這些僅是命令,至於如何根據出現的結果進行判斷是否有漏洞,這個在結果中很容易看出,例如出現 vulnerable-有漏洞; not vulnerable-無漏洞。 有結果出來-有漏洞;無結果出來-無漏洞,往後在其他測試中,只需要將scanme.nmap.org 替換成帶驗證的目標IP 或者網站。
1 http 拒絕服務
nmap --max-parallelism 800--script http-slowloris scanme.nmap.org
2 IIS 短檔案洩露
nmap -p 8080 --script http-iis-short-name-brute 61.142.64.176
3 ftp弱口令暴力破解
nmap --script ftp-brute --script-args brute.emptypass=true,ftp-brute.timeout=30,userdb=/root/dirtionary/usernames.txt,brute.useraspass=true,passdb=/root/dirtionary/passwords.txt,brute.threads=3,brute.delay=6 203.195.139.153
4 檢測CVE-2011-2523中的ftp-vsftpd-backdoor
nmap -T2 --script ftp-vsftpd-backdoor 211.139.201.240
5 驗證http中開啟的-methods 方法
nmap -T3 --script http-methods --script-args http.test-all=true,http.url-path=/www.haoshangjia.com
6 驗證HTTP.sys 遠端程式碼執行
nmap -sV --script http-vuln-cve2015-1635 203.195.139.153
7驗證 SSL POODLE information leak
nmap -sV -p 443 --version-light --script ssl-poodle 218.19.141.16
8 驗證http 中開啟了put 方法
nmap --script http-put --script-args http-put.url=/uploads/testput.txt,http-put.file=/root/put.txt 218.19.141.16
9 驗證mysql 匿名訪問
nmap --script mysql-empty-password 203.195.139.153
10 驗證cve2015-1427 漏洞 nmap --script http-vuln-cve2015-1427 --script-args command=ls 203.195.139.153
11 驗證cve2014-8877漏洞 nmap -Pn --script http-vuln-cve2014-8877 --script-args http-vuln-cve2014-8877.cmd=dir,http-vuln-cve2014-8877.uri=/wordpress 42.96.170.128
12 驗證Cisco ASA中的CVE-2014-2126,CVE-2014-2127,CVE-2014-21,CVE-2014-2129漏洞
nmap -p 443 --script http-vuln-cve2014-2126,http-vuln-cve2014-2127,http-vuln-cve2014-2128,http-vuln-cve2014-2129 203.195.139.153
13驗證低安全的 SSHv1,sslv2協議
nmap --script sshv1,sslv2 www.haoshangjia.com
14 驗證CVE-2014-0224 ssl-ccs-injection nmap -Pn --script ssl-ccs-injection 203.195.139.153
15 驗證ssl-cert證書問題
nmap -v -v --script ssl-cert 203.195.139.153
16驗證SSL證書的有限期
nmap -Pn --script ssl-date www.haoshangjia.com
17 驗證CVE-2014-0160 OpenSSL Heartbleed bug
nmap -p 443 --script ssl-heartbleed,ssl-known-key 203.195.139.153
18 驗證 Debian OpenSSL keys
nmap -p 443 --script ssl-known-key 203.195.139.153
18 驗證弱加密SSL套件
nmap --script ssl-enum-ciphers 203.195.139.153
20 驗證CVE 2015-4000
nmap --script ssl-dh-params www.haoshangjia.com
21 驗證多種SSL漏洞問題
nmap 203.195.139.153 --vv --script sshv1,ssl-ccs-injection,ssl-cert,ssl-date,ssl-dh-params,ssl-enum-ciphers,ssl-google-cert-catalog,ssl-heartbleed,ssl-known-key,sslv2
22 在網路中檢測某主機是否存在竊聽他人流量
nmap --script sniffer-detect 10.10.167.5
23 暴力破解telnet
nmap -p 23 --script telnet-brute --script-args userdb=myusers.lst,passdb=mypwds.lst --script-args telnet-brute.timeout=8s 203.195.139.153
24 驗證telnet是否支援加密
nmap --script telnet-encryption 203.195.139.153
25 精準地確認埠上執行的服務
nmap -sV --script unusual-port 42.96.170.128
26 收集VNC資訊
nmap --script vnc-info 203.195.139.153
27 暴力破解VNC
nmap --script vnc-brute --script-args brute.guesses=6,brute.emptypass=true,userdb=/root/dictionary/user.txt,brute.useraspass=true,passdb=/root/dictionary/pass.txt,brute.retries=3,brute.threads=2,brute.delay=3 42.96.170.128
#這個指令碼挺長的,很多詳細的引數,請參閱指令碼的具體引數。
0x03 使用系列的nmap NSE 進行檢查
#nmap指令碼主要分為以下幾類,在掃描時可根據需要設定--script=類別這種方式進行比較籠統的掃描: auth: 負責處理鑑權證書(繞開鑑權)的指令碼 broadcast: 在區域網內探查更多服務開啟狀況,如dhcp/dns/sqlserver等服務 brute: 提供暴力破解方式,針對常見的應用如http/snmp等 default: 使用-sC或-A選項掃描時候預設的指令碼,提供基本指令碼掃描能力 discovery: 對網路進行更多的資訊,如SMB列舉、SNMP查詢等 dos: 用於進行拒絕服務攻擊 exploit: 利用已知的漏洞入侵系統 external: 利用第三方的資料庫或資源,例如進行whois解析 fuzzer: 模糊測試的指令碼,傳送異常的包到目標機,探測出潛在漏洞 intrusive: 入侵性的指令碼,此類指令碼可能引發對方的IDS/IPS的記錄或遮蔽 malware: 探測目標機是否感染了病毒、開啟了後門等資訊 safe: 此類與intrusive相反,屬於安全性指令碼 version: 負責增強服務與版本掃描(Version Detection)功能的指令碼 vuln: 負責檢查目標機是否有常見的漏洞(Vulnerability)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Nmap提供的指令碼命令列引數如下: -sC: 等價於--script=default,使用預設類別的指令碼進行掃描。 --script=<Lua scripts>: <Lua scripts>使用某個或某類指令碼進行掃描,支援萬用字元描述 --script-args=<n1=v1,[n2=v2,...]>: 為指令碼提供預設引數 --script-args-file=filename: 使用檔案來為指令碼提供引數 --script-trace: 顯示指令碼執行過程中傳送與接收的資料 --script-updatedb: 更新指令碼資料庫 --script-help=<Lua scripts>: 顯示指令碼的幫助資訊,其中<Lua scripts>部分可以逗號分隔的檔案或指令碼類別。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 使用nmap對某主機進行一系列的證書鑑權檢查
nmap --script auth 203.195.139.153
2 使用nmap在區域網內探查更多服務開啟情況
nmap --script broadcast 10.10.167.6
3 使用nmap 對常見的服務進行暴力破解
nmap --script brute 203.195.139.153
4 使用nmap 進行基本的掃描
nmap --script default 203.195.139.153
#nmap --sC 203.195.139.153
5 使用nmap 進行資訊挖掘
nmap --script discovery 203.195.139.153
6 使用nmap 進行拒絕服務攻擊
nmap --script dos 203.195.139.153
7 使用nmap 利用已知的漏洞入侵系統
nmap --script exploit 203.195.139.153
8 使用nmap 進行利用第三方的資料庫或資源進行資訊收集或者攻擊
nmap --script external 203.195.139.153
9 使用nmap 進行模糊測試,傳送異常的包到目標機,探測出潛在漏洞
nmap --script fuzzer 203.195.139.153
10 使用nmap 進行入侵,此類指令碼可能引發對方的IDS/IPS的記錄或遮蔽
nmap --script intrusive 203.195.139.153
11 使用nmap 探測目標機是否感染了病毒、開啟了後門等資訊
nmap --script malware 203.195.139.153
12 使用nmap 對系統進行安全檢查
nmap --script safe 203.195.139.153
13 使用nmap 對目標機進行檢查是否存在常見的漏洞
nmap --script vuln 203.195.139.153
14 使用nmap 負責增強服務與版本掃描(Version Detection)功能的指令碼
nmap --script version 203.195.139.153
0x04 如何新建一個nmap 指令碼掃描
至於如何使用nmap中指令碼,本文建議,在nmap的圖形化介面zenmap 中進行:
1 在zenmap 介面中,依次點選“profile”---"New Profile or Command" (快捷鍵:Ctrl + P)
2 完成步驟1後,便會彈出了“ Profile Editor" 介面:
3 然後點選” Scripting“ ,將會顯示下面的介面:
左側---指令碼的名稱,點選勾選該指令碼名稱前面的小方框,即可使用該指令碼;下拉選擇其他指令碼。
中上方框---指令碼的名稱、使用情景、使用格式、參考結果;中下框---設定指令碼的各種引數。
右側的大方框------每當點選中下框的某個引數時,此處便會顯示那個指令碼引數的說明。
4 當選定了XXX指令碼後,一定要點選右框下的” Save Changes" .
5 完成上面的步驟後,我們回到zenmap的主介面,
0x05 結論
本文首先介紹使用nmap的基本背景和知識,對它有個基本全面的瞭解;然後詳細說明了在使用nmap 進行驗證多種常見漏洞,這些漏洞驗證都是我們在漏掃和滲透測試中經常見到的;接著我們介紹使用一組nmap指令碼進行基線檢查,簡單批量地使用一系列的指令碼對系統進行資訊收集和漏洞檢測;最後我們詳細介紹瞭如何使用新建和使用一個nmap 的指令碼,幫助讀者自己獨立使用NSE。
我們在使用nmap的時候往往忽視它最強大的NSE指令碼掃描功能,其實這個龐大的指令碼集合能夠幫助我們進行網路連線故障診斷、網路流量路徑分析、伺服器的開放情況和執行情況,甚至還能用來進行埠滲透。在滲透測試中,好好利用nmap及其NSE指令碼,往往有意想不到的收穫