滲透測試,是滲透測試工程師完全模擬黑客可能使用的攻擊技術(shù)和漏洞發(fā)現(xiàn)技術(shù),對目標網(wǎng)絡(luò)、主機、應(yīng)用的安全作深入的探測,發(fā)現(xiàn)系統(tǒng)最脆弱的環(huán)節(jié)。
如果說安全檢測是“橫向地毯式自動化掃描”,那么滲透測試就是“縱向深度人工化入侵”。
可見滲透測試的目的是發(fā)現(xiàn)目標系統(tǒng)潛在的業(yè)務(wù)漏洞風(fēng)險。
安全問題都體現(xiàn)在輸入輸出的問題上,能夠分析數(shù)據(jù)流就有跡可循了。先知道滲透測試的流程,用工具找到漏洞,了解并且復(fù)現(xiàn)它。
怎么做安全滲透測試?
當需要測試的web應(yīng)用數(shù)以千計,就有必要建立一套完整的安全測試框架,流程的最高目標是要保證交付給客戶的安全測試服務(wù)質(zhì)量。
立項:項目建立,時間安排,人力分配,目標制定,廠商接口人確定;
系統(tǒng)分析&威脅分析:針對具體的web應(yīng)用,分析系統(tǒng)架構(gòu)、使用的組件、對外提供的接口等,以STRIDE為威脅模型進行對應(yīng)的安全威脅分析,輸出安全威脅分析表,重點關(guān)注top3威脅;
制定測試用例:根據(jù)威脅分析的結(jié)果制定對應(yīng)的測試用例,測試用例按照模板輸出,具備可執(zhí)行性;
測試執(zhí)行&漏洞挖掘:測試用例執(zhí)行&發(fā)散測試,挖掘?qū)?yīng)的安全問題or漏洞;
問題修復(fù)&回歸測試:指導(dǎo)客戶應(yīng)用開發(fā)方修復(fù)安全問題or漏洞,并進行回歸測試,確保安全問題or漏洞得到修復(fù),并且沒有引入新的安全問題;
項目總結(jié)評審:項目過程總結(jié),輸出文檔評審,相關(guān)文檔歸檔。
2、Web應(yīng)用的滲透測試流程
主要分為3個階段,分別是:信息收集→漏洞發(fā)現(xiàn)→漏洞利用,下面仔細分析一下各個階段流程:
一、信息收集
在信息收集階段,我們需要盡量多的收集關(guān)于目標web應(yīng)用的各種信息,比如:腳本語言的類型、服務(wù)器的類型、目錄的結(jié)構(gòu)、使用的開源軟件、數(shù)據(jù)庫類型、所有鏈接頁面,用到的框架等
腳本語言的類型:常見的腳本語言的類型包括:php、asp、aspx、jsp等
測試方法:
1 爬取網(wǎng)站所有鏈接,查看后綴
2 直接訪問一個不存在頁面后面加不同的后綴測試
3 查看robots.txt,查看后綴
服務(wù)器的類型:常見的web服務(wù)器包括:apache、tomcat、IIS、ngnix等
測試方法:
1 查看header,判斷服務(wù)器類型
2 根據(jù)報錯信息判斷
3 根據(jù)默認頁面判斷
目錄的結(jié)構(gòu):了解更多的目錄,可能發(fā)現(xiàn)更多的弱點,如:目錄瀏覽、代碼泄漏等。
1 使用字典枚舉目錄
2 使用爬蟲爬取整個網(wǎng)站,或者使用google等搜索引擎獲取
3 查看robots.txt是否泄漏
使用的開源軟件:我們?nèi)绻懒四繕耸褂玫拈_源軟件,我們可以查找相關(guān)的軟件的漏洞直接對網(wǎng)站進行測試。
指紋識別(網(wǎng)絡(luò)上有很多開源的指紋識別工具)
數(shù)據(jù)庫類型:對于不同的數(shù)據(jù)庫有不同的測試方法。
1 使應(yīng)用程序報錯,查看報錯信息
2 掃描服務(wù)器的數(shù)據(jù)庫端口(沒做NAT且防火墻不過濾時有效)
所有鏈接頁面:這個跟前面的獲取目錄結(jié)構(gòu)類似,但是這個不只是獲取網(wǎng)站的所有功能頁面,有時候還可以獲取到管理員備份的源碼。
1 使用字典枚舉頁面
2 使用爬蟲爬取整個網(wǎng)站,或者使用google等搜索引擎獲取
3 查看robots.txt是否泄漏
用到的框架:很多網(wǎng)站都利用開源的框架來快速開發(fā)網(wǎng)站,所以收集網(wǎng)站的框架信息也是非常關(guān)鍵的。
測試方法
指紋識別(網(wǎng)絡(luò)上有很多開源的指紋識別工具)
二、漏洞發(fā)現(xiàn)
在這個階段我們在做測試的時候要對癥下藥,不能盲目的去掃描,首先要確定目標應(yīng)用是否使用的是公開的開源軟件,開源框架等、然后在做深一度的漏洞掃描。
關(guān)于開源軟件的漏洞發(fā)現(xiàn)
開源的軟件:常見的開源軟件有wordpress、phpbb、dedecms等
開源的框架:常見的開源框架有Struts2、 Spring MVC、ThinkPHP等
中間件服務(wù)器:常見的中間件服務(wù)器有jboss、tomcat、Weblogic等
數(shù)據(jù)庫服務(wù):常見的數(shù)據(jù)庫服務(wù)mssql、mysql、oracle、redis、sybase、MongoDB、DB2等
對于開源軟件的測試方法
1 通過指紋識別軟件判斷開源軟件的版本信息,針對不同的版本信息去開放的漏洞數(shù)據(jù)庫查找相應(yīng)版本的漏洞進行測試
2 對于默認的后臺登錄頁、數(shù)據(jù)庫服務(wù)端口認證等入口可以進行簡單的暴力破解、默認口令嘗試等操作
3 使用開源的漏洞發(fā)現(xiàn)工具對其進行漏洞掃描,如:WPScan
關(guān)于自主開發(fā)的應(yīng)用
手動測試:這個階段,我們需要手工測試所有與用戶交互的功能,比如:留言、登入、下單、退出、退貨、付款等操作
軟件掃描:使用免費的軟件掃描,如:appscan、wvs、netsparker,burp等
可能存在的漏洞
Owasp關(guān)鍵點
代碼安全之上傳文件
代碼安全之文件包含
代碼安全之SSRF
邏輯漏洞之密碼重置
邏輯漏洞之支付漏洞
邏輯漏洞之越權(quán)訪問
平臺安全之中間件安全
三、漏洞利用
針對不同的弱點有不同的漏洞利用方式,需要的知識點也比較多。一般這個階段包括兩種方式,一種是手工測試,一種是工具測試
手工測試
手工測試是通過客戶端或服務(wù)器訪問目標服務(wù),手工向目標程序發(fā)送特殊的數(shù)據(jù),包括有效的和無效的輸入,觀察目標的狀態(tài)、對各種輸入的反應(yīng),根據(jù)結(jié)果來發(fā)現(xiàn)問題的漏洞檢測技術(shù)。手工測試不需要額外的輔助工具,可由測試者獨立完成,實現(xiàn)起來比較簡單。但這種方法高度依賴于測試者,需要測試者對目標比較了解。手工測試可用于Web應(yīng)用程序、瀏覽器及其他需要用戶交互的程序。
這種方式對于有特殊過濾等操作,或者網(wǎng)絡(luò)上沒有成型的利用工具的時候可以使用。
工具測試
網(wǎng)絡(luò)上有很多好用的免費利用工具,比如針對sql注入的sqlmap、針對軟件漏洞的matesploit等。
怎么做安全滲透測試?對于web應(yīng)用的滲透測試,大致可分為三個階段:信息收集、漏洞發(fā)現(xiàn)以及漏洞利用。在實踐過程中需要進一步明細測試的流程,以下通過9個階段來描述滲透測試的整個流程:
1.明確目標
1)確定范圍:測試的范圍,如:IP、域名、內(nèi)外網(wǎng)、整站or部分模塊
2)確定規(guī)則:能滲透到什么程度(發(fā)現(xiàn)漏洞為止or繼續(xù)利用漏洞)、時間限制、能否修改上傳、能否提權(quán)...
目標系統(tǒng)介紹、重點保護對象及特性。
是否允許數(shù)據(jù)破壞?
是否允許阻斷業(yè)務(wù)正常運行?
測試之前是否應(yīng)當知會相關(guān)部門接口人?
接入方式?外網(wǎng)和內(nèi)網(wǎng)?
測試是發(fā)現(xiàn)問題就算成功,還是盡可能的發(fā)現(xiàn)多的問題?
滲透過程是否需要考慮社會工程?
3)確定需求:web應(yīng)用的漏洞(新上線程序)?業(yè)務(wù)邏輯漏洞(針對業(yè)務(wù)的)?人員權(quán)限管理漏洞(針對人員、權(quán)限)?
根據(jù)需求和自己技術(shù)能力來確定能不能做、能做多少
2.分析風(fēng)險,獲得授權(quán)
分析滲透測試過程中可能產(chǎn)生的風(fēng)險,如大量測試數(shù)據(jù)的處理、影響正常業(yè)務(wù)開展、服務(wù)器發(fā)生異常的應(yīng)急、數(shù)據(jù)備份和恢復(fù)、測試人力物力成本...
由測試方書寫實施方案初稿并提交給客戶(or本公司內(nèi)部領(lǐng)導(dǎo))進行審核。在審核完成后,從客戶(or本公司內(nèi)部領(lǐng)導(dǎo))獲取對測試方進行書面委托授權(quán)書,授權(quán)測試方進行滲透測試。
3.信息收集
在信息收集階段,我們需要盡量多的收集關(guān)于目標web應(yīng)用的各種信息,比如:腳本語言的類型、服務(wù)器的類型、目錄的結(jié)構(gòu)、使用的開源軟件、數(shù)據(jù)庫類型、所有鏈接頁面,用到的框架等。
方式:主動掃描;開放搜索
開放搜索:利用搜索引擎獲得后臺、未授權(quán)頁面、敏感url
基礎(chǔ)信息:IP,網(wǎng)段,域名,端口
系統(tǒng)信息:操作系統(tǒng)版本
應(yīng)用信息:各端口的應(yīng)用,例如web應(yīng)用,郵件應(yīng)用等
版本信息:所有探測到的版本
服務(wù)信息:服務(wù)器類型、版本
人員信息:域名注冊人員信息,web應(yīng)用中網(wǎng)站發(fā)帖人的id,管理員姓名等
防護信息:試著看能否探測到防護設(shè)備
4.漏洞探測(手動&自動)
利用上一步中列出的信息,使用相應(yīng)的漏洞檢測
方法:
1)漏掃:AWVS、AppScan...
2)結(jié)合漏洞去exploit-db等位置找利用
3)在網(wǎng)上尋找驗證POC
內(nèi)容:
系統(tǒng)漏洞:系統(tǒng)沒有及時打補丁
Websever漏洞:Websever配置問題
Web應(yīng)用漏洞:Web應(yīng)用開發(fā)問題
其它端口服務(wù)漏洞:各種21/8080(st2)/7001/22/3389
通信安全:明文傳輸,token在cookie中傳送等
5.漏洞驗證
將上一步中發(fā)現(xiàn)的有可能可以成功利用的全部漏洞都驗證一遍。結(jié)合實際情況,搭建模擬環(huán)境進行試驗,成功后再應(yīng)用于目標中。
自動化驗證:結(jié)合自動化掃描工具提供的結(jié)果
手工驗證:根據(jù)公開資源進行驗證
試驗驗證:自己搭建模擬環(huán)境進行驗證
登錄猜解:有時可以嘗試猜解一下登陸口的賬號密碼等信息
業(yè)務(wù)漏洞驗證:如發(fā)現(xiàn)業(yè)務(wù)漏洞,要進行驗證
公開資源的利用
exploit-db/wooyun/
滲透代碼網(wǎng)站
通用、缺省口令
廠商的漏洞警告等
6.信息分析
為下一步實施滲透做準備
精準攻擊:準備好上一步探測到的漏洞exp(漏洞利用),用來精準攻擊
繞過防御機制:是否有防火墻等設(shè)備,如何繞過
定制攻擊路徑:最佳工具路徑,根據(jù)薄弱入口,高內(nèi)網(wǎng)權(quán)限位置,最終目標
繞過檢測機制:是否有檢測機制,流量監(jiān)控,殺毒軟件,惡意代碼檢測等(免殺)
攻擊代碼:經(jīng)過試驗得來的代碼,包括不限于xss代碼,sql注入語句等
7.利用漏洞,獲取數(shù)據(jù)
實施攻擊:根據(jù)前幾步的結(jié)果,進行攻擊
獲取內(nèi)部信息:基礎(chǔ)設(shè)施(網(wǎng)絡(luò)連接,vpn,路由,拓撲等)
進一步滲透:內(nèi)網(wǎng)入侵,敏感目標
持續(xù)性存在:一般對客戶做滲透不需要。rookit,后門,添加管理賬號,駐扎手法等
清理痕跡:清理相關(guān)日志(訪問,操作),上傳文件等
8.信息整理
整理滲透工具:整理滲透過程中用到的代碼,poc,exp等
整理收集信息:整理滲透過程中收集到的一切信息
整理漏洞信息:整理滲透過程中遇到的各種漏洞,各種脆弱位置信息
目的:為了最后形成報告,形成測試結(jié)果使用。
9.形成報告
按需整理:按照之前第一步跟客戶確定好的范圍,需求來整理資料,并將資料形成報告
補充介紹:要對漏洞成因,驗證過程和帶來危害進行分析
修補建議:當然要對所有產(chǎn)生的問題提出合理高效安全的解決辦法
滲透測試就是利用我們所掌握的滲透知識,對一個網(wǎng)站進行一步一步的滲透,發(fā)現(xiàn)其中存在的漏洞和隱藏的風(fēng)險,然后撰寫一篇測試報告,提供給我們的客戶。客戶根據(jù)我們撰寫的測試報告,對網(wǎng)站進行漏洞修補,以防止黑客的入侵!
滲透測試的前提是我們得經(jīng)過用戶的授權(quán),才可以對網(wǎng)站進行滲透。如果我們沒有經(jīng)過客戶的授權(quán)而對一個網(wǎng)站進行滲透測試的話,這是違法的。去年的6.1日我國頒布了《網(wǎng)絡(luò)安全法》,對網(wǎng)絡(luò)犯罪有了法律約束,不懂的移步——> 網(wǎng)絡(luò)安全法
滲透測試分為 白盒測試 和 黑盒測試
白盒測試就是在知道目標網(wǎng)站源碼和其他一些信息的情況下對其進行滲透,有點類似于代碼分析
黑盒測試就是只告訴我們這個網(wǎng)站的url,其他什么都不告訴,然后讓你去滲透,模擬黑客對網(wǎng)站的滲透
我們現(xiàn)在就模擬黑客對一個網(wǎng)站進行滲透測試,這屬于黑盒測試,我們只知道該網(wǎng)站的URL,其他什么的信息都不知道。
接下來,我就給大家分享下黑盒滲透測試的流程和思路!
當我們確定好了一個目標進行滲透之后,第一步該做的是什么呢?
信息收集
第一步做的就是信息收集,正所謂知己知彼百戰(zhàn)百勝,我們根據(jù)網(wǎng)站URL可以查出一系列關(guān)于該網(wǎng)站的信息。通過URL我們可以查到該網(wǎng)站的IP、該網(wǎng)站操作系統(tǒng)、腳本語言、在該服務(wù)器上是否還有其他網(wǎng)站等等一些列的信息。更多的關(guān)于信息收集,我在另一篇文章中很詳細的介紹了信息收集需要收集哪些信息,以及信息收集過程中需要用到的工具,傳送門——> 滲透測試之信息收集
漏洞探測
當我們收集到了足夠多的信息之后,我們就要開始對網(wǎng)站進行漏洞探測了。探測網(wǎng)站是否存在一些常見的Web漏洞,比如:
SQL注入,傳送門——>SQL注入詳解
XSS跨站腳本,傳送門——>XSS(跨站腳本)漏洞詳解
CSRF跨站請求偽造, 傳送門——>CSRF跨站請求偽造攻擊
XXE漏洞,傳送門——>XXE(XML外部實體注入)漏洞
SSRF服務(wù)端請求偽造漏洞,傳送門——>SSRF(服務(wù)端請求偽造)漏洞
文件包含漏洞, 傳送門——>文件包含漏洞
文件上傳漏洞, 傳送門——>文件上傳漏洞
文件解析漏洞,傳送門——>文件解析漏洞
遠程代碼執(zhí)行漏洞 , 傳送門——> 遠程代碼執(zhí)行漏洞
CORS跨域資源共享漏洞,傳送門——>CORS跨域資源共享漏洞
越權(quán)訪問漏洞,傳送門——>越權(quán)訪問漏洞
目錄瀏覽漏洞和任意文件讀取/下載漏洞,傳送門——>目錄瀏覽漏洞和任意文件讀取/下載漏洞
struts2漏洞,傳送門——>Struts2漏洞
JAVA反序列化漏洞,傳送門——>JAVA反序列化漏洞
這些是網(wǎng)站經(jīng)常發(fā)現(xiàn)的一些漏洞,還有一些網(wǎng)站漏洞,這里我就不一一列舉出來了。
網(wǎng)站漏洞掃描工具也有很多,比如:
AWVS ,傳送門——> AWVS掃描器的用法
AppScan ,傳送門——> AppScan掃描器的用法
Owasp-Zap ,傳送門——> OWASP-ZAP掃描器的使用
Nessus ,傳送門——> Nessus掃描器的使用
網(wǎng)站漏洞掃描工具我就列舉這幾種,還有很多,最常用的是這幾個!
漏洞利用
當我們探測到了該網(wǎng)站存在漏洞之后,我們就要對該漏洞進行利用了。不同的漏洞有不同的利用工具,很多時候,通過一個漏洞我們很難拿到網(wǎng)站的webshell,我們往往需要結(jié)合幾個漏洞來拿webshell。常用的漏洞利用工具如下:
SQL注入 , 傳送門——> Sqlmap的使用
XSS跨站腳本,傳送門——> Beef-XSS的使用
抓包改包工具,——> Burpsuite工具的使用 、 Fidder抓包軟件的使用
文件上傳漏洞,上傳漏洞的話,我們一般會上傳一句話木馬上去,進而再獲得webshell,傳送門——> Webshell和一句話木馬
但是,獲得了webshell后,一般權(quán)限很低,所以我們需要提權(quán), Windows提權(quán) 、 Linux下用SUID提權(quán)
內(nèi)網(wǎng)轉(zhuǎn)發(fā)
當我們獲取到了網(wǎng)站的Webshell之后,如果我們還想進一步的探測內(nèi)網(wǎng)主機的信息的話,我們就需要進行內(nèi)網(wǎng)轉(zhuǎn)發(fā)了。我們是不能直接和內(nèi)網(wǎng)的主機通信的,所以我們就需要借助獲取到的webshell網(wǎng)站的服務(wù)器和內(nèi)網(wǎng)主機進行通信。那么,我們怎么借助網(wǎng)站的服務(wù)器和內(nèi)網(wǎng)通信呢,傳送門——> 內(nèi)網(wǎng)轉(zhuǎn)發(fā)
內(nèi)網(wǎng)滲透
當我們能跟內(nèi)網(wǎng)主機進行通信后,我們就要開始進行內(nèi)網(wǎng)滲透了?梢韵仁褂胣map對內(nèi)網(wǎng)主機進行掃描,探測在線的主機,并且探測其使用的操作系統(tǒng)、開放的端口等信息,傳送門——> Nmap和Zenmap詳解
內(nèi)網(wǎng)用戶基本都是使用的windows系統(tǒng),而且大多數(shù)是使用的windows7,在windows7中有很多漏洞,比如MS17_010這種漏洞,我們可以探測其windows系統(tǒng)是否存在這種漏洞,如果有這種漏洞,直接拿shell。傳送門——> Metasploit Framework(MSF)的使用
企業(yè)內(nèi)網(wǎng)大多數(shù)是一個域環(huán)境。所以,我們只需要找到域控服務(wù)器,并拿下其權(quán)限,就可以登錄其他所有用戶的主機了。
當然,內(nèi)網(wǎng)中也有可能存在供內(nèi)網(wǎng)使用的內(nèi)網(wǎng)服務(wù)器,我們可以進一步滲透拿下其權(quán)限。
至于怎么拿下內(nèi)網(wǎng)中機器的權(quán)限,這要看內(nèi)網(wǎng)環(huán)境了。我這里只是說下大概的一個思路。
痕跡清除
當我們達到了目的之后,有時候只是為了黑入網(wǎng)站掛黑頁,炫耀一下;或者在網(wǎng)站留下一個后門,作為肉雞,沒事的時候上去溜達溜達;亦或者掛入挖礦木馬;但是大家千萬不要干這些事,這些都是違法的!
我這里只是教大家在滲透進去之后如何清除我們留下的痕跡,以免被網(wǎng)站管理員發(fā)現(xiàn),
撰寫滲透測試保告
在完成了滲透測試之后,我們就需要對這次滲透測試撰寫滲透測試報告了。明確的寫出哪里存在漏洞,以及漏洞修補的方法。以便于網(wǎng)站管理員根據(jù)我們的滲透測試報告修補這些漏洞和風(fēng)險,防止被黑客攻擊!
關(guān)于怎么做安全滲透測試就介紹到這里,如果您有需要做滲透測試,可以向防御吧咨詢滲透測試服務(wù),防御吧資深安全專家將通過模擬黑客攻擊的方式,在沒有網(wǎng)站代碼和服務(wù)器權(quán)限的情況下,對企業(yè)的在線平臺進行全方位滲透入侵測試,來評估企業(yè)業(yè)務(wù)平臺和服務(wù)器系統(tǒng)的安全性。