滲透測試之目標分析與指紋識別總結
建站形式分析
分目錄站點
?形如: www.xxx.com www.xxx.com/bbs www.xxx.com/old
?滲透思路:網站可能有多個cms或框架組成,那么對于滲透而言,相當于滲透目標是多個(一個cms一個思路)
分端口站點
?形如:www.zzz.com www.zzz.com:8080 www.zzz.com:8888
?滲透思路:網站可能有多個端口或框架組成,那么對于滲透而言,相當于滲透目標是多個(一個端口一個思路)
分域名站點
?形如:www.yyy.com bbs.yyy.com blog.yyy.com
?滲透思路:分域名和主站可能同服務器或同網段,對于分域名滲透可以直接和主站進行聯系
分移動端站點
?形如:www.yyy.com m.yyy.com
?滲透思路:不同主站一套的移動端框架程序,需要對移動端站點另做測試
整站分析
服務器類型
Windows:Server 2003、Server 2008、Server 2012、Server 2016……
Linux:CentOS、RHEL、Ubuntu Server、Debian……
如何判斷操作系統類型?
最簡單的方法是通過Ping命令去探測:Windows的TTL值都是一般是128,Linux則是64。所以大于100的一般是Windows,而幾十的一般是Linux。
判斷目標網站服務器的具體的版本的話,可以采用 nmap 進行掃描, -O 和 -A 參數都能掃描出來。
網站容器類型
知道了這些信息之后,我們就需要知道網站用的web服務器是什么類型的:Apache、Nginx、Tomcat還是 IIS。知道了web服務器是哪種類型后,我們還要探測web服務器具體的版本。比如Ngnix版本<0.83會有解析漏洞 ,IIS6.0會有文件名解析漏洞、IIS7.0會有畸形解析漏洞等。不同的web服務器版本,存在著不同漏洞。
腳本類型
我們需要知道網站用的腳本類型:PHP、JSP、ASP、ASPX。
數據庫類型
我們需要知道網站用的是哪種類型的數據庫:MySQL、Oracle、SqlServer 還是 Access 。雖然這幾種數據庫的語法大體上相同,但是還是有區別的。所以我們還是要知道目標網站用的是哪種數據庫,并且數據庫是哪個版本的。
常見腳本與數據庫搭配
ASP 和 ASPX:ACCESS、SQL Server
PHP:MySQL、PostgreSQL
JSP:Oracle、MySQL
指紋識別
指紋識別簡介
在web滲透過程中,Web指紋識別是信息收集環節中一個比較重要的步驟,通過一些開源的工具、平臺或者手工檢測CMS系統是公開的CMS程序還是二次開發至關重要,能準確的獲取CMS類型、Web服務組件類型及版本信息可以幫助安全工程師快速有效的去驗證已知漏洞。
常見指紋檢測的對象
?CMS信息:比如大漢CMS、織夢、帝國CMS、phpcms、ecshop等
?前端技術:比如HTML5、jquery、bootstrap、pure、ace等
?Web服務器:比如Apache、lighttpd, Nginx, IIS等
?應用服務器:比如Tomcat、Jboss、weblogic、websphere等
?開發語言:比如PHP、Java、Ruby、Python、C#等
?操作系統信息:比如RHEL、win2008、centos等
?CDN信息:是否使用CDN,如cloudflare、360cdn、365cyd、yunjiasu等
?WAF信息:是否使用waf,如Topsec、Jiasule、Yundun等
?IP及域名信息:IP和域名注冊信息、服務商信息等
?端口信息:有些軟件或平臺還會探測服務器開放的常見端口
常見的指紋識別方式
特定文件的MD5
一些網站的特定圖片文件、js文件、CSS等靜態文件,如favicon.ico、css、logo.ico、js等文件一般不會修改,通過爬蟲對這些文件進行抓取并比對md5值,如果和規則庫中的Md5一致則說明是同一CMS。這種方式速度比較快,誤報率相對低一些,但也不排除有些二次開發的CMS會修改這些文件。
正常頁面或錯誤網頁中包含的關鍵字
先訪問首頁或特定頁面如robots.txt等,通過正則的方式去匹配某些關鍵字,如Powered by Discuz、dedecms等。\\或者可以構造錯誤頁面,根據報錯信息來判斷使用的CMS或者中間件信息,比較常見的如tomcat的報錯頁面。
請求頭信息的關鍵字匹配
根據網站response返回頭信息進行關鍵字匹配,whatweb和Wappalyzer就是通過banner信息來快速識別指紋,之前fofa的web指紋庫很多都是使用的這種方法,效率非常高,基本請求一次就可以,但搜集這些規則可能會耗時很長。而且這些banner信息有些很容易被改掉。
根據response header一般有以下幾種識別方式:
?查看http響應報頭的X-Powered-By字段來識別;
?根據Cookies來進行判斷,比如一些waf會在返回頭中包含一些信息,如360wzws、Safedog、yunsuo等;
?根據header中的Server信息來判斷,如DVRDVS-Webs、yunjiasu-nginx、Mod_Security、nginx-wallarm等;
?根據WWW-Authenticate進行判斷,一些路由交換設備可能存在這個字段,如NETCORE、huawei、h3c等設備。
部分URL中包含的關鍵字
比如wp-includes、dede等URL關鍵特征。
通過規則庫去探測是否有相應目錄,或者根據爬蟲結果對鏈接url進行分析,或者對robots.txt文件中目錄進行檢測等等方式,通過url地址來判別是否使用了某CMS,比如wordpress默認存在wp-includes和wp-admin目錄,織夢默認管理后臺為dede目錄,solr平臺可能使用/solr目錄,weblogic可能使用wls-wsat目錄等。
開發語言的識別
web開發語言一般常見的有PHP、jsp、aspx、asp等,常見的識別方式有:
?通過爬蟲獲取動態鏈接進行直接判斷是比較簡便的方法。比如:asp判別規則如下]*?href=('|")[^http][^>]*?\.asp(\?|\#|\1),其他語言可替換相應asp即可。
?通過X-Powered-By進行識別比較常見的有X-Powered-By: ASP.NET或者X-Powered-By: PHP/7.1.8
?通過Set-Cookie進行識別
這種方法比較常見也很快捷,比如Set-Cookie中包含PHPSSIONID說明是php、包含JSESSIONID說明是java、包含ASP.NET_SessionId說明是aspx等。
指紋識別工具
國外指紋識別工具
WhatWeb
Kali Linux 內置工具。
Whatweb 是一個開源的網站指紋識別軟件,擁有超過1700+個插件,它能識別的指紋包括 cms 類型、博客平臺、網站流量分析軟件、javascript 庫、網站服務器,還可以識別版本號、郵箱地址、賬戶 id、web 框架模塊等。
下載地址:https://github.com/urbanadventurer/WhatWeb
Wapplyzer插件
Wappalyzer 是一個實用的跨平臺網站分析工具,用于幫助開發者、研究者和設計者檢測網頁使用的是什么技術,以更好地衡量自己的項目中該使用什么技術。Wappalyzer 的功能和 BuiltWith 類似,可檢測內容管理系統(CMS),電子商務平臺、Web服務器、JavaScript框架和已安裝的分析工具等。
Wappalyzer可直接在chrome或火狐的應用商城直接搜索安裝。
Wappalyzer目前可識別65個大類的1216個應用,查看可檢測的應用程序列表:https://wappalyzer.com/applications
下載地址:https://github.com/AliasIO/Wappalyzer
Whatruns插件
Whatruns是為chrome開發的一款web指紋識別程序,還可以顯示托管的CDN、wordpress插件、wordpress字體等,擁有豐富的插件支持。
跟Wappalyzer安裝類似,Whatruns可直接在chrome應用商城直接搜索安裝。
Plecost
Plecost是Wordpress博客引擎的漏洞指紋識別和漏洞查找器,能識別Wordpress版本并能查找到cve,不過訪問不了google的話可能有些功能就受限了。Plecost基于python架構,利用了Beautiful Soup來解析html、xml文件識別網站使用的插件及版本。
下載地址:https://github.com/iniqua/plecost
國內指紋識別工具
御劍web指紋識別程序
御劍web指紋識別程序是一款CMS指紋識別小工具,該程序由.NET 2.0框架開發,配置靈活、支持自定義關鍵字和正則匹配兩種模式、使用起來簡潔、體驗良好。在指紋命中方面表現不錯、識別速度很快、但目前比較明顯的缺陷是指紋的配置庫偏少。
windows下圖形界面,比較親民,掃描速度略慢,指紋庫略少,可手工更新。
下載地址:https://www.webshell.cc/4697.html
Test404輕量WEB指紋識別
Test404輕量WEB指紋識別程序是一款CMS指紋識別小工具,配置靈活、支持自行添加字典、使用起來簡潔、體驗良好。在指紋命中方面表現不錯、識別速度很快。可手動更新指紋識別庫,而且該軟件在2019.04月剛剛更新了一版。
下載地址:https://www.test404.com/post-1618.html
w11scan分布式WEB指紋識別平臺
w11scan是一款分布式的WEB指紋識別系統(包括CMS識別、js框架、組件容器、代碼語言、WAF等等),管理員可以在WEB端新增/修改指紋,建立批量的掃描任務,并且支持多種搜索語法。
安裝和下載可參考:https://github.com/w-digital-scanner/w11scan
手工安裝稍微復雜,不過作者提供了docker部署,方便很多,使用了Mongodb,內置了1800多條常見的指紋,可以識別多達538種常見CMS,當然也可以手工添加指紋。
TideFinger
TideSec團隊開發的一個開源的指紋識別工具,使用了傳統和現代檢測技術相結合的指紋檢測方法,讓指紋檢測更快捷、準確。
下載地址:https://github.com/TideSec/TideFinger\\\\在對指紋庫整理去重后,對每個指紋進行了命中率的標識,當匹配到某個指紋時該指紋命中率會加1,而在使用指紋時會從優先使用命中率高的指紋。
Dayu指紋識別工具
“大禹”為一款c/s結構jar文件工具,只需本地安裝java環境,加參數-u即可,具體設置參數可參考github介紹。
下載地址:https://github.com/Ms0x0/Dayu
在線指紋識別
云悉指紋識別
http://www.yunsee.cn/
bugscaner指紋識別
http://whatweb.bugscaner.com/look/
潮汐在線指紋識別
http://finger.tidesec.net/