談滲透測試方法和流程


1,分析目標網站內容及功能 

(1)  首先肯定網站採用何種語言編寫.或者是否有混用的狀況.此處能夠經過查看網站源文件,觀察網站連接,捕獲提交請求等方式獲取. php

 

(2)  爬行網站目錄,使用工具對網站目錄進行爬行,能夠輔助上一步讓結果更加精準.將爬行結果存檔,若是能夠,此處應分析出網站是否使用通用程序,若是是,記錄下來.進行下一步. html

 

(3)  根據上一步的爬行結果,對網站根目錄或者關鍵目錄進行暴力目錄探測,若是網站爲通用程序,判讀是否有過二次開發,如非通用程序,在探測到的目錄中尋找關鍵目錄及文件. java

此步驟詳細測試方法: 數據庫

1.輸入並訪問一些不可能存在的文件或目錄名,再輸入並訪問一些經過目錄爬行已知存在的目錄及文件名,從而得知服務器如何處理無效資源. 
2.使用網站爬行到的結果做爲此步驟暴力目錄探測的依據,掃描關鍵目錄或所有. 
3.肯定服務器如何處理文件沒法找到的迴應,並使用關鍵字技術來處理這些迴應.從而判斷有效資源及無效資源. 
4.收集此步驟暴力掃描獲得的結果,並手工檢測探測到目錄的有效性. 
5.重複以上步驟,獲得更多更關鍵的目錄及文件. 

 

(4)  經過上面步驟,獲得一個完整的網站目錄結構,以及枚舉到的全部目錄名稱,文件名稱及文件擴展名.瞭解網站開發人員的命名思路,肯定其命名規則,推測出更多的目錄及文件名. 服務器

此步驟詳細測試方法: 併發

1.檢查整個列表中的文件命名規則,判讀其命名依據,如發現幾個部份內容相同的文件名,addnews.php,viewnews.php,那麼咱們就能夠嘗試是否存在editnews.php,delnews.php,一般只要查看幾個文件名,就能夠推測出網站開發人員的命名習慣,根據其我的風格,開發者可能採用各類命名方法,如冗長式(addnewuser.php),簡潔式(adduser.php),縮寫式(addusr.php),或者更加模糊的命名方式(addu.php).瞭解開發者使用的命名習慣有助於推測出還沒有肯定內容的準確名稱. 編輯器

 

2.有些不一樣內容的命名方案使用數字和日期做爲標識符,經過他們能夠輕易推測出隱藏的內容.靜態頁面常常採用這種命名方式.svn

例如PKAV.NET 的團隊博客中,文章裏所展現的圖片的文件名沒有被從新定義,採用了日期加數字遞增的命名方案,如2012年12月12號發佈的文章中的圖片分別爲1.jpg,2.jpg,3.jpg.那麼這些圖片的路徑就是/2012-12-12/1.jpg, /2012-12-12/2.jpg, /2012-12-12/3.jpg  , 此時咱們在博客上發佈了一篇內容加密的文章,只有團隊成員才知道密碼,可是黑客們根據博客以往發佈文章的命名規則推測出了這些圖片的準確地址,從而經過圖片內容泄漏了文章的大體概念. 工具

 

3.檢查全部客戶端代碼,如HTML及JS代碼,尋找任何隱藏了服務器端的線索,以及隱藏的表單元素等.認證檢查註釋內容,每每能帶給咱們驚喜,如部分通用程序會在網站首頁放置一個通向網站管理後臺的連接,但網站管理人員不但願這個連接被正常訪問者所得知,因而將內容註釋,咱們能夠經過查看HTML代碼得知此具體地址,還有大多數的管理後臺中所調用的JS 中經常會存儲着後臺全部功能模塊的連接地址,但在判斷了當前用戶權限後將其隱藏起來,咱們也能夠經過直接查看JS代碼的方式得知具體的內容,還有一些開發者會在註釋內容中記錄一些敏感信息,我屢次從註釋信息中獲得數據庫的名稱,甚至能夠獲得數據庫的具體鏈接信息,SQL 查詢語句等. 開發工具

4.把咱們經過推測枚舉出來的內容放在其餘地方進行嘗試。

如文件a.php 在/111/這個目錄下存在,那麼咱們能夠嘗試在/222/這個目錄下嘗試是否存在相同文件,把全部枚舉出來的文件名使用一些常規後綴來嘗試訪問,如index.php 這個文件已知存在,咱們可使用txt,bak,src,inc,tmp 等後綴進行嘗試,如嘗試index.txt,index.bak 或者添加在原有後綴基礎上,index.php.bak 等.這樣能夠幫助咱們獲取這些文件的未編譯版本,開發版本或者備份文件,還能夠經過網站使用的語言來推測,如java 使用的.cs 後綴等. 

 

5.搜索開發者使用的開發工具或者文本編輯器建立的臨時文件。如SVN的.svn/entries,又或者Ultraedit這類文本編輯器的自動備份功能建立的.bak文件,被大量使用的.tmp後綴,以及index.php~1 這樣的遺留文件,這些都是可能會發現重要線索的細節,測試中必定不要遺漏這些步驟. 

 

6.將上述的步驟自動化,提取全部存在的文件名以及目錄,後綴的詞幹信息,在全部目錄下進行自動化批量探測. 

7.若是經過以上步驟已經肯定一種統一的命名方案,那麼就可使用此命名規則在整個站點下進行測試. 

8.不斷重複以上步驟,獲取更多的關鍵信息,根據時間及我的想象力盡情發揮! 

 

(5)  利用公共信息,如搜索引擎,站點快照信息,以及其網站所使用的程序開發商公佈的一些使用文檔等信息近一步獲取目標站點更多信息. 

1.使用幾種不一樣的搜索引擎和網站快照來獲取目標站點的索引和歷史內容記錄. 
2.使用搞基搜索技巧如: 

site:www.hao123.com  (返回此目標站點被搜索引擎抓取收錄的全部內容) 
site:www.hao123.com  關鍵詞  (返回此目標站點被搜索引擎抓取收錄的包含此關鍵詞的全部頁面.此處咱們能夠將關鍵詞設定爲,網站後臺,管理後臺,密碼修改,密碼找回等.) 
site:www.hao123.com inurl:admin.php  (返回目標站點的地址中包含admin.php的全部頁面,可使用admin.php,manage.php或者其餘關鍵詞來尋找關鍵功能頁面) 
link:www.hao123.com  (返回全部包含目標站點連接的頁面,其中包括其開發人員的我的博客,開發日誌,或者開放這個站點的第三方公司,合做夥伴等) 
related:www.hao123.com  (返回全部與目標站點」類似」的頁面,可能會包含一些通用程序的信息等.) 

3.在搜索時不要只使用網頁的搜索功能,能夠嘗試如圖片,新聞等功能來定位具體信息. 
4.從搜索引擎的快照中尋找一些關鍵信息,如程序報錯信息能夠會泄漏網站具體路徑,或者一些快照中會保存一些測試用的測試信息,好比說某個網站在開發了後臺功能模塊的時候,還沒給全部頁面增長權限鑑別,此時被搜索引擎抓取了快照,即便後來網站增長了權限鑑別,但搜索引擎的快照中仍會保留這些信息. 
5經過搜索引擎獲取目標站點的子域名,獲得更多的功能,若有些網站常用admin 這個子域名做爲其管理後臺,如admin.hao123.com等. 

 

(6)  收集網站開發者信息,如網站的開發人員,管理維護人員等在互聯網上的一些信息. 

1.列出網站中獲得的全部開發及維護人員的姓名和郵件地址及其餘聯繫方式,其中包含從網站聯繫功能中獲取到的,從HTML或JS中的註釋信息中獲得的,已經內容頁面上獲取到的。

2.使用上面介紹的一些高級搜索技巧,查找這些人在互聯網上發佈的與目標站點有關的一切信息,分析並發現有用的信息,如我曾經在用這個方法獲取某國內大型網站的開發人員的信息時,竟發現他把他開發過的全部功能頁面的源代碼都放在一個公開的網站中,能夠隨意下載,包含了這個網站的數據庫連接信息等關鍵內容,從而致使我輕鬆獲取到這個大型網站的權限。

相關文章
相關標籤/搜索