在進行任何全面測試以前,枚舉應用程序及其攻擊面是一個關鍵的前提,由於它容許測試人員識別可能的弱點區域。本節旨在幫助識別和繪製應用程序中應在枚舉和映射完成後應進行調查的區域。php
瞭解請求的造成方式以及應用程序的典型響應瀏覽器
在開始任何測試以前,測試人員應該始終充分了解應用程序以及用戶和瀏覽器如何與之通訊。當測試人員遍歷應用程序時,他們應該特別注意全部HTTP請求(GET和POST方法,也稱爲Verbs),以及傳遞給應用程序的每一個參數和表單字段。此外,他們應該注意什麼時候使用GET請求以及什麼時候使用POST請求將參數傳遞給應用程序。使用GET請求是很常見的,可是當傳遞敏感信息時,它一般在POST請求的主體內完成。服務器
請注意,要查看POST請求中發送的參數,測試人員須要使用攔截代理(例如,OWASP:Zed攻擊代理(ZAP))或瀏覽器插件等工具。在POST請求中,測試人員還應特別注意傳遞給應用程序的任何隱藏表單字段,由於這些字段一般包含敏感信息,例如狀態信息,項目數量,項目價格,開發人員從不供您查看或更改。cookie
根據做者的經驗,在此階段的測試中使用攔截代理和電子表格很是有用。代理將跟蹤測試人員和應用程序之間的每一個請求和響應。此外,此時,測試人員一般會捕獲每一個請求和響應,以便他們能夠準確地查看傳遞給應用程序的每一個標頭,參數等以及返回的內容。這有時可能很是繁瑣,特別是在大型互動網站上(想一想銀行應用程序)。可是,經驗將顯示要查找的內容,而且能夠顯着減小此階段。工具
當測試人員遍歷應用程序時,他們應該記錄URL,自定義標題或請求/響應正文中的任何有趣參數,並將它們保存在電子表格中。電子表格應包括所請求的頁面(也能夠從代理添加請求編號,以備未來參考),有趣的參數,請求類型(POST / GET),訪問是否通過身份驗證/未經身份驗證,若是是SSL若是它是多步驟過程的一部分,則使用,以及任何其餘相關注釋。一旦他們將應用程序的每一個區域都映射出來,他們就能夠瀏覽應用程序並測試他們已識別的每一個區域,並記錄哪些有效,哪些無效。本指南的其他部分將肯定如何測試每一個感興趣的領域,測試
如下是全部請求和響應的一些興趣點。在請求部分中,關注GET和POST方法,由於這些方法出如今大多數請求中。請注意,可使用其餘方法,例如PUT和DELETE。一般,這些更罕見的請求(若是容許)可能會暴露漏洞。本指南中有一個專門用於測試這些HTTP方法的部分。網站
要求:編碼
對策:加密
測試應用程序入口點:
如下是有關如何檢查應用程序入口點的兩個示例。spa
此示例顯示了將從在線購物應用程序購買商品的GET請求。
獲取https://xxxx/shoppingApp/buyme.asp?CUSTOMERID = 100&ITEM = z101a&PRICE = 62.50&IP = xxxx 主持人:xxxx Cookie:SESSIONID = Z29vZCBqb2IgcGFkYXdhIG15IHVzZXJuYW1lIGlzIGZvbyBhbmQgcGFzc3dvcmQgaXMgYmFy
結果預期:
在這裏,測試人員會記錄請求的全部參數,例如CUSTOMERID,ITEM,PRICE,IP和Cookie(可能只是編碼參數或用於會話狀態)。
此示例顯示了一個POST請求,該請求將使您登陸到應用程序。
POST https://xxxx/KevinNotSoGoodApp/authenticate.asp?service = login 主持人:xxxx Cookie:SESSIONID = dGhpcyBpcyBhIGJhZCBhcHAgdGhhdCBzZXRzIHByZWRpY3RhYmxlignvb2tpZXMgYW5kIG1pbmUgaXMgMTIzNA == CustomCookie = 00my00trusted00ip00is00x.xxx00
POST消息的正文:
用戶管理=&傳= pass123&調試=真fromtrustIP =真
結果預期:
在此示例中,測試人員會記錄以前的全部參數,但請注意參數是在消息正文中傳遞而不是在URL中傳遞。此外,請注意正在使用的自定義cookie。
經過Gray Box方法測試應用程序入口點將包括上面已經識別的全部內容,並添加一個。若是存在應用程序從中接收數據並對其進行處理的外部源(例如SNMP陷阱,系統日誌消息,SMTP或來自其餘服務器的SOAP消息),則與應用程序開發人員的會議能夠識別將接受或指望用戶的任何功能輸入以及它們的格式。例如,開發人員能夠幫助理解如何制定應用程序能夠接受的正確SOAP請求以及Web服務所在的位置(若是在黑盒測試期間還沒有識別Web服務或任何其餘功能)。