現(xiàn)在族吻,隨著企業(yè)信息化建設(shè)的開展,越來越多的重要數(shù)據(jù)會以電子媒介的形式存放,這在方便企業(yè)辦公的同時呼奢,也造成了極大的安全隱患。近年來切平,隨著APT攻擊的蔓延握础,使得越來越多的企業(yè)遭受不可挽回的重大損失。一個偶然的機會悴品,有幸邀請到了一家國外專門做web安全的公司來對自己的web系統(tǒng)做安全測試禀综。4周下來,我與幾位安全專家多次溝通苔严,完成了對自己系統(tǒng)的威脅建模定枷,滲透測試,白盒測試届氢,一共發(fā)現(xiàn)了28個漏洞欠窒。經(jīng)驗寶貴,因此有必要好好總結(jié)下退子。
在目的明確岖妄、裝備精良、經(jīng)驗豐富的“雇傭軍”式的攻擊者面前寂祥,傳統(tǒng)的安全設(shè)備已顯得力不從心荐虐,企業(yè)需要做的是定期開展專業(yè)的滲透測試,來降低風險丸凭,加固安全福扬。
那么,什么是滲透測試惜犀?
滲透測試铛碑,是滲透測試工程師完全模擬黑客可能使用的攻擊技術(shù)和漏洞發(fā)現(xiàn)技術(shù),對目標網(wǎng)絡(luò)向拆、主機亚茬、應用的安全作深入的探測,發(fā)現(xiàn)系統(tǒng)最脆弱的環(huán)節(jié)浓恳。
如果說安全檢測是“橫向地毯式自動化掃描”刹缝,那么滲透測試就是“縱向深度人工化入侵”。
可見滲透測試的目的是發(fā)現(xiàn)目標系統(tǒng)潛在的業(yè)務漏洞風險颈将。
安全問題都體現(xiàn)在輸入輸出的問題上梢夯,能夠分析數(shù)據(jù)流就有跡可循了。先知道滲透測試的流程晴圾,用工具找到漏洞颂砸,了解并且復現(xiàn)它。
1、如何進行Web滲透測試人乓?
完整web滲透測試框架
當需要測試的web應用數(shù)以千計勤篮,就有必要建立一套完整的安全測試框架,流程的最高目標是要保證交付給客戶的安全測試服務質(zhì)量色罚。
立項:項目建立碰缔,時間安排,人力分配戳护,目標制定金抡,廠商接口人確定;
系統(tǒng)分析&威脅分析:針對具體的web應用腌且,分析系統(tǒng)架構(gòu)梗肝、使用的組件、對外提供的接口等铺董,以STRIDE為威脅模型進行對應的安全威脅分析巫击,輸出安全威脅分析表,重點關(guān)注top3威脅精续;
制定測試用例:根據(jù)威脅分析的結(jié)果制定對應的測試用例喘鸟,測試用例按照模板輸出,具備可執(zhí)行性驻右;
測試執(zhí)行&漏洞挖掘:測試用例執(zhí)行&發(fā)散測試什黑,挖掘?qū)陌踩珕栴}or漏洞;
問題修復&回歸測試:指導客戶應用開發(fā)方修復安全問題or漏洞堪夭,并進行回歸測試愕把,確保安全問題or漏洞得到修復,并且沒有引入新的安全問題森爽;
項目總結(jié)評審:項目過程總結(jié)恨豁,輸出文檔評審,相關(guān)文檔歸檔爬迟。
2橘蜜、Web應用的滲透測試流程
主要分為3個階段,分別是:信息收集→漏洞發(fā)現(xiàn)→漏洞利用付呕,下面仔細分析一下各個階段流程:
如果對軟件測試计福、接口測試、自動化測試徽职、性能測試象颖、LR腳本開發(fā)、面試經(jīng)驗交流姆钉。感興趣可以175317069说订,群內(nèi)會有不定期的發(fā)放免費的資料鏈接抄瓦,這些資料都是從各個技術(shù)網(wǎng)站搜集、整理出來的陶冷,如果你有好的學習資料可以私聊發(fā)我钙姊,我會注明出處之后分享給大家。
一埂伦、信息收集
在信息收集階段摸恍,我們需要盡量多的收集關(guān)于目標web應用的各種信息,比如:腳本語言的類型赤屋、服務器的類型、目錄的結(jié)構(gòu)壁袄、使用的開源軟件类早、數(shù)據(jù)庫類型、所有鏈接頁面嗜逻,用到的框架等
腳本語言的類型: 常見的腳本語言的類型包括:php涩僻、asp、aspx栈顷、jsp等
測試方法:
1 爬取網(wǎng)站所有鏈接逆日,查看后綴
2 直接訪問一個不存在頁面后面加不同的后綴測試
3 查看robots.txt,查看后綴
服務器的類型: 常見的web服務器包括:apache萄凤、tomcat室抽、IIS、ngnix等
測試方法:
1 查看header靡努,判斷服務器類型
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 使應用程序報錯梁肿,查看報錯信息
2 掃描服務器的數(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)
在這個階段我們在做測試的時候要對癥下藥痴奏,不能盲目的去掃描,首先要確定目標應用是否使用的是公開的開源軟件厌秒,開源框架等读拆、然后在做深一度的漏洞掃描。
關(guān)于開源軟件的漏洞發(fā)現(xiàn)
開源的軟件:常見的開源軟件有wordpress鸵闪、phpbb檐晕、dedecms等
開源的框架:常見的開源框架有Struts2、 Spring MVC蚌讼、ThinkPHP等
中間件服務器:常見的中間件服務器有jboss辟灰、tomcat、Weblogic等
數(shù)據(jù)庫服務:常見的數(shù)據(jù)庫服務mssql篡石、mysql芥喇、oracle、redis凰萨、sybase继控、MongoDB、DB2等
對于開源軟件的測試方法
1 通過指紋識別軟件判斷開源軟件的版本信息胖眷,針對不同的版本信息去開放的漏洞數(shù)據(jù)庫查找相應版本的漏洞進行測試
2 對于默認的后臺登錄頁武通、數(shù)據(jù)庫服務端口認證等入口可以進行簡單的暴力破解、默認口令嘗試等操作
3 使用開源的漏洞發(fā)現(xiàn)工具對其進行漏洞掃描珊搀,如:WPScan
關(guān)于自主開發(fā)的應用
手動測試:這個階段冶忱,我們需要手工測試所有與用戶交互的功能,比如:留言境析、登入朗和、下單、退出簿晓、退貨眶拉、付款等操作
軟件掃描:使用免費的軟件掃描,如:appscan憔儿、wvs忆植、netsparker,burp等
可能存在的漏洞
Owasp關(guān)鍵點
代碼安全之上傳文件
代碼安全之文件包含
代碼安全之SSRF
邏輯漏洞之密碼重置
邏輯漏洞之支付漏洞
邏輯漏洞之越權(quán)訪問
平臺安全之中間件安全
三谒臼、漏洞利用
針對不同的弱點有不同的漏洞利用方式朝刊,需要的知識點也比較多。一般這個階段包括兩種方式蜈缤,一種是手工測試拾氓,一種是工具測試
手工測試
手工測試是通過客戶端或服務器訪問目標服務,手工向目標程序發(fā)送特殊的數(shù)據(jù)底哥,包括有效的和無效的輸入咙鞍,觀察目標的狀態(tài)房官、對各種輸入的反應,根據(jù)結(jié)果來發(fā)現(xiàn)問題的漏洞檢測技術(shù)续滋。手工測試不需要額外的輔助工具翰守,可由測試者獨立完成,實現(xiàn)起來比較簡單疲酌。但這種方法高度依賴于測試者蜡峰,需要測試者對目標比較了解。手工測試可用于Web應用程序朗恳、瀏覽器及其他需要用戶交互的程序湿颅。
這種方式對于有特殊過濾等操作,或者網(wǎng)絡(luò)上沒有成型的利用工具的時候可以使用粥诫。
工具測試
網(wǎng)絡(luò)上有很多好用的免費利用工具油航,比如針對sql注入的sqlmap、針對軟件漏洞的matesploit等臀脏。