黑盒滲透測試的一些姿勢和個人總結
對于“滲透測試”這個事,我也時常糾結,尤其在“度”的方面上,畢竟自己還很年輕。個人感覺,滲透是在不影響單位正常運營的前提下的一場完整攻擊,目標是一個面不是一個點。但是,大家都懂得2333。
入坑以來,跟著網上師傅們分享的各種好文章劃來劃去,終于肚子里有點墨水擠出來了,水了一篇基于隱秘測試的黑盒滲透測試的小文分享一下。本文主要分享下一些姿勢和個人總結,文章涉及的工具可能比較多,就不一一舉例用法了,畢竟不想搞成一個工具使用說明文*(相關工具用法搜索一下就有了)*,也不提供下載鏈接了,畢竟我是好公民。
?? ??
一、個人準備
準備一套新win+lin虛擬機并安裝常用工具,不要使用實體機。
白天好好睡覺,晚上干活,萬一對服務造成傷害還可以降低影響。
二、信息搜集
1. 主動/被動搜集
信息搜集分為主動信息搜集和被動信息搜集。
主動信息搜集就是通過直接訪問和掃描信息的方式進行收集信息,缺點是會記錄自己的操作信息;被動信息搜集就是通過第三方服務進行信息搜集,缺點是收集信息有限。信息搜集是很重要的一部分,信息越全面對后面的攻擊越有幫助,可以先盡最大努力的使用被動信息搜集方式最大效果的搜集信息,再使用主動信息搜集的方式搜集非被動搜集不到的信息。
2. 常用套路
- 搜集網站單位信息。這項可以通過一些在線網站來查詢,可以由此得到單位的基本信息。分享幾個單位信息查詢站點:天眼查、啟信寶、企業信用信息公示系統、事業單位在線、
- 搜集whois信息。一個網站的切入點,可以由此得到域名相關信息。列舉幾個whois查詢站點:Chinaz、Aliyun、Whois365
- 搜集網站備案信息:ICP備案查詢網 、ICP/IP地址/域名信息備案管理系統
- 搜集子域名信息。子域名往往是滲透過程中重點關注的對象,主站行不通的情況下往往首先想到子站入手。分享幾個子域名搜集方法和工具:搜索引擎查詢(Baidu、So、Bing、Google等)、DNS域傳送漏洞、父站點爬取、IP反查、Forward-DNS 、子域名挖掘機、Host、Dig、Dnsenum、Dnsmap、Fierce
- 搜集郵件系統信息。郵件系統也是需要重點關注的地方,在自建郵件服務情況下很好的利用郵件服務可以達到意想不到效果,并且在GET到某些郵件地址情況下進行釣魚也不錯的選擇。可以先通過域名MX記錄查看是否為自建郵件服務器,自建的情況下可以后續測試漏洞,通過TheHarvester可以進行郵箱挖掘,后續再爆破一波就美滋滋了。
- 搜集真實IP地址。弄到藏在CDN后的真實IP的確是個頭大的事情,師傅們分享的大多是通過多地ping的方式確定是否有CDN,再通過子站IP嘗試和國外訪問嘗試的方式看看是否可獲得IP,或通過歷史域名解析記錄尋找IP,或利用DNS查詢IP、或利用郵件驗證碼之類功能獲取郵件發送地址,或利用DDOS消耗CND進行IP泄漏。
- 搜集旁站信息。主站搞不定的情況下搞下旁站也是一條路,畢竟目的是一個突破點。感謝師傅分享的旁站查詢接口。
- 搜集C段信息。一個單位不可能只買一個IP,很多都是大小段的買,所以從C段也能突破進單位,舉例幾個的查C段工具:Nmap、Zmap、Webscan、Hackmall
- 搜集Web敏感文件。Web敏感文件比較多,日常留意多搜集。舉幾個例子:robots.txt、crossdomin.xml、sitemap.xml、源碼泄漏文件
- 搜集服務器和中間件信息。這一項也有多種方式,可以通過Zoomeye、Shodan等優秀的在線系統搜集,也可以利用Nmap、MSF、Zmap等端口和指紋識別功能搜集,也可以用NC和Telnet獲取Banner信息進行識別,Web方面可以用Whatweb工具或者通過Headers信息。
- 搜集WAF信息:WAF識別大多基于Headers頭信息,有一個老工具Wafw00f可以用來探測一定的Waf,也可利用Sqlmap的waf腳本,也可使用Nmap的http-waf-detect和http-waf-fingerprint腳本,也可自己平時多收集Waf特征。
- 搜集歷史漏洞。若能夠在根據已有信息情況下找到一枚歷史漏洞將會是一個巨大的幫助。漏洞查詢站點舉例:exploitdb 、hackerone、CNVD 、0day5 、烏云漏洞庫鏡像站。
3. 從信息到規劃
根據已搜集的信息進行梳理與分析,查找疏漏點進行搜集補充,從各個角度都整理一套滲透攻擊步驟與思路的規劃,優先以最擅長的方面切入,優先以最有把握的點切入,以不打草驚蛇為原則。
三、漏洞挖掘與利用
1. 漏洞挖掘
站點漏洞挖掘是大家都經常搞的了,挖洞技能全靠平時積累學習。看文章的師傅們水平目測都比我高,這里不班門弄斧了,只分享下一般站點漏洞挖掘的個人習慣(不對地方還請指出,3Q)。
- 針對站點漏洞挖掘,我個人不喜歡直接上AWVS、Appscan、Nessus之類的重量級掃描器,一方面用重量級掃描器會很容易被負責的運維人員發現,這樣無疑會增大接下來的滲透難度;另一方面會被絆IP,這樣就損失部分代理或肉雞;再一方面還有一定機率對站點數據和服務造成破壞,這也是滲透最不想看到的事;再者說現在的站點也沒有能輕易被掃描器掃出來的Web漏洞。
- 對一個站點,我一般會習慣性的按著從系統漏洞探測到中間件漏洞探測再到Web漏洞探測的過程。雖說大多數情況下系統漏洞和中間件漏洞碰到的不多,但萬一走運了。對系統漏洞和中間件漏洞挖掘,常用Nmap腳本、MSF模塊、F-MiddlewareScan框架等工具。對于Web漏洞探測,若是CMS站點首先去尋找版本漏洞,也可以WPScan、Joomscan、M7lrv-CMS之類工具掃一掃,也可以利用CMS-Exploit-Framework框架利用漏洞,但大多CMS攻擊還需要靠自己積累學習(挖0day);若是自行開發的Web站點,那就需要發揮一個Web狗的特長了,先搞帳號熟悉一下基本功能和結構,重點地方重點排查,從注冊到登錄到功能到……從注入到跨站到第三方功能組件……多多探測,多多fuzz。
- 主站搞不下搞旁站,旁站搞不下搞C段,只要得到一個突破口就夠了。站點都不好弄情況下,還可以根據已有的信息進行社工以獲得更多的信息,信息越多進行密碼破解可能性越大,順便分享個密碼包(ps:忘了從哪掏的包了,感謝收集者。)。
- 若對測試目標左挖右挖都挖不到能利用的點,那也不,還有一項:APT攻擊。一個測試目標,即便站點維護強固,但也很難保證內部員工安全素質極高,一點小小的疏漏就給了攻擊者可趁之機。做一個有深度的APT攻擊是個很耗時耗力的事情,但對于測試目標安全性能底線而言,可以進行一個小型的APT攻擊。現在常見的APT攻擊手段就是水坑攻擊和魚叉式網絡釣魚。攻擊的前提是社工得到足夠的內部員工的體系結構、上網習性等信息,了解體系結構才能知道在哪里能夠獲得更有用的信息,了解上網習性才能利用習性漏洞進行開展入侵。一個軟件使用版本、使用習慣都會給攻擊者帶來一個入侵點,但攻擊者肚里也要有足夠的量。反正只要能通過水坑攻擊或魚叉式釣魚等方式搞到一臺內部機,剩余的都是搞內網的事情了。
2. 漏洞利用
- 利用挖掘出來的漏洞也要很小心,能把服務打癱瘓的漏洞就先不要嘗試了。
- 對于系統漏洞和中間件漏洞,自己常用的就是msf和exploitdb直接利用現成腳本工具打,但特別情況下也需要修改或自造腳本。
- 對于邏輯漏洞、越權、CSRF/XSRF之類的漏洞,在沒法擴大滲透深度的情況下就可以寫這項的報告了。
- 對于SSRF漏洞,環境允許的情況下可以很好的利用它進行內網探測與攻擊,關于SSRF推薦豬豬俠師傅的《一個只影響有錢人的漏洞》文章。
- 對于任意文件上傳漏洞,能拿shell就可以做跳板搞內網了。
- 對于任意文件包含和任意讀取,一般就是遠程包含拿shell,本地讀取拿文件,特別情況下還可以擴大利用。
- 對于SQL注入漏洞,注入要有“度”,能得到管理員密碼進后臺上shell就知足了,千萬別動別的,利用方式上提倡自寫腳本。
- 對于XSS漏洞,不要習慣性的拿彈窗測試,不建議使用別人搭建的平臺,可以利用BlueLotus_XSSReceiver搭建或者利用BeEF或者利用XSSer或者寫個小腳本自建。
其他漏洞就不一一舉例了,反正在隱秘測試的情況下,能悄悄的就悄悄的。
漏洞挖掘與利用輔助工具也就那些常用的那些,除了上面列舉外再舉例幾個自己比較習慣的:Firefox插件(Hackbar、HackSearch、HttpRequester、Live Http headers、Modify Headers、Netcraft Anti-Phishing Toolbar、NoScript、Wappalyzer、Web Developer)、御劍、椰樹、dirb、K8fly、Sqlmap、BurpSuite、AntSword、Hashcat、Hydra、Medusa。
四、提權與維權
1. 提升權限
雖說僅僅是個測試,但很多情況下提權還是要的,這是變點為面的前提。當然,提權也未必是在自己拿到的站點服務器或釣到的那個主機上提權,提權目的是有個高權限的機子來方便測試整個內網,比如可以以已有機器為跳板以遠程提權方式來打到內網其他主機的高權限,所以只要在內網任意機器上拿到可進一步滲透利用的高級權限就夠了。提權方法也有很多,不同環境下有不同的姿勢。
- 系統漏洞提權。windows下可以用systeminfo查看系統版本和補丁記錄,利用沒修補的漏洞提權,例如MS11080等;linux下可以用uname -a查看系統內核版本,利用系統內核漏洞提權(內核提權很容易導致系統崩潰,要小心),例如心臟出血等。
- 數據庫提權。一方面可以利用數據庫漏洞得到數據庫執行權的Shell;另一方面可以在站點數據庫配置文件找數據庫帳號密碼,利用數據庫系統命令執行功能獲得數據庫執行權的Shell。數據庫漏洞上例如Mssql的JOB提權、Mysql的Mof提權。
- Web中間件漏洞提權。通過Web服務的容器漏洞進行本地提權。例如IIS溢出、Tomcat提權等。
- 第三方軟件提權。很多開機自啟的軟件都會以system權限運行,或者使用者啟動時使用了管理員權限運行。例如Radmin、Filezllia、搜狗拼音提權等
- 系統錯誤配置提權。在windows下可以使用BeRoot工具進行系統配置檢查,利用配置錯誤點進行提權。
- 獲取高權限賬號提權。可以在控制機上利用LaZagne project(支持linux、windows、mac),可以抓取chats、mails、database、wifi、sysadmin、wallet、browsers、memory中的密碼,可以利用抓取到的密碼進行高權限帳號密碼測試,也可以利用神器mimikatz和mimipenguin,不過在部分時候由于權限問題可能讀取不到部分密碼。
2. 維持權限
維權也是一個必須的點,好不容易搞到的跳板可不能輕易丟了。維權也就是所謂的留后門,無論windows下還是linux下留后門姿勢都多種多樣,我也就只列舉幾個吧。
- 服務器站點可以采取構造Web漏洞方式維權。我感覺這種方式比放上個馬可靠多,同時漏洞構造的隱蔽一些,讓其他人給利用了就不好完了。比如可以構造復雜的文件包含漏洞包含放在某個系統目錄下的木馬圖片來獲取Shell,也可以構造SQL注入利用Sqlmap的--os-shell參數來執行Shell。
- 服務器站點可以使用過狗過盾的復雜馬維權。復雜馬的構造需要私下自己多實驗多構造了。
- Linux、Windows賬戶維權。這個方法只適合沒有做LDAP或堡壘機之類的SSO統一權限管理和沒有屏蔽對外端口的情況,可以利用密碼讀取工具讀取到的密碼進行保持權限,也可以自建linux隱藏賬戶、windows隱藏賬戶的方式保持權限。
- 工具法維權。工具概括來說就是主動反彈和被動連接兩種。兩種方式各有優缺點,例如:主動反彈方式既可以放在有公網IP的服務器站點也可以放在內網釣到的機子上,并且更方便規避防火墻、IPS等阻礙,但需要設定觸發機制,不能做到想連就連;被動連接方式能夠隨時連,但無法利用在內網機子上(除非你拿了上層路由做了端口映射)。利用上例如msf生成后門、nc反彈,腳本反彈shell等。
3. 內網滲透
內網滲透基本都是依據當前所獲得的網絡環境進行策略制定,不同環境方式不同,但內網中能搞得也就常說的那些,在有比較靠譜的防火墻、NIDS、IPS的情況下內網就更加難搞了,時時刻刻還要提防它們。這里也就之列舉一下常用的內網思路。
4. 常用套路
- 網絡拓撲探測。探測拓撲是個很頭大的事,子內網和防火墻都會阻礙拓撲探測。大多也只能探測到上層網、公共網、內網服務器網的網絡環境,再有些其他因素就導致探測的更少了。
- 內網弱口令。內網弱口令其實還是蠻多的,可以對同子網個人電腦、內網服務器、交換機、路由器嘗試弱口令破解。
- 內網服務器漏洞。若在OA之類的內網辦公通訊站點,可以挖到漏洞就可以獲取到部分有助內網滲透的信息。
- 內網路由器漏洞。無論是上層網路由還是內網服務器網路由,只要拿下路由器那就是個很大的幫助,這樣就可以進一步做端口映射和轉發,更好的其搜集其他內網信息,擴大了攻擊面。
- 內網個人電腦漏洞。例如利用17010之類的遠程漏洞測試同子內網中的個人電腦,進而多搜集信息,以方便測試內網服務器。一個不錯的內網信息搜集腳本:地址
- 內網釣魚。和一般釣魚思路差不多,不過內網中更容易讓別人信任,可以通過OA和辦公郵件進行釣魚。
- 中間人攻擊。不同環境下可以用不同的姿勢,一般用的多的就是ARP欺騙、DNS欺騙、會話劫持,進行中間人攻擊的前提是取得一定的內網權限。
- 內網穿透。在進行部分攻擊時候,可能需要讓其他內網電腦穿過外網出口進行輔助測試,這里推薦一篇不錯的穿越邊界的姿勢,另外經過Web站點做代理進行穿透時候還需要做Web端口復用。
五、后記
一場正規測試下清理痕跡就可以省了,所以這里也不寫了,但還是需要老老實實供出在人家網絡干了哪些事,以免以后出其他亂子扣在自己頭上。另外還需要撰寫漏洞報告,一個漂亮的報告是滲透測試的滿意答卷,漏洞報告上不僅要體現出漏洞危害程度與漏洞細節,相應的修補建議尤其是內網修補建議要詳細、規格、嚴謹。