現(xiàn)在,隨著企業(yè)信息化建設(shè)的開展,越來越多的重要數(shù)據(jù)會(huì)以電子媒介的形式存放,這在方便企業(yè)辦公的同時(shí),也造成了極大的安全隱患。近年來,隨著APT攻擊的蔓延,使得越來越多的企業(yè)遭受不可挽回的重大損失。一個(gè)偶然的機(jī)會(huì),有幸邀請(qǐng)到了一家國(guó)外專門做web安全的公司來對(duì)自己的web系統(tǒng)做安全測(cè)試。4周下來,我與幾位安全專家多次溝通,完成了對(duì)自己系統(tǒng)的威脅建模,滲透測(cè)試,白盒測(cè)試,一共發(fā)現(xiàn)了28個(gè)漏洞。經(jīng)驗(yàn)寶貴,因此有必要好好總結(jié)下。

在目的明確、裝備精良、經(jīng)驗(yàn)豐富的“雇傭軍”式的攻擊者面前,傳統(tǒng)的安全設(shè)備已顯得力不從心,企業(yè)需要做的是定期開展專業(yè)的滲透測(cè)試,來降低風(fēng)險(xiǎn),加固安全。
那么,什么是滲透測(cè)試?
滲透測(cè)試,是滲透測(cè)試工程師完全模擬黑客可能使用的攻擊技術(shù)和漏洞發(fā)現(xiàn)技術(shù),對(duì)目標(biāo)網(wǎng)絡(luò)、主機(jī)、應(yīng)用的安全作深入的探測(cè),發(fā)現(xiàn)系統(tǒng)最脆弱的環(huán)節(jié)。
如果說安全檢測(cè)是“橫向地毯式自動(dòng)化掃描”,那么滲透測(cè)試就是“縱向深度人工化入侵”。
可見滲透測(cè)試的目的是發(fā)現(xiàn)目標(biāo)系統(tǒng)潛在的業(yè)務(wù)漏洞風(fēng)險(xiǎn)。
安全問題都體現(xiàn)在輸入輸出的問題上,能夠分析數(shù)據(jù)流就有跡可循了。先知道滲透測(cè)試的流程,用工具找到漏洞,了解并且復(fù)現(xiàn)它。
1、如何進(jìn)行Web滲透測(cè)試?
完整web滲透測(cè)試框架
當(dāng)需要測(cè)試的web應(yīng)用數(shù)以千計(jì),就有必要建立一套完整的安全測(cè)試框架,流程的最高目標(biāo)是要保證交付給客戶的安全測(cè)試服務(wù)質(zhì)量。

立項(xiàng):項(xiàng)目建立,時(shí)間安排,人力分配,目標(biāo)制定,廠商接口人確定;
系統(tǒng)分析&威脅分析:針對(duì)具體的web應(yīng)用,分析系統(tǒng)架構(gòu)、使用的組件、對(duì)外提供的接口等,以STRIDE為威脅模型進(jìn)行對(duì)應(yīng)的安全威脅分析,輸出安全威脅分析表,重點(diǎn)關(guān)注top3威脅;
制定測(cè)試用例:根據(jù)威脅分析的結(jié)果制定對(duì)應(yīng)的測(cè)試用例,測(cè)試用例按照模板輸出,具備可執(zhí)行性;
測(cè)試執(zhí)行&漏洞挖掘:測(cè)試用例執(zhí)行&發(fā)散測(cè)試,挖掘?qū)?yīng)的安全問題or漏洞;
問題修復(fù)&回歸測(cè)試:指導(dǎo)客戶應(yīng)用開發(fā)方修復(fù)安全問題or漏洞,并進(jìn)行回歸測(cè)試,確保安全問題or漏洞得到修復(fù),并且沒有引入新的安全問題;
項(xiàng)目總結(jié)評(píng)審:項(xiàng)目過程總結(jié),輸出文檔評(píng)審,相關(guān)文檔歸檔。
2、Web應(yīng)用的滲透測(cè)試流程
主要分為3個(gè)階段,分別是:信息收集→漏洞發(fā)現(xiàn)→漏洞利用,下面仔細(xì)分析一下各個(gè)階段流程:
如果對(duì)軟件測(cè)試、接口測(cè)試、自動(dòng)化測(cè)試、性能測(cè)試、LR腳本開發(fā)、面試經(jīng)驗(yàn)交流。感興趣可以175317069,群內(nèi)會(huì)有不定期的發(fā)放免費(fèi)的資料鏈接,這些資料都是從各個(gè)技術(shù)網(wǎng)站搜集、整理出來的,如果你有好的學(xué)習(xí)資料可以私聊發(fā)我,我會(huì)注明出處之后分享給大家。
一、信息收集
在信息收集階段,我們需要盡量多的收集關(guān)于目標(biāo)web應(yīng)用的各種信息,比如:腳本語言的類型、服務(wù)器的類型、目錄的結(jié)構(gòu)、使用的開源軟件、數(shù)據(jù)庫類型、所有鏈接頁面,用到的框架等
腳本語言的類型: 常見的腳本語言的類型包括:php、asp、aspx、jsp等
測(cè)試方法:
1 爬取網(wǎng)站所有鏈接,查看后綴
2 直接訪問一個(gè)不存在頁面后面加不同的后綴測(cè)試
3 查看robots.txt,查看后綴
服務(wù)器的類型: 常見的web服務(wù)器包括:apache、tomcat、IIS、ngnix等
測(cè)試方法:
1 查看header,判斷服務(wù)器類型
2 根據(jù)報(bào)錯(cuò)信息判斷
3 根據(jù)默認(rèn)頁面判斷
目錄的結(jié)構(gòu): 了解更多的目錄,可能發(fā)現(xiàn)更多的弱點(diǎn),如:目錄瀏覽、代碼泄漏等。
測(cè)試方法
1 使用字典枚舉目錄
2 使用爬蟲爬取整個(gè)網(wǎng)站,或者使用google等搜索引擎獲取
3 查看robots.txt是否泄漏
使用的開源軟件: 我們?nèi)绻懒四繕?biāo)使用的開源軟件,我們可以查找相關(guān)的軟件的漏洞直接對(duì)網(wǎng)站進(jìn)行測(cè)試。
測(cè)試方法
指紋識(shí)別(網(wǎng)絡(luò)上有很多開源的指紋識(shí)別工具)
數(shù)據(jù)庫類型: 對(duì)于不同的數(shù)據(jù)庫有不同的測(cè)試方法。
測(cè)試方法
1 使應(yīng)用程序報(bào)錯(cuò),查看報(bào)錯(cuò)信息
2 掃描服務(wù)器的數(shù)據(jù)庫端口(沒做NAT且防火墻不過濾時(shí)有效)
所有鏈接頁面: 這個(gè)跟前面的獲取目錄結(jié)構(gòu)類似,但是這個(gè)不只是獲取網(wǎng)站的所有功能頁面,有時(shí)候還可以獲取到管理員備份的源碼。
測(cè)試方法
1 使用字典枚舉頁面
2 使用爬蟲爬取整個(gè)網(wǎng)站,或者使用google等搜索引擎獲取
3 查看robots.txt是否泄漏
用到的框架: 很多網(wǎng)站都利用開源的框架來快速開發(fā)網(wǎng)站,所以收集網(wǎng)站的框架信息也是非常關(guān)鍵的。
測(cè)試方法
指紋識(shí)別(網(wǎng)絡(luò)上有很多開源的指紋識(shí)別工具)
二、漏洞發(fā)現(xiàn)
在這個(gè)階段我們?cè)谧鰷y(cè)試的時(shí)候要對(duì)癥下藥,不能盲目的去掃描,首先要確定目標(biāo)應(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等
對(duì)于開源軟件的測(cè)試方法
1 通過指紋識(shí)別軟件判斷開源軟件的版本信息,針對(duì)不同的版本信息去開放的漏洞數(shù)據(jù)庫查找相應(yīng)版本的漏洞進(jìn)行測(cè)試
2 對(duì)于默認(rèn)的后臺(tái)登錄頁、數(shù)據(jù)庫服務(wù)端口認(rèn)證等入口可以進(jìn)行簡(jiǎn)單的暴力破解、默認(rèn)口令嘗試等操作
3 使用開源的漏洞發(fā)現(xiàn)工具對(duì)其進(jìn)行漏洞掃描,如:WPScan
關(guān)于自主開發(fā)的應(yīng)用
手動(dòng)測(cè)試:這個(gè)階段,我們需要手工測(cè)試所有與用戶交互的功能,比如:留言、登入、下單、退出、退貨、付款等操作
軟件掃描:使用免費(fèi)的軟件掃描,如:appscan、wvs、netsparker,burp等
可能存在的漏洞
Owasp關(guān)鍵點(diǎn)
代碼安全之上傳文件
代碼安全之文件包含
代碼安全之SSRF
邏輯漏洞之密碼重置
邏輯漏洞之支付漏洞
邏輯漏洞之越權(quán)訪問
平臺(tái)安全之中間件安全
三、漏洞利用
針對(duì)不同的弱點(diǎn)有不同的漏洞利用方式,需要的知識(shí)點(diǎn)也比較多。一般這個(gè)階段包括兩種方式,一種是手工測(cè)試,一種是工具測(cè)試
手工測(cè)試
手工測(cè)試是通過客戶端或服務(wù)器訪問目標(biāo)服務(wù),手工向目標(biāo)程序發(fā)送特殊的數(shù)據(jù),包括有效的和無效的輸入,觀察目標(biāo)的狀態(tài)、對(duì)各種輸入的反應(yīng),根據(jù)結(jié)果來發(fā)現(xiàn)問題的漏洞檢測(cè)技術(shù)。手工測(cè)試不需要額外的輔助工具,可由測(cè)試者獨(dú)立完成,實(shí)現(xiàn)起來比較簡(jiǎn)單。但這種方法高度依賴于測(cè)試者,需要測(cè)試者對(duì)目標(biāo)比較了解。手工測(cè)試可用于Web應(yīng)用程序、瀏覽器及其他需要用戶交互的程序。
這種方式對(duì)于有特殊過濾等操作,或者網(wǎng)絡(luò)上沒有成型的利用工具的時(shí)候可以使用。
工具測(cè)試
網(wǎng)絡(luò)上有很多好用的免費(fèi)利用工具,比如針對(duì)sql注入的sqlmap、針對(duì)軟件漏洞的matesploit等。