現(xiàn)在吞歼,隨著企業(yè)信息化建設(shè)的開(kāi)展继薛,越來(lái)越多的重要數(shù)據(jù)會(huì)以電子媒介的形式存放,這在方便企業(yè)辦公的同時(shí),也造成了極大的安全隱患杖玲。近年來(lái)抡谐,隨著APT攻擊的蔓延铁追,使得越來(lái)越多的企業(yè)遭受不可挽回的重大損失百侧。一個(gè)偶然的機(jī)會(huì),有幸邀請(qǐng)到了一家國(guó)外專門(mén)做web安全的公司來(lái)對(duì)自己的web系統(tǒng)做安全測(cè)試谴供。4周下來(lái)块茁,我與幾位安全專家多次溝通,完成了對(duì)自己系統(tǒng)的威脅建模,滲透測(cè)試数焊,白盒測(cè)試永淌,一共發(fā)現(xiàn)了28個(gè)漏洞。經(jīng)驗(yàn)寶貴佩耳,因此有必要好好總結(jié)下遂蛀。
在目的明確、裝備精良干厚、經(jīng)驗(yàn)豐富的“雇傭軍”式的攻擊者面前李滴,傳統(tǒng)的安全設(shè)備已顯得力不從心,企業(yè)需要做的是定期開(kāi)展專業(yè)的滲透測(cè)試蛮瞄,來(lái)降低風(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é)蒙谓。
如果說(shuō)安全檢測(cè)是“橫向地毯式自動(dòng)化掃描”,那么滲透測(cè)試就是“縱向深度人工化入侵”训桶。
可見(jiàn)滲透測(cè)試的目的是發(fā)現(xiàn)目標(biāo)系統(tǒng)潛在的業(yè)務(wù)漏洞風(fēng)險(xiǎn)累驮。
安全問(wèn)題都體現(xiàn)在輸入輸出的問(wèn)題上,能夠分析數(shù)據(jù)流就有跡可循了渊迁。先知道滲透測(cè)試的流程慰照,用工具找到漏洞灶挟,了解并且復(fù)現(xiàn)它琉朽。
一、如何進(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)的安全問(wèn)題or漏洞悟民;
問(wèn)題修復(fù)&回歸測(cè)試:指導(dǎo)客戶應(yīng)用開(kāi)發(fā)方修復(fù)安全問(wèn)題or漏洞,并進(jìn)行回歸測(cè)試篷就,確保安全問(wèn)題or漏洞得到修復(fù)逾雄,并且沒(méi)有引入新的安全問(wèn)題;
項(xiàng)目總結(jié)評(píng)審:項(xiàng)目過(guò)程總結(jié)腻脏,輸出文檔評(píng)審鸦泳,相關(guān)文檔歸檔。
二永品、Web應(yīng)用的滲透測(cè)試流程
主要分為3個(gè)階段做鹰,分別是:信息收集→漏洞發(fā)現(xiàn)→漏洞利用,下面仔細(xì)分析一下各個(gè)階段流程:
如果對(duì)軟件測(cè)試鼎姐、接口測(cè)試钾麸、自動(dòng)化測(cè)試、性能測(cè)試炕桨、LR腳本開(kāi)發(fā)饭尝、面試經(jīng)驗(yàn)交流。感興趣可以175317069献宫,群內(nèi)會(huì)有不定期的發(fā)放免費(fèi)的資料鏈接钥平,這些資料都是從各個(gè)技術(shù)網(wǎng)站搜集、整理出來(lái)的姊途,如果你有好的學(xué)習(xí)資料可以私聊發(fā)我涉瘾,我會(huì)注明出處之后分享給大家。
1捷兰、信息收集
在信息收集階段立叛,我們需要盡量多的收集關(guān)于目標(biāo)web應(yīng)用的各種信息,比如:腳本語(yǔ)言的類型贡茅、服務(wù)器的類型秘蛇、目錄的結(jié)構(gòu)其做、使用的開(kāi)源軟件、數(shù)據(jù)庫(kù)類型赁还、所有鏈接頁(yè)面庶柿,用到的框架等
腳本語(yǔ)言的類型: 常見(jiàn)的腳本語(yǔ)言的類型包括:php、asp秽浇、aspx浮庐、jsp等
測(cè)試方法:
1 爬取網(wǎng)站所有鏈接,查看后綴
2 直接訪問(wèn)一個(gè)不存在頁(yè)面后面加不同的后綴測(cè)試
3 查看robots.txt柬焕,查看后綴
服務(wù)器的類型: 常見(jiàn)的web服務(wù)器包括:apache审残、tomcat、IIS斑举、ngnix等
測(cè)試方法:
1 查看header搅轿,判斷服務(wù)器類型
2 根據(jù)報(bào)錯(cuò)信息判斷
3 根據(jù)默認(rèn)頁(yè)面判斷
目錄的結(jié)構(gòu): 了解更多的目錄,可能發(fā)現(xiàn)更多的弱點(diǎn)富玷,如:目錄瀏覽璧坟、代碼泄漏等。
測(cè)試方法:
1 使用字典枚舉目錄
2 使用爬蟲(chóng)爬取整個(gè)網(wǎng)站赎懦,或者使用google等搜索引擎獲取
3 查看robots.txt是否泄漏
使用的開(kāi)源軟件: 我們?nèi)绻懒四繕?biāo)使用的開(kāi)源軟件雀鹃,我們可以查找相關(guān)的軟件的漏洞直接對(duì)網(wǎng)站進(jìn)行測(cè)試。
測(cè)試方法:
指紋識(shí)別(網(wǎng)絡(luò)上有很多開(kāi)源的指紋識(shí)別工具)
數(shù)據(jù)庫(kù)類型: 對(duì)于不同的數(shù)據(jù)庫(kù)有不同的測(cè)試方法励两。
測(cè)試方法:
1 使應(yīng)用程序報(bào)錯(cuò)黎茎,查看報(bào)錯(cuò)信息
2 掃描服務(wù)器的數(shù)據(jù)庫(kù)端口(沒(méi)做NAT且防火墻不過(guò)濾時(shí)有效)
所有鏈接頁(yè)面: 這個(gè)跟前面的獲取目錄結(jié)構(gòu)類似,但是這個(gè)不只是獲取網(wǎng)站的所有功能頁(yè)面当悔,有時(shí)候還可以獲取到管理員備份的源碼傅瞻。
測(cè)試方法:
1 使用字典枚舉頁(yè)面
2 使用爬蟲(chóng)爬取整個(gè)網(wǎng)站,或者使用google等搜索引擎獲取
3 查看robots.txt是否泄漏
用到的框架: 很多網(wǎng)站都利用開(kāi)源的框架來(lái)快速開(kāi)發(fā)網(wǎng)站盲憎,所以收集網(wǎng)站的框架信息也是非常關(guān)鍵的嗅骄。
測(cè)試方法:
指紋識(shí)別(網(wǎng)絡(luò)上有很多開(kāi)源的指紋識(shí)別工具)
2、漏洞發(fā)現(xiàn)
在這個(gè)階段我們?cè)谧鰷y(cè)試的時(shí)候要對(duì)癥下藥饼疙,不能盲目的去掃描溺森,首先要確定目標(biāo)應(yīng)用是否使用的是公開(kāi)的開(kāi)源軟件,開(kāi)源框架等宏多、然后在做深一度的漏洞掃描儿惫。
關(guān)于開(kāi)源軟件的漏洞發(fā)現(xiàn)
開(kāi)源的軟件:常見(jiàn)的開(kāi)源軟件有wordpress澡罚、phpbb伸但、dedecms等
開(kāi)源的框架:常見(jiàn)的開(kāi)源框架有Struts2、 Spring MVC留搔、ThinkPHP等
中間件服務(wù)器:常見(jiàn)的中間件服務(wù)器有jboss更胖、tomcat、Weblogic等
數(shù)據(jù)庫(kù)服務(wù):常見(jiàn)的數(shù)據(jù)庫(kù)服務(wù)mssql、mysql却妨、oracle饵逐、redis、sybase彪标、MongoDB倍权、DB2等
對(duì)于開(kāi)源軟件的測(cè)試方法
1 通過(guò)指紋識(shí)別軟件判斷開(kāi)源軟件的版本信息,針對(duì)不同的版本信息去開(kāi)放的漏洞數(shù)據(jù)庫(kù)查找相應(yīng)版本的漏洞進(jìn)行測(cè)試
2 對(duì)于默認(rèn)的后臺(tái)登錄頁(yè)捞烟、數(shù)據(jù)庫(kù)服務(wù)端口認(rèn)證等入口可以進(jìn)行簡(jiǎn)單的暴力破解薄声、默認(rèn)口令嘗試等操作
3 使用開(kāi)源的漏洞發(fā)現(xiàn)工具對(duì)其進(jìn)行漏洞掃描,如:WPScan
關(guān)于自主開(kāi)發(fā)的應(yīng)用
手動(dòng)測(cè)試:這個(gè)階段题画,我們需要手工測(cè)試所有與用戶交互的功能默辨,比如:留言、登入苍息、下單缩幸、退出、退貨竞思、付款等操作
軟件掃描:使用免費(fèi)的軟件掃描表谊,如:appscan、wvs盖喷、netsparker铃肯,burp等
可能存在的漏洞
Owasp關(guān)鍵點(diǎn)
代碼安全之上傳文件
代碼安全之文件包含
代碼安全之SSRF
邏輯漏洞之密碼重置
邏輯漏洞之支付漏洞
邏輯漏洞之越權(quán)訪問(wèn)
平臺(tái)安全之中間件安全
3、漏洞利用
針對(duì)不同的弱點(diǎn)有不同的漏洞利用方式传蹈,需要的知識(shí)點(diǎn)也比較多押逼。一般這個(gè)階段包括兩種方式,一種是手工測(cè)試惦界,一種是工具測(cè)試
手工測(cè)試
手工測(cè)試是通過(guò)客戶端或服務(wù)器訪問(wèn)目標(biāo)服務(wù)挑格,手工向目標(biāo)程序發(fā)送特殊的數(shù)據(jù),包括有效的和無(wú)效的輸入沾歪,觀察目標(biāo)的狀態(tài)漂彤、對(duì)各種輸入的反應(yīng),根據(jù)結(jié)果來(lái)發(fā)現(xiàn)問(wèn)題的漏洞檢測(cè)技術(shù)灾搏。手工測(cè)試不需要額外的輔助工具挫望,可由測(cè)試者獨(dú)立完成,實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單狂窑。但這種方法高度依賴于測(cè)試者媳板,需要測(cè)試者對(duì)目標(biāo)比較了解。手工測(cè)試可用于Web應(yīng)用程序泉哈、瀏覽器及其他需要用戶交互的程序蛉幸。
這種方式對(duì)于有特殊過(guò)濾等操作破讨,或者網(wǎng)絡(luò)上沒(méi)有成型的利用工具的時(shí)候可以使用。
工具測(cè)試
網(wǎng)絡(luò)上有很多好用的免費(fèi)利用工具奕纫,比如針對(duì)sql注入的sqlmap提陶、針對(duì)軟件漏洞的matesploit等。