Web滲透測試3個要點(信息收集→漏洞發現→漏洞利用) 原 薦

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

在目的明確、裝備精良、經驗豐富的“僱傭軍”式的攻擊者面前,傳統的安全設備已顯得力不從心,企業需要做的是定期開展專業的滲透測試,來降低風險,加固安全。

那麼,什麼是滲透測試?

滲透測試,是滲透測試工程師完全模擬黑客可能使用的攻擊技術和漏洞發現技術,對目標網絡、主機、應用的安全作深入的探測,發現系統最脆弱的環節。

如果說安全檢測是“橫向地毯式自動化掃描”,那麼滲透測試就是“縱向深度人工化入侵”。

可見滲透測試的目的是發現目標系統潛在的業務漏洞風險。

安全問題都體現在輸入輸出的問題上,能夠分析數據流就有跡可循了。先知道滲透測試的流程,用工具找到漏洞,瞭解並且復現它。

1、如何進行Web滲透測試?

完整web滲透測試框架

當需要測試的web應用數以千計,就有必要建立一套完整的安全測試框架,流程的最高目標是要保證交付給客戶的安全測試服務質量。

立項:項目建立,時間安排,人力分配,目標制定,廠商接口人確定;

系統分析&威脅分析:針對具體的web應用,分析系統架構、使用的組件、對外提供的接口等,以STRIDE爲威脅模型進行對應的安全威脅分析,輸出安全威脅分析表,重點關注top3威脅;

制定測試用例:根據威脅分析的結果制定對應的測試用例,測試用例按照模板輸出,具備可執行性;

測試執行&漏洞挖掘:測試用例執行&發散測試,挖掘對應的安全問題or漏洞;

問題修復&迴歸測試:指導客戶應用開發方修復安全問題or漏洞,並進行迴歸測試,確保安全問題or漏洞得到修復,並且沒有引入新的安全問題;

項目總結評審:項目過程總結,輸出文檔評審,相關文檔歸檔。

2、Web應用的滲透測試流程

主要分爲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等

開源的框架:常見的開源框架有Struts2、 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等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章