2019測試指南-web應用程序安全測試(二)識別應用程序入口點

在進行任何全面測試以前,枚舉應用程序及其攻擊面是一個關鍵的前提,由於它容許測試人員識別可能的弱點區域。本節旨在幫助識別和繪製應用程序中應在枚舉和映射完成後應進行調查的區域。php

 

測試目標

瞭解請求的造成方式以及應用程序的典型響應瀏覽器

 

如何測試

在開始任何測試以前,測試人員應該始終充分了解應用程序以及用戶和瀏覽器如何與之通訊。當測試人員遍歷應用程序時,他們應該特別注意全部HTTP請求(GET和POST方法,也稱爲Verbs),以及傳遞給應用程序的每一個參數和表單字段。此外,他們應該注意什麼時候使用GET請求以及什麼時候使用POST請求將參數傳遞給應用程序。使用GET請求是很常見的,可是當傳遞敏感信息時,它一般在POST請求的主體內完成。服務器


請注意,要查看POST請求中發送的參數,測試人員須要使用攔截代理(例如,OWASP:Zed攻擊代理(ZAP))或瀏覽器插件等工具。在POST請求中,測試人員還應特別注意傳遞給應用程序的任何隱藏表單字段,由於這些字段一般包含敏感信息,例如狀態信息,項目數量,項目價格,開發人員從不供您查看或更改。cookie


根據做者的經驗,在此階段的測試中使用攔截代理和電子表格很是有用。代理將跟蹤測試人員和應用程序之間的每一個請求和響應。此外,此時,測試人員一般會捕獲每一個請求和響應,以便他們能夠準確地查看傳遞給應用程序的每一個標頭,參數等以及返回的內容。這有時可能很是繁瑣,特別是在大型互動網站上(想一想銀行應用程序)。可是,經驗將顯示要查找的內容,而且能夠顯着減小此階段。工具


當測試人員遍歷應用程序時,他們應該記錄URL,自定義標題或請求/響應正文中的任何有趣參數,並將它們保存在電子表格中。電子表格應包括所請求的頁面(也能夠從代理添加請求編號,以備未來參考),有趣的參數,請求類型(POST / GET),訪問是否通過身份驗證/未經身份驗證,若是是SSL若是它是多步驟過程的一部分,則使用,以及任何其餘相關注釋。一旦他們將應用程序的每一個區域都映射出來,他們就能夠瀏覽應用程序並測試他們已識別的每一個區域,並記錄哪些有效,哪些無效。本指南的其他部分將肯定如何測試每一個感興趣的領域,測試


如下是全部請求和響應的一些興趣點。在請求部分中,關注GET和POST方法,由於這些方法出如今大多數請求中。請注意,可使用其餘方法,例如PUT和DELETE。一般,這些更罕見的請求(若是容許)可能會暴露漏洞。本指南中有一個專門用於測試這些HTTP方法的部分。網站


要求:編碼

  • 肯定使用GET的位置以及使用POST的位置。
  • 識別POST請求中使用的全部參數(這些參數位於請求正文中)。
  • 在POST請求中,要特別注意任何隱藏的參數。發送POST時,全部表單字段(包括隱藏參數)都將在HTTP消息正文中發送給應用程序。除非使用代理或查看HTML源代碼,不然一般不會看到這些內容。此外,顯示的下一頁,其數據和訪問級別均可以根據隱藏參數的值而不一樣。
  • 識別GET請求中使用的全部參數(即URL),特別是查詢字符串(一般在?標記以後)。
  • 識別查詢字符串的全部參數。這些一般是對形式,例如foo = bar。另請注意,許多參數能夠在一個查詢字符串中,例如由&,〜,:或任何其餘特殊字符或編碼分隔。
  • 在識別一個字符串或POST請求中的多個參數時,須要注意的是執行攻擊須要部分或所有參數。測試人員須要識別全部參數(即便編碼或加密),並肯定應用程序處理哪些參數。本指南的後面部分將肯定如何測試這些參數。此時,只需確保識別出其中的每個。
  • 還要注意一般看不到的任何其餘或自定義類型的標頭(例如debug = False)。


對策:加密

  • 肯定新Cookie的設置位置(Set-Cookie標頭),修改或添加。
  • 肯定在正常響應期間(即未修改的請求)中存在任何重定向(3xx HTTP狀態代碼),400狀態代碼,特別是403 Forbidden和500內部服務器錯誤的位置。
  • 另請注意使用任何有趣的標頭的位置。例如,「服務器:BIG-IP」表示站點是負載平衡的。所以,若是站點負載平衡且一個服務器配置不正確,則測試人員可能必須發出多個請求才能訪問易受攻擊的服務器,具體取決於所使用的負載平衡類型。

 

黑盒測試

測試應用程序入口點: 
如下是有關如何檢查應用程序入口點的兩個示例。
spa

 

例1

此示例顯示了將從在線購物應用程序購買商品的GET請求。

獲取https://xxxx/shoppingApp/buyme.asp?CUSTOMERID = 100&ITEM = z101a&PRICE = 62.50&IP = xxxx 主持人:xxxx Cookie:SESSIONID = Z29vZCBqb2IgcGFkYXdhIG15IHVzZXJuYW1lIGlzIGZvbyBhbmQgcGFzc3dvcmQgaXMgYmFy 


結果預期:

在這裏,測試人員會記錄請求的全部參數,例如CUSTOMERID,ITEM,PRICE,IP和Cookie(可能只是編碼參數或用於會話狀態)。

 

例2

此示例顯示了一個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服務或任何其餘功能)。

相關文章
相關標籤/搜索