一.了解web結構
1:網站是安裝在電腦上的應用程序,它有操作系統,應用程序和服務器例如wamp包含的 web服務器:Apache 數據庫:MySQL 編程語言:php
2:網站的訪問:用戶通過url訪問,dns服務器將域名解析為ip地址,ip地址訪問服務器內容(數據庫,服務器,應用程序),最終將結果反饋到用戶的瀏覽器上。數據庫包括要調用的數據,並存儲在Web服務器上,這台服務器有真實的IP地址,每個人都能訪問、Ping通它。每次頁面請求或運行程序時,Web應用程序會在服務器上執行,而不是在客戶的機器上。
3:如何入侵一個網站:入侵安裝在計算機上的應用程序稱為Web應用滲透測試,入侵帶操作系統的計算機和應用程序稱為服務端攻擊,入侵人稱為社會工程學攻擊。拿到一個網站,明確到滲透目標,不要拿到目標就開始使用各種工具,而是應盡可能多的去獲取該網站的信息,收集到的信息越多,越容易找到漏洞。
主動信息收集:通過直接訪問、掃描網站,這種流量將流經網站
被動信息收集:利用第三方的服務對目標進行訪問了解,如Google搜索、Shodan搜索等
4:常見的信息收集:
ip地址信息:服務,端口,協議,cdn
域名信息:郵箱,聯系人,地址,電腦
技術使用:框架,服務器,數據庫,編程語言
在同一台服務器的其他網站\旁站
DNS記錄
文件,子域,C段,目錄
二.域名信息收集
1:域名查詢
域名系統:DNS(domain name system)是互聯網的一項服務,它作為一個將域名和ip地址相互映射的分布式數據庫。將域名轉換為ip地址的系統。
域名解析:舉一個例子,eastmount.org作為一個域名就和IP地址198.35.26.96相對應。DNS就像是一個自動的電話號碼簿,我們可以直接撥打198.35.26.96的名字eastmount.org來代替電話號碼(IP地址)。DNS在我們直接調用網站的名字以后就會將像eastmount.org一樣便於人類使用的名字轉化成像198.35.26.96一樣便於機器識別的IP地址。再如51cto.com域名,edu.51cto.com和www.51cto.com是該域名對應的子域名,而edu(教育網)和www(萬維網)是對應的主機名。
2:whois查詢
Whois是用來查詢域名的IP以及所有者等信息的傳輸協議。簡單說,Whois就是一個用來查詢域名是否已經被注冊,以及注冊域名信息的數據庫(如域名所有人、域名注冊商、注冊商郵箱等)。不同的域名后綴需要到不同的whois數據庫查詢。
Whois協議基本內容是:先向服務器的TCP端口43建立一個連接,發送查詢關鍵字並加上回車換行,然后接收服務器的查詢結果。
通過Whois查詢可以獲得域名注冊者郵箱地址等信息,一般情況下對於中小型網站域名注冊者就是網站管理員,利用搜索引擎對Whois查詢到的信息進行搜索,獲取更多域名注冊者的個人信息。
whois查詢方法:
(1)web接口查詢:
常見的信息收集網站包括:
- Whois站長之家:http://whois.chinaz.com/
- 微步在線:https://x.threatbook.cn/
- 阿里雲中國萬網:https://whois.aliyun.com/
- Whois Lookup查找目標網站所有者信息:http://whois.domaintools.com/
- Netcraft Site Report顯示目標網站使用的技術:http://toolbar.netcraft.com/site_report?url=
- Robtex DNS查詢顯示關於目標網站的全面的DNS信息:https://www.robtex.com/
- 全球Whois查詢:https://www.whois365.com/cn/
- 站長工具愛站查詢:https://whois.aizhan.com/
- 愛站網ping檢測\IP反查域:https://dns.aizhan.com/
- DNS服務器解析:http://tool.chinaz.com/nslookup
- 多地ping 檢查dns是否存在:http://ping.chinaz.com/ping.chinaz.com
- 同ip查旁站:http://s.tool.chinaz.com/same
通過不同的查詢系統,收集到的信息不同,盡可能收集到多的信息為后面的滲透做准備。
3.備案信息查詢
ICP備案是指網絡內容提供商(Internet Content Provider),《互聯網信息服務管理辦法》指出需要對網站進行備案,未取得許可不得從事互聯網信息服務。
ICP查詢網站:
- https://www.beian88.com/
- http://beian.miit.gov.cn/publish/query/indexFirst.action
- https://www.tianyancha.com/
- http://www.beianbeian.com/
三.web站點信息收集
1.cms指紋識別
在滲透測試中,對目標服務器進行指紋識別是相當有必要的,因為只有識別出相應的Web容器或者CMS(內容管理系統),才能查找與其相關的漏洞,然后才能進行相應的滲透操作。CMS又稱整站系統。常見的CMS有:WordPress、Dedecms(織夢)、Discuz、PhpWeb、PhpWind、Dvbbs、PhpCMS、ECShop、、SiteWeaver、AspCMS、帝國、Z-Blog等。
CMS又稱為整站系統或文章系統,用於網站內容管理。用戶只需要下載對應的CMS軟件包,就能部署搭建,並直接利用CMS。但是各種CMS都具有其獨特的結構命名規則和特定的文件內容,因此可以利用這些內容來獲取CMS站點的具體軟件CMS與版本。
(1):在線識別
- BugScaner:http://whatweb.bugscaner.com/look/
- 雲悉指紋:http://www.yunsee.cn/finger.html
- WhatWeb:https://whatweb.net/
- BGP:he.bgp.net
(2):本地工具
- 御劍Web指紋識別程序
- 大禹CMS識別程序(https://github.com/Ms0x0/Dayu)
2.cms漏洞查詢
對於查詢到的cms,可以到漏洞平台搜索該cms的漏洞
3.敏感目錄信息
針對目標Web目錄結構和敏感隱藏文件探測是非常重要的,在探測過程中很可能會探測到后台頁面、上傳頁面、數據庫文件,甚至是網站源代碼文件等。補充謝公子大佬的內容,掃描網站目錄結構可以看看是否可以遍歷目錄,或者敏感文件泄漏,包括:
- 后台目錄:弱口令,萬能密碼,爆破
- 安裝包:獲取數據庫信息,甚至是網站源碼
- 上傳目錄:截斷、上傳圖片馬等
- mysql管理接口:弱口令、爆破,萬能密碼,然后脫褲,甚至是拿到shell
- 安裝頁面 :可以二次安裝進而繞過
- phpinfo:會把你配置的各種信息暴露出來
- 編輯器:fck、ke等
- iis短文件利用:條件比較苛刻 windows、apache等
常見的探測工具包括:
- 御劍后台掃描工具
- wwwscan命令行工具
- dirb命令工具
- dirbuster掃描工具
- dirmap掃描工具
- dirsearch掃描工具
文件robots.txt
同時,提到網站敏感目錄我們就不得不提robots.txt文件。robots.txt文件是專門針對搜索引擎機器人robot 編寫的一個純文本文件。我們可以在這個文件中指定網站中不想被robot訪問的目錄。從而讓我們網站的部分或全部內容不被搜索引擎收錄,或者讓搜索引擎只收錄指定的內容。
因此可以利用robots.txt讓Google的機器人訪問不了我們網站上的重要文件,Google Hack的威脅也就不存在了。假如編寫的robots.txt文件內容如下,其中“Disallow”參數后面的是禁止robot收錄部分的路徑,例如我們要讓robot禁止收錄網站目錄下的“data”文件夾,只需要在Disallow參數后面加上 /data/ 即可。如果想增加其他目錄,只需按此格式繼續添加。文件編寫完成后將其上傳到網站的根目錄,就可以讓網站遠離Google Hack。
然而,雖然robots文件目的是讓搜索蜘蛛不爬取想要保護的頁面,但是如果我們知道了robots文件的內容的話,我們就可以知道目標網站哪些文件夾不讓訪問,從側面說明這些文件夾是很重要。
4.WordPress測試
WordPress是使用PHP語言開發的博客平台,用戶可以在支持PHP和MySQL數據庫的服務器上架構屬於自己的網站,也可以把WordPress當作一個內容管理系統CMS來使用。針對WordPress測試,可以使用WpScan工具對其進行安全測試。
四.端口信息收集
1:端口
如果把IP地址比作一間房子,端口就是出入這間房子的門。真正的房子只有幾個門,但是一個IP地址的端口可以有65536(2^16)個門之多。端口是通過端口號來標記的,端口號只有整數,范圍從0到65536(2^16-1 )。
計算機常見的端口號包括:
- HTTP服務器默認端口號為:80/tcp(木馬Executor開放此端口)
- HTTPS服務器默認端口號為:443/tcp、443/udp
- Telnet(遠程登錄)默認端口號為:23/tcp(木馬Tiny Telnet Server所開放的端口)
- FTP默認端口號為:21/tcp(木馬Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash等所開放的端口)
- TFTP(Trivial File Transfer Protocol)默認端口號為:69/udp
- SSH(安全登錄)、SCP(文件傳輸)、端口號重定向,默認端口號為:22/tcp
- SMTP(E-mail)默認端口號為:25/tcp(木馬Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都開放這個端口)
- POP3 Post Office Protocol(E-mail)默認端口號為:110/tcp
- Webshpere應用程序默認端口號為:9080
- TOMCAT默認端口號為:8080
- MySQL數據庫默認端口號為:3306
- Oracle 數據庫默認的端口號為:1521
- WIN2003遠程登錄默認端口號為:3389
- MS SQL*SERVER數據庫server默認的端口號為:1433/tcp、1433/udp
對於收集目標及其端口狀況可以使用工具來進行,其工作原理都是使用TCP或UDP等協議向目標端口發送指定標志位等數據包,等待目標返回數據包,以此來判斷端口狀態。后續作者,准備通過Python編寫相關的代碼。
這篇文章主要通過工具采集端口信息,包括:
- 使用Nmap采集,命令為:nmap -A -v -T4 目標
- 使用masscan采集,命令為:masscan -p80 目標
2:旁站和C段
旁站指的是同一服務器上的其他網站,很多時候,有些網站可能不是那么容易入侵。那么,可以查看該網站所在的服務器上是否還有其他網站。如果有其他網站的話,可以先拿下其他網站的webshell,然后再提權拿到服務器的權限,最后就自然可以拿下該網站了!
對於紅藍對抗和護網,C段掃描比較有意義。對於單獨網站的滲透測試,C段掃描意義不大。C段指的是同一內網段內的其他服務器,每個IP有ABCD四個段,舉個例子,192.168.0.1,A段就是192,B段是168,C段是0,D段是1,而C段嗅探的意思就是拿下它同一C段中的其中一台服務器,也就是說是D段1-255中的一台服務器,然后利用工具嗅探拿下該服務器。旁站和C段在線查詢地址:
- http://www.webscan.cc/
- https://phpinfo.me/bing.php
- https://scan.top15.cn
旁站掃描能掃描與該IP地址掛靠的其他網站,這有利於Web滲透,可能旁站存在漏洞。
3:端口攻擊
針對不同的端口具有不同的攻擊方法,因為每個端口就是記錄服務器或目標系統的大門,只要打開這個大門,就可以進入目標系統。例如:針對遠程連接服務端口的攻擊方法如下,因為23號端口Telnet遠程連接是明文傳遞信息的,可以通過爆破、嗅探、弱口令等方法實施攻擊。
這里推薦大家:當我們掃描到目標網站的端口號時,可以在搜索引擎中查找對應的攻擊方法進行測試,也可以在烏雲漏洞庫(http://www.anquan.us/)或CVE庫中搜索。
4:防御
對於端口攻擊來說,只要端口開放並且可以連通,就可以利用對應的方式進行攻擊測試。這里提供的防御措施包括:
- 關閉不必要的端口;
- 對重要業務的服務端口設置防火牆;
- 加強員工信息安全意識,經常性更換用戶密碼,避免弱口令爆破;
- 經常更新軟件,打補丁(Patch);
- 利用CVE網站的漏洞信息,提高自身網站的安全。
五.敏感信息收集
針對某些安全做得很好的目標,直接通過技術層面是無法完成滲透測試的。在這種情況下,可以利用搜索引擎目標暴露在互聯網上的關聯信息。例如:數據庫文件、SQL注入、服務配置信息,甚至是通過Git找到站點泄露源代碼,以及Redis等未授權訪問、Robots.txt等敏感信息,從而達到滲透目的。
在某些情況下,收集到的信息會對后期進行測試起到幫助重要。如果通過收集敏感信息直接獲取了目標系統的數據庫訪問權限,那么滲透測試任務就結束了一大半。因此在進行技術層面情況下的測試之前,應該先進行更多的信息收集,尤其是針對敏感信息的。
1:Google hacking
Google Hack是指使用Google、百度等搜索引擎對某些特定網站主機漏洞(通常是服務器上的腳本漏洞)進行搜索,以達到快速找到漏洞主機或特定主機的漏洞的目的。常見方法包括:
Google提供了強大的搜索功能,可以獲取精准的結果。如果訪問不了,也可以通過百度獲取相關內容,但是結果遠沒有谷歌精准,很多無關的廣告及視頻會返回給你。示例如下:
- intitle:eastmount 搜索網頁標題包含eastmount字符的網頁。
- inurl: login.asp?id= 搜索包含特定字符“login.asp?id=”的URL。常用示例為inurl:login.asp、inurl:asp?id=、inurl:login.asp。
- intext:cbi 搜索網頁正文內容包含特定字符cbi的網頁。
- filetype:ppt 搜索制定類型的文件,返回所有以ppt結尾的文件URL。
- site:baidu.com 找到與指定網站有聯系的URL。
2:http響應收集server信息
通過HTTP或HTTPS與目標站點進行通信中,目標響應的報文中Server頭和X-Powered-By頭會暴露目標服務器和使用的編程語言信息,通過這些信息可以有針對的利用漏洞嘗試。
獲取HTTP響應的基本方法包括:
- 利用工具,如瀏覽器審計工具、BurpSuite、Fiddler等代理截斷工具獲取
- 編寫Python腳本文件,如requests庫
右鍵瀏覽器審查元素,獲取Network中Headers信息。
六:真實ip地址識別
1.CDN
CDN全稱是Content Delivery Network,即內容分發網絡。其原理如下:某些大型網站在全國都會有很多用戶,這些用戶常常會向網站發送不同的請求,那么不同地域會具有不同的緩沖服務器來接收用戶發送的流量。如果用戶發送流量沒有任何交互的數據,只是請求首頁的話,此時根據用戶所在地區來確定訪問的高速緩存服務器,高速緩存服務器會返回對應的響應到用戶的瀏覽器當中。當用戶填寫數據,需要交互時才會將請求發送到真實的服務器,CDN通常存在用戶很多的大型流量網站,通過它來解決我們服務器的瓶頸。
2.判斷CDN存在
可以通過Ping來判斷網站是否存在CDN,www.xxxx.com和xxxx.com返回ip不一樣則使用了CDN
也可以通過設置代理或利用在線Ping網站來使用不同地區的Ping服務器來測試目標,不同的檢測點相應的ip不同
3.繞過CDN
如果目標沒有使用CDN: 可以直接利用ping獲取IP地址,或者利用在線網站獲取
如果目標使用CDN: 需要繞過CDN后去真實IP地址,方法如下:
- 內部郵箱源:收集到內部郵箱服務器IP地址
- 網站phpinfo文件:phpinfo.php
- 分站IP地址,查詢子域名:CDN很貴,很有可能分站就不再使用CDN
- 國外訪問:https://asm.ca.com/en/ping.php
- 查詢域名解析記錄:https://viewdns.info/
通過國內網站(https://viewdns.info/)獲取IP地址
4.驗證ip地址
對得到的ip進行訪問,如果正常則說明為真實ip,否則為假的
七.總結
之前看過很多篇信息收集的文章,一直沒有做過記錄,感覺這篇文章總結的很全面就記錄下來學習一下。
再附上大佬對我說的話:第一 給你aa.com不是讓你去看ip的 ip很有可能都是cdn 給你aa.com是讓你去知道你要滲透的目標,然后根據域名定位公司,控股100%子公司,這是第一步,你要收集的你滲透的資產,
第二步才是主公司子域名,控股公司子域名,以及一些大目標很有可能全是外網c段甚至b段,他們分布的ip段,剩下的就和你說的差不多,但是日一個web最開始是肯定看web容器 服務器系統 操作語言的,當然能直接看出cms更好, 收集完子域名后 判斷存活,去重,然后利用一些已知的漏洞攻擊(cms框架漏洞,sql注入,上傳,爆破,xss,rce)等等,如果獲取到一個權限,一定要很小心,別一開始就掃描什么的,先把能收集的信息收集到極致,在開始為下一步滲透做准備,其實滲透測試就是信息收集的過程,你記住,滲透就是一直收集信息,打不下來就繼續收集。
參考:https://cloud.tencent.com/developer/article/1685126