如今,隨着企業信息化建設的開展,愈來愈多的重要數據會以電子媒介的形式存放,這在方便企業辦公的同時,也形成了極大的安全隱患。近年來,隨着APT攻擊的蔓延,使得愈來愈多的企業遭受不可挽回的重大損失。一個偶然的機會,有幸邀請到了一家國外專門作web安全的公司來對本身的web系統作安全測試。4周下來,我與幾位安全專家屢次溝通,完成了對本身系統的威脅建模,滲透測試,白盒測試,一共發現了28個漏洞。經驗寶貴,所以有必要好好總結下。php
在目的明確、裝備精良、經驗豐富的「僱傭軍」式的攻擊者面前,傳統的安全設備已顯得力不從心,企業須要作的是按期開展專業的滲透測試,來下降風險,加固安全。mysql
滲透測試,是滲透測試工程師徹底模擬黑客可能使用的攻擊技術和漏洞發現技術,對目標網絡、主機、應用的安全做深刻的探測,發現系統最脆弱的環節。web
若是說安全檢測是「橫向地毯式自動化掃描」,那麼滲透測試就是「縱向深度人工化入侵」。面試
可見滲透測試的目的是發現目標系統潛在的業務漏洞風險。redis
安全問題都體如今輸入輸出的問題上,可以分析數據流就有跡可循了。先知道滲透測試的流程,用工具找到漏洞,瞭解而且復現它。sql
完整web滲透測試框架數據庫
當須要測試的web應用數以千計,就有必要創建一套完整的安全測試框架,流程的最高目標是要保證交付給客戶的安全測試服務質量。apache
立項:項目創建,時間安排,人力分配,目標制定,廠商接口人肯定;瀏覽器
系統分析&威脅分析:針對具體的web應用,分析系統架構、使用的組件、對外提供的接口等,以STRIDE爲威脅模型進行對應的安全威脅分析,輸出安全威脅分析表,重點關注top3威脅;tomcat
制定測試用例:根據威脅分析的結果制定對應的測試用例,測試用例按照模板輸出,具有可執行性;
測試執行&漏洞挖掘:測試用例執行&發散測試,挖掘對應的安全問題or漏洞;
問題修復&迴歸測試:指導客戶應用開發方修復安全問題or漏洞,並進行迴歸測試,確保安全問題or漏洞獲得修復,而且沒有引入新的安全問題;
項目總結評審:項目過程總結,輸出文檔評審,相關文檔歸檔。
主要分爲3個階段,分別是:信息收集→漏洞發現→漏洞利用,下面仔細分析一下各個階段流程:
若是對軟件測試、接口測試、自動化測試、性能測試、LR腳本開發、面試經驗交流。感興趣能夠175317069,羣內會有不按期的發放免費的資料連接,這些資料都是從各個技術網站蒐集、整理出來的,若是你有好的學習資料能夠私聊發我,我會註明出處以後分享給你們。
在信息收集階段,咱們須要儘可能多的收集關於目標web應用的各類信息,好比:腳本語言的類型、服務器的類型、目錄的結構、使用的開源軟件、數據庫類型、全部連接頁面,用到的框架等
腳本語言的類型: 常見的腳本語言的類型包括:php、asp、aspx、jsp等
測試方法:
1 爬取網站全部連接,查看後綴
2 直接訪問一個不存在頁面後面加不一樣的後綴測試
3 查看robots.txt,查看後綴
服務器的類型: 常見的web服務器包括:apache、tomcat、IIS、ngnix等
測試方法:
1 查看header,判斷服務器類型
2 根據報錯信息判斷
3 根據默認頁面判斷
目錄的結構: 瞭解更多的目錄,可能發現更多的弱點,如:目錄瀏覽、代碼泄漏等。
測試方法:
1 使用字典枚舉目錄
2 使用爬蟲爬取整個網站,或者使用google等搜索引擎獲取
3 查看robots.txt是否泄漏
使用的開源軟件: 咱們若是知道了目標使用的開源軟件,咱們能夠查找相關的軟件的漏洞直接對網站進行測試。
測試方法:
指紋識別(網絡上有不少開源的指紋識別工具)
數據庫類型: 對於不一樣的數據庫有不一樣的測試方法。
測試方法:
1 使應用程序報錯,查看報錯信息
2 掃描服務器的數據庫端口(沒作NAT且防火牆不過濾時有效)
全部連接頁面: 這個跟前面的獲取目錄結構相似,可是這個不僅是獲取網站的全部功能頁面,有時候還能夠獲取到管理員備份的源碼。
測試方法:
1 使用字典枚舉頁面
2 使用爬蟲爬取整個網站,或者使用google等搜索引擎獲取
3 查看robots.txt是否泄漏
用到的框架: 不少網站都利用開源的框架來快速開發網站,因此收集網站的框架信息也是很是關鍵的。
測試方法:
指紋識別(網絡上有不少開源的指紋識別工具)
在這個階段咱們在作測試的時候要對症下藥,不能盲目的去掃描,首先要肯定目標應用是否使用的是公開的開源軟件,開源框架等、而後在作深一度的漏洞掃描。
開源的軟件:常見的開源軟件有wordpress、phpbb、dedecms等
開源的框架:常見的開源框架有Struts二、 Spring MVC、ThinkPHP等
中間件服務器:常見的中間件服務器有jboss、tomcat、Weblogic等
數據庫服務:常見的數據庫服務mssql、mysql、oracle、redis、sybase、MongoDB、DB2等
1 經過指紋識別軟件判斷開源軟件的版本信息,針對不一樣的版本信息去開放的漏洞數據庫查找相應版本的漏洞進行測試
2 對於默認的後臺登陸頁、數據庫服務端口認證等入口能夠進行簡單的暴力破解、默認口令嘗試等操做
3 使用開源的漏洞發現工具對其進行漏洞掃描,如:WPScan
手動測試:這個階段,咱們須要手工測試全部與用戶交互的功能,好比:留言、登入、下單、退出、退貨、付款等操做
軟件掃描:使用免費的軟件掃描,如:appscan、wvs、netsparker,burp等
可能存在的漏洞
Owasp關鍵點
代碼安全之上傳文件
代碼安全之文件包含
代碼安全之SSRF
邏輯漏洞之密碼重置
邏輯漏洞之支付漏洞
邏輯漏洞之越權訪問
平臺安全之中間件安全
針對不一樣的弱點有不一樣的漏洞利用方式,須要的知識點也比較多。通常這個階段包括兩種方式,一種是手工測試,一種是工具測試
手工測試是經過客戶端或服務器訪問目標服務,手工向目標程序發送特殊的數據,包括有效的和無效的輸入,觀察目標的狀態、對各類輸入的反應,根據結果來發現問題的漏洞檢測技術。手工測試不須要額外的輔助工具,可由測試者獨立完成,實現起來比較簡單。但這種方法高度依賴於測試者,須要測試者對目標比較瞭解。手工測試可用於Web應用程序、瀏覽器及其餘須要用戶交互的程序。
這種方式對於有特殊過濾等操做,或者網絡上沒有成型的利用工具的時候可使用。
網絡上有不少好用的免費利用工具,好比針對sql注入的sqlmap、針對軟件漏洞的matesploit等。