一次偶然的機會,我有幸邀請了一家web來對自己的web系統(tǒng)進行安全。四周后,我與幾位安全專家進行了多次溝通,完成了威脅建模、滲透和白盒,發(fā)現(xiàn)了28個漏洞。經(jīng)驗是寶貴的,所以有必要總結(jié)一下。
現(xiàn)在,隨著企業(yè)信息化建設(shè)的發(fā)展,越來越多的重要數(shù)據(jù)將以電子媒體的形式存儲,不僅方便了企業(yè)辦公,而且造成了巨大的安全風(fēng)險。近年來,隨著APT隨著攻擊的蔓延,越來越多的企業(yè)遭受了不可挽回的重大損失。
面對目的明確、裝備精良、經(jīng)驗豐富的雇傭軍攻擊者,傳統(tǒng)的安全設(shè)備似乎無能為力。企業(yè)需要做的是定期進行專業(yè)的滲透,以降低風(fēng)險,加強安全。
那么,什么是滲透呢?
滲透是滲透工程師充分模擬黑客可能使用的攻擊技術(shù)和漏洞發(fā)現(xiàn)技術(shù),深入探測目標(biāo)網(wǎng)絡(luò)、主機和應(yīng)用的安全性,發(fā)現(xiàn)系統(tǒng)中較脆弱的環(huán)節(jié)。
假如說安全檢測是橫向地毯式自動化掃描
可見滲透試驗的目的是發(fā)現(xiàn)目標(biāo)系統(tǒng)潛在的業(yè)務(wù)漏洞風(fēng)險。
安全問題反映在輸入輸出問題上,可以分析數(shù)據(jù)流。首先了解滲透的過程,用工具找到漏洞,理解和復(fù)制它。
如何進行Web滲透?
完整web滲透試驗框架需要的web成千上萬的應(yīng)用程序需要建立一個完整的安全框架戶的安全服務(wù)質(zhì)量。
項目建立、時間安排、人力分配、目標(biāo)制定、廠家接口人確定;
系統(tǒng)分析&威脅分析:針對具體情況web應(yīng)用程序、分析系統(tǒng)架構(gòu)、使用組件、外部界面等STRIDE對威脅模型進行相應(yīng)的安全威脅分析,輸出安全威脅分析表,重點關(guān)注top3威脅;
制定試驗用例:根據(jù)威脅分析結(jié)果制定相應(yīng)的試驗用例,試驗用例按模板輸出,具有可執(zhí)行性;
執(zhí)行&漏洞挖掘:試驗用例執(zhí)行&發(fā)散試驗,挖掘相應(yīng)的安全問題or漏洞;
問題修復(fù)&回歸:指導(dǎo)客戶應(yīng)用開發(fā)人員修復(fù)安全問題or確保安全問題or修復(fù)漏洞,未引入新的安全問題;
項目總結(jié)評審:項目流程總結(jié)、輸出文檔評審、相關(guān)文檔歸檔。
2、Web滲透試驗過程的應(yīng)用
信息收集主要分為三個階段:→漏洞發(fā)現(xiàn)→利用漏洞,仔細(xì)分析各個階段的流程:
一、信息收集
在信息收集階段,我們需要盡可能多地收集目標(biāo)web腳本語言類型、服務(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ù)默認(rèn)頁面判斷
目錄的結(jié)構(gòu):了解更多的目錄,可能發(fā)現(xiàn)更多的弱點,如:目錄瀏覽、代碼泄漏等。
方法
1 使用字典枚舉目錄
2 用爬蟲爬整個網(wǎng)站或者用google等待搜索引擎獲取
3 查看robots.txt是否泄漏
使用的開源軟件:如果我們知道目標(biāo)使用的開源軟件,我們可以找到相關(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)站的框架信息也非常重要。
方法
指紋識別(網(wǎng)絡(luò)上有很多開源指紋識別工具)
二、發(fā)現(xiàn)漏洞
在這個階段,我們應(yīng)該對癥下藥,不要盲目掃描。首先,我們應(yīng)該確定目標(biāo)應(yīng)用程序是否使用公共開源軟件、開源框架等,然后進行深入的漏洞掃描。
開源軟件的漏洞發(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 通過指紋識別軟件判斷開源軟件的版本信息,找到相應(yīng)版本的漏洞進行
2 可以進行簡單的暴力破解、默認(rèn)密碼嘗試等操作,如默認(rèn)后臺登錄頁、數(shù)據(jù)庫服務(wù)端口認(rèn)證等。
3 用開源漏洞發(fā)現(xiàn)工具掃描漏洞,如:WPScan
關(guān)于自主開發(fā)的應(yīng)用
手動:在這個階段,我們需要手動所有與用戶互動的功能,如留言、登錄、下單、退出、退貨、付款等。
軟件掃描:使用免費軟件掃描,如:appscan、wvs、netsparker,burp等
可能的漏洞
Owasp關(guān)鍵點
上傳代碼安全文件
包括代碼安全文件
代碼安全之SSRF
重置邏輯漏洞的密碼
支付漏洞的邏輯漏洞
越權(quán)訪問邏輯漏洞
平臺安全中間部件安全
三、利用漏洞
利用不同的弱點有不同的漏洞,需要更多的知識點。一般來說,這個階段有兩種方法,一種是手動,另一種是工具
手工
手動是一種漏洞檢測技術(shù),通過客戶端或服務(wù)器訪問目標(biāo)服務(wù),手動向目標(biāo)程序發(fā)送特殊數(shù)據(jù),包括有效和無效的輸入,觀察目標(biāo)狀態(tài),對各種輸入做出反應(yīng),并根據(jù)結(jié)果發(fā)現(xiàn)問題。手動不需要額外的輔助工具,可以由人員獨立完成,相對容易實現(xiàn)。但這種方法高度依賴于人員,需要人員了解目標(biāo)。手動可用于Web需要用戶交互的應(yīng)用程序、瀏覽器等程序。
這種方法可用于特殊過濾等操作,或在網(wǎng)絡(luò)上沒有成型的工具。
工具
網(wǎng)絡(luò)上有很多好用的免費使用工具,比如sql注入的sql p、針對軟件漏洞的 tesploit等。
產(chǎn)品推薦