最近一直在思考,Web滲透中,正面的滲透是一種思路,橫向和縱向滲透也是一種思路,在滲透過程中,目标主站的防護越來越嚴格,而子站或者目标所在IP位址的C段或者B端的滲透相對容易,這種滲透涉及目标資訊的搜集和設定,而對這些目标資訊收集最主要方式是子域名暴力破解和端口掃描。子域名暴力破解,會在下一篇文章中專門介紹,本文主要介紹端口掃描以及應用的思路。
pentestbox是一款Windows下內建的滲透測試平台,其官方網站位址:https://pentestbox.org/,最新版本為2.2版本,可以下載下傳帶有Metasploit和不帶Metasploit的程式,下載下傳位址:
https://sourceforge.net/projects/pentestbox/files/
https://nchc.dl.sourceforge.net/project/pentestbox/PentestBox-with-Metasploit-v2.2.exe
下載下傳完成後将該exe檔案解壓以後即可使用。
目前nmap最新的穩定版本為7.6版本(https://nmap.org/dist/nmap-7.60-win32.zip),将其下載下傳到本地,解壓後,找到PentestBox 安裝目錄,例如:E:\PentestBox\bin\nmap,将nmap-7.60-win32.zip解壓後的所有檔案覆寫該目錄,更新pentestbox中的nmap到最新版本。
通過子域名暴力破解,擷取目前子域名的IP位址,對這些位址進行整理,并形成子域名或者域名位址所在的IP位址C端,例如192.168.1.1-254。如果是單個目标則可以ping或者域名查詢等方法擷取域名的真實IP位址。
Usage:nmap [Scan Type(s)] [Options] {target specification}
TARGETSPECIFICATION:
Can pass hostnames, IP addresses, networks,etc.
Ex: scanme.nmap.org, microsoft.com/24,192.168.0.1; 10.0.0-255.1-254
-iL <inputfilename>:輸入主機或者網絡的清單,iL參數後跟輸入檔案的名稱,檔案内容為IP位址、IP位址範圍或者網絡位址
-iR <num hosts>:随機選擇目标進行掃描,0表示永遠掃描。
--exclude <host1[,host2][,host3],...>: 排除主機/網絡
--excludefile <exclude_file>: 從檔案中排出主機或者網絡
主機發現:
-sL: List Scan -簡單清單掃描,一般很少用,就是發現主機的簡單資訊,不包含端口等資訊。
-sn: Ping掃描 -不能端口掃描,主要發現主機清單,了解主機運作情況。
-Pn: 線上處理所有主機,略過主機發現
-PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK, UDP 或者SCTP去發現給出的端口。
-PE/PP/PM: ICMP回聲,時間戳,和子網路遮罩請求發現探針
-PO[protocol list]: IP 協定Ping,後跟協定清單
-n:不用域名解析,永不對它發現的活動IP位址進行反向域名解析。
-R:告訴Nmap 永遠對目标IP位址作反向域名解析。
--system-dns:使用系統域名解析器,預設情況下,Nmap通過直接發送查詢到您的主機上配置的域名伺服器來解析域名。為了提高性能,許多請求 (一般幾十個 ) 并發執行。如果您希望使用系統自帶的解析器,就指定該選項。
--traceroute: 跟蹤每個主機的跳路徑
掃描技術:
-sS/sT/sA/sW/sM: TCPSYN/Connect()/ACK/Window/Maimon scans
-sS :TCP SYN掃描(半開放掃描),SYN掃描作為預設最受歡迎的掃描選項,它執行得很快,在一個沒有入侵防火牆的快速網絡上,每秒鐘可以掃描數千個端口。
-sT :TCP connect()掃描, TCP連接配接掃描會留下掃描連接配接日志。
-sU :UDP掃描,它可以和TCP掃描如 SYN掃描(-sS)結合使用來同時檢查兩種協定,UDP掃描速度比較慢。
-sN: Null掃描,不設定任何标志位(tcp标志頭是0)
-sF :FIN掃描,隻設定TCP FIN标志位。
-sX :Xmas掃描,設定FIN,PSH,和URG标志位。
-sN;-sF; -sX (TCP Null,FIN,and Xmas掃描)掃描的關鍵優勢是它們能躲過一些無狀态防火牆和封包過濾路由器。另一個優勢是這些掃描類型甚至比SYN掃描還要隐秘一些。
--scanflags <flags>:定制的TCP掃描,--scanflags選項允許您通過指定任意TCP标志位來設計您自己的掃描。--scanflags選項可以是一個數字标記值如9 (PSH和FIN),但使用字元名更容易些。隻要是URG, ACK,PSH, RST,SYN,and FIN的任何組合就行。
-sI<zombie host[:probeport]> (Idlescan),這種進階的掃描方法允許對目标進行真正的TCP端口盲掃描 (意味着沒有封包從您的真實IP位址發送到目标)。相反,side-channel攻擊利用zombie主機上已知的IP分段ID序列生成算法來窺探目标上開放端口的資訊。 IDS系統将顯示掃描來自您指定的zombie機。除了極端隐蔽(由于它不從真實IP位址發送任何封包),該掃描類型可以建立機器間的基于IP的信任關系。端口清單從zombie主機的角度。顯示開放的端口。
-sY/sZ: SCTP INIT/COOKIE-ECHO scans
-sO: IP協定掃描,确定目标機支援哪些IP協定 (TCP,ICMP,IGMP,等等)。協定掃描以和UDP掃描類似的方式工作。它不是在UDP封包的端口域上循環,而是在IP協定域的8位上循環,發送IP封包頭。封包頭通常是空的,不包含資料,甚至不包含所申明的協定的正确封包頭TCP,UDP,和ICMP是三個例外。它們三個會使用正常的協定頭,因為否則某些系統拒絕發送,而且Nmap有函數建立它們。
-b<ftp relay host>:FTP彈跳掃描,FTP協定的一個有趣特征是支援所謂代理ftp連接配接。它允許使用者連接配接到一台FTP伺服器,然後要求檔案送到一台第三方伺服器。這個特性在很多層次上被濫用,是以許多伺服器已經停止支援它了。其中一種就是導緻FTP伺服器對其它主機端口掃描。隻要請求FTP伺服器輪流發送一個檔案到目标主機上的所感興趣的端口。錯誤消息會描述端口是開放還是關閉的。這是繞過防火牆的好方法,因為FTP伺服器常常被置于可以通路比Web主機更多其它内部主機的位置。Nmap用-b選項支援ftp彈跳掃描。參數格式是 <username>:<password>@<server>:<port>。<Server>是某個脆弱的FTP伺服器的名字或者IP位址。您也許可以省略<username>:<password>, 如果伺服器上開放了匿名使用者(user:anonymouspassword:-wwwuser@)。端口号(以及前面的冒号) 也可以省略,如果<server>使用預設的FTP端口(21)。
端口說明和掃描順序:
-p <port ranges>:僅僅掃描指定的端口,例如-p22;-p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
--exclude-ports <port ranges>:從掃描端口範圍中排除掃描端口。
-F:快速掃描(有限的端口)
-r: 不要按随機順序掃描端口,順序對端口進行掃描
--top-ports <number>: 掃描number個最常見的端口
服務和版本資訊探測:
-sV:打開版本和服務探測,可以用-A同時打開作業系統探測和版本探測
--version-intensity <level>:設定版本掃描強度,設定從0到9,預設是7,值越高越精确,但掃描時間越長
--version-light:打開輕量級模式,掃描快,但它識别服務的可能性也略微小一點。
--version-all: 保證對每個端口嘗試每個探測封包(強度 9)
--version-trace: 跟蹤版本掃描活動,列印出詳細的關于正在進行的掃描的調試資訊
腳本掃描:
-sC: 相當于--script=default
--script=<Lua scripts>: <Luascripts> 是一個逗号分隔的目錄、腳本檔案或腳本類别清單,nmap常見的腳本在scripts目錄下,例如ftp暴力破解腳本“ftp-brute.nse”
--script-args=<n1=v1,[n2=v2,...]>: 提高掃描的參數
--script-args-file=filename: 在檔案中提供NSE 腳本參數
--script-trace: 顯示所有發送和接收的資料
--script-updatedb: 線上更新腳本資料庫.
--script-help=<Lua scripts>:顯示腳本的幫助資訊。
伺服器版本探測:
-O: 啟用作業系統檢測,也可以使用-A來同時啟用作業系統檢測和版本檢測
--osscan-limit: 針對指定的目标進行作業系統檢測
--osscan-guess: 推測作業系統檢測結果
時間和性能:
選項<time> 設定秒,也可以追加到毫秒,s-秒,ms-毫秒,m-分鐘,h-小時
-T<0-5>: 設定時間掃描模闆,T 0-5分别為paranoid(0)、sneaky (1)、polite (2)、normal(3)、 aggressive (4)和insane (5)。T0,T1用于IDS躲避,Polite模式降低了掃描速度以使用更少的帶寬和目标主機資源,預設為T3,Aggressive模式假設使用者具有合适及可靠的網絡進而加速掃描。Insane模式假設使用者具有特别快的網絡或者願意為獲得速度而犧牲準确性。
--min-hostgroup/max-hostgroup <size>: 調整并行掃描組的大小
--min-parallelism/max-parallelism<numprobes>: 調整探測封包的并行度
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>:調整探測封包逾時 --max-retries <tries>:掃描探針重發的端口數
--host-timeout <time>: 多少時間放棄目标掃描
--scan-delay/--max-scan-delay <time>: 在探測中調整延遲時間
--min-rate <number>:每秒發送資料包不少于<數字>
--max-rate <number>: 每秒發送資料包不超過<數字>
防火牆/ IDS逃避和欺騙:
-f; --mtu <val>:封包包,使用指定的MTU (optionallyw/given MTU)使用小的IP包分段。其思路是将TCP頭分段在幾個包中,使得包過濾器、 IDS以及其它工具的檢測更加困難
-D <decoy1,decoy2[,ME],...>: 使用誘餌隐蔽掃描
-S <IP_Address>:源位址哄騙
-e <iface>:使用指定的接口
-g/--source-port <portnum>:源端口哄騙
--proxies <url1,[url2],...>:通過HTTP /Socks4代理傳遞連接配接
--data <hex string>:向發送的包追加一個自定義有效負載
--data-string <string>:向發送的資料包追加自定義ASCII字元串
--data-length <num>:将随機資料追加到發送的資料包
--ip-options <options>:用指定的IP選項發送資料包
--ttl <val>: 設定IP的ttl值
--spoof-mac <mac address/prefix/vendorname>:欺騙你的MAC位址
--badsum: 發送資料包僞造TCP/UDP/SCTP校驗
輸出:
-oN/-oX/-oS/-oG <file>: 輸出正常掃描結果,XML, 腳本小子,和Grep輸出格式,指定定輸出檔案名
-oA <basename>:一次輸出三種主要格式
-v: 增量水準(使用 -vv ormore效果更好)
-d: 提高調試水準(使用 -dd ormore 效果更好)
--reason: 顯示端口處于某一特定狀态的原因。
--open: 隻顯示打開(或可能打開)端口
--packet-trace: 顯示所有資料包的發送和接收
--iflist: 列印主機接口和路由(用于調試)
--append-output: 附加到指定的輸出檔案,而不是亂碼
--resume <filename>:恢複中止掃描
--stylesheet <path/URL>:設定XSL樣式表,轉換XML輸出
--webxml: 參考更便攜的XML 的Nmap.org樣式。
--no-stylesheet:忽略XML聲明的XSL樣式表,使用該選項禁止Nmap的XML輸出關聯任何XSL樣式表
其它選項:
-6: 啟用IPv6掃描
-A: 激烈掃描模式選項,啟用OS、版本,腳本掃描和跟蹤路由
--datadir <dirname>:說明使用者Nmap資料檔案位置
--send-eth/--send-ip: 使用原以太網幀或在原IP層發送
--privileged: 假定使用者具有全部權限
--unprivileged: 假設使用者沒有原始套接字特權
-V: 列印版本号
-h: 使用幫助資訊
(1)nmap -vscanme.nmap.org
掃描主機scanme.nmap.org中所有的保留TCP端口(1000端口)。選項-v啟用細節模式。
(2)nmap -sS -Oscanme.nmap.org/24
進行秘密SYN掃描,對象為主機Saznme所在的“C類”網段 的255台主機。同時嘗試确定每台工作主機的作業系統類型。因為進行SYN掃描和作業系統檢測,這個掃描需要有根權限。
(3)nmap -sV -p22,53,110,143,4564 198.116.0-255.1-127
進行主機列舉和TCP掃描,對象為B類188.116網段中255個8位子網。這 個測試用于确定系統是否運作了sshd、DNS、imapd或4564端口。如果這些端口 打開,将使用版本檢測來确定哪種應用在運作。
(4)nmap -v -iR100000 -P0 -p 80
随機選擇100000台主機掃描是否運作Web伺服器(80端口)。由起始階段發送探測封包來确定主機是否工作非常浪費時間,而且隻需探測主機的一個端口,是以使用-P0禁止對主機清單。
(5)nmap -P0-p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20
掃描4096個IP位址,查找Web伺服器(不ping),将結果以Grep和XML格式儲存。
(6)host -lcompany.com | cut -d -f 4 | nmap -v -iL -
進行DNS區域傳輸,以發現company.com中的主機,然後将IP位址提供給 Nmap。上述指令用于GNU/Linux-- 其它系統進行區域傳輸時有不同的指令。
(1)nmap -p 1-65535 -T4 -A -v 47.91.163.1-254 -oX 47.91.163.1-254.xml
掃描47.91.163.1-254段IP位址,使用快速掃描模式,輸出47.91.163.1-254.xml
(2)nmap -v 47.91.163.1-254
掃描C端常見TCP端口
(3)nmap -O 47.91.163.1
探測47.91.163.1伺服器OS版本和TCP端口開放情況
(4)nmap -sn 10.0.1.161-166
掃描存活主機
(5)nmap -e eth0 10.0.1.161 -S 10.0.1.168 -Pn
使用僞裝位址10.0.1.168對10.0.1.161進行掃描
(6)nmap -iflist
檢視本地路由和接口
(7)nmap --script smb-vuln-ms17-010.nse -p 445 192.168.1.1
nmap–script=samba-vuln-cve-2012-1182-p 139 192.168.1.3
對主機192.168.1.1使用漏洞腳本smb-vuln-ms17-010.nse進行檢測。
(8)nmap --script whois-domain.nse www.secbang.com
擷取secbang.com的域名注冊情況,該腳本對國外域名支援較好。
(9)nmap--script ftp-brute -p 21 127.0.0.1
暴力破解127.0.0.1的ftp賬号
(10)nmap -sV–script=http-enum 127.0.0.1
枚舉127.0.0.1的目錄
對整理的IP位址段或者IP實施掃描:
(1)單一IP位址段掃描
nmap -p 1-65535 -T4 -A -v 47.91.163.1-254 -oX 47.91.163.1-254.xml
(2)IP位址段掃描
nmap -p 1-65535 -T4 -A -v -iLmytarget.txt -oX mytarget.xml
三.掃描結果分析及處理
1.檢視掃描檔案
有些情況,掃描是在伺服器上進行,掃描結束後,将掃描結果下載下傳到本地進行檢視,如圖1所示,又有XSL樣式表解析導緻出錯。通常原因是由于nmap中的nmap.xsl檔案位置不對,如圖2所示,将正确的檔案位置設定好即可。例如原nmap位址為:
C:/Program Files (x86)/Nmap/nmap.xsl
新的位址為:
E:\Tools\測試平台\PentestBox-with-Metasploit-v2.2\bin\nmap\nmap.xsl
在掃描結果的xml檔案中進行替換即可,切記需要更換路徑符号“\”為“/”。
<a href="https://s4.51cto.com/wyfs02/M02/9F/0F/wKioL1mbb2KR181jAADEBXHS_cs540.jpg-wh_500x0-wm_3-wmp_4-s_3087083974.jpg" target="_blank"></a>
圖1檢視xml顯示錯誤
<a href="https://s3.51cto.com/wyfs02/M01/00/60/wKiom1mbb2uD-1XgAAGoZvpXWJs657.jpg-wh_500x0-wm_3-wmp_4-s_286159520.jpg" target="_blank"></a>
圖2修改檔案位置
2.分析并處理掃描結果
(1)從概覽中檢視端口開放主機
如圖3所示,打開xml檔案後,在檔案最上端顯示掃描總結,有底色的結果表示端口開放,黑色字型顯示的IP表示未開放端口或者防火牆進行了攔截和過濾。
<a href="https://s3.51cto.com/wyfs02/M00/00/60/wKiom1mbb2yB8Z4BAAJ9svztRG4421.jpg-wh_500x0-wm_3-wmp_4-s_2154002260.jpg" target="_blank"></a>
圖3檢視掃描概覽
(2)逐個檢視掃描結果
對淺綠色底的IP位址逐個進行檢視,例如檢視47.91.163.219,如圖4所示,打開後可以看到IP位址以及端口開放等掃描結果情況,在open中會顯示一些詳細資訊。
<a href="https://s1.51cto.com/wyfs02/M00/9F/0F/wKioL1mbb2Sh7vRZAADmHFOztqQ080.jpg-wh_500x0-wm_3-wmp_4-s_269264819.jpg" target="_blank"></a>
圖4檢視掃描結果具體掃描情況
(3)測試掃描端口開放情況
使用http://ip:port進行通路測試,檢視網頁是否可以正常通路,例如本例中http://47.91.163.174:8080/可以正常通路,系統使用tomcat,如圖5所示。
<a href="https://s2.51cto.com/wyfs02/M00/9F/0F/wKioL1mbb2Xz171vAAKI5cfBkUQ244.jpg-wh_500x0-wm_3-wmp_4-s_558135515.jpg" target="_blank"></a>
圖5通路掃描結果
(4)技巧
在浏覽器中使用Ctrl+F快捷鍵可以對想檢視的關鍵字進行檢索。對所有的測試結果要記錄,便于後期選擇滲透方法。
3.進一步滲透
通過對掃描結果進行分析整理,對伺服器開放的服務以及可能存在的漏洞進行直接或者間接測試,例如對Java平台,可以測試是否存在struts系列漏洞,如圖6所示。有的目标還需要進行暴力破解,工具掃描等工作,直到發現漏洞,擷取權限為止。
<a href="https://s2.51cto.com/wyfs02/M01/00/60/wKiom1mbb27RKe-YAAE_rk0LgOw356.jpg-wh_500x0-wm_3-wmp_4-s_346199722.jpg" target="_blank"></a>
圖6直接測試是否存在漏洞
在進一步滲透中需要結合多個知識點,需要針對出現的問題進行相應的檢索。其可供參考思路如下:
(1)整理目标的架構情況,針對架構出現的漏洞進行嘗試。
(2)如果有登入管理界面,嘗試弱密碼登入後暴力破解。
(3)使用wvs等掃描器對站點進行漏洞掃描
(4)使用burpsuite對站點進行漏洞分析和測試。
(5)如果是陌生的系統,可以通過百度等搜尋引擎進行搜尋檢視,網上是否曾經出現漏洞和利用方法。
(6)下載下傳同類源代碼搭建環境進行測試,了解系統存在漏洞,對存在漏洞進行測試總結和再現,并對實際系統進行測試。
(7)挖掘系統可能存在的漏洞
(8)利用XSS來擷取管理者的密碼等資訊。
(9)若掌握郵箱,可以通過msf生成木馬/apk等進行社工攻擊。
(10)所有方法不行,就等等,重新整理思路。
參考文章:
https://nmap.org/man/zh/
http://www.nmap.com.cn/doc/manual.shtm
本文轉自 simeon2005 51CTO部落格,原文連結:http://blog.51cto.com/simeon/1958224