1. 程式人生 > >使用nmap 驗證多種漏洞

使用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指令碼,往往有意想不到的收穫