因此,簡言之,AppScan 的核心是提供一個掃描規則庫,而後利用自動化的「探索」技術獲得衆多的頁面和頁面參數,進而對這些頁面和頁面參數進行安全性測試。
「掃描規則庫」,「探索」,「測試」就構成了 AppScan 的核心三要素。而在安全掃描過程當中,如何進行優化,就要結合這三個要素,看哪些部分須要優化,應該如何優化。
同時,對於 AppScan 標準版來講,掃描的配置和結果信息都保存爲後綴名爲 Scan 文件,Scan 文件裏面主要包括的內容以下:
因此針對 AppScan 標準版來講,因爲須要保存的信息比較多,結果文件是會比較大的,最根本的方法仍是有針對性地進行掃描和測試,使用排除頁面等排除冗餘頁面,把一個大的系統分解爲多個小的掃描任務等。
大型網站技術特色分析
AppScan 掃描的對象是網站等 Web 應用,而網站規模的大小和使用的技術,都須要針對性的進行掃描設置,咱們遇到的不少問題,都是在掃描規模比較大的網站時候遇到的,如一個網站頁面數目超過 2000 個,須要執行的掃描用例是 50,000 個,在掃描這樣的網站時候,默認狀況下 AppScan 的掃描 scan 文件可能超過 100M 了,掃描效率就可能比較慢,須要長時間的掃描運行時間。
下面,咱們就來分析大型網站中存在的一些可能影響 AppScan 掃描的技術特色。
網站頁面多,頁面參數多,則 AppScan 須要發送的測試用例多
什麼叫大型網站,顧名思義,網站規模大,提供內容多;具體說是頁面不少,內容很全。好比
www.sina.com.cn,好比 http://music.10086.cn/,網站中都有多個頻道,包括上萬個頁面。並且除了頁面多,可能還有一個特色 --- 頁面參數多,即要填寫的地方多,和用戶的交互多;好比一個網站若是都是靜態頁面(.html、.jpg 等),沒有讓用戶輸入的地方,那麼能夠利用,能夠做爲攻擊點的地方也就很少。若是頁面處處都是有輸入有查詢,要求用戶來參與的,你輸入的越多,可能泄露的信息也越多,可能被別人利用的攻擊點也就越多,因此和頁面參數也是有關係的。
AppScan 產生測試用例的時候,也是根據每一個參數來產生的,簡單說,若是一個參數,對應了 200 個安全攻擊測試用例,那麼一個登錄界面至少就對應 400 個了,爲何?登錄界面至少有用戶名(username)和密碼(password)兩個字段吧?每一個字段 200 個攻擊用例。
這個簡單吧,還能夠更復雜:若是遇到下面的兩個地址,那要掃描多少次呢?
http://www.Test.com/focus/satisfy/file.jsp?id=1 http://www.Test.com/focus/satisfy/file.jsp?id=2
上面的兩個地址有相似的,「?」號之前的 URL 地址徹底同樣,「?」號後面帶的參數不一樣,這種能夠認爲是重複頁面,那麼對於重複頁面,是否要重複測試呢?
這取決於「冗餘路徑設置」,默認的是最多測試 5 次;即,這種類型 URL 出現的前 5 次,那麼就是要測試 1000 個攻擊用例了。
若是再繼續修改下:遇到下面的 URL 呢
http://www.Test.com/focus/satisfy/file.jsp?id=&Item=open http://www.Test.com/focus/satisfy/file.jsp?id=2&Item=close
每一個 URL 裏面都有 2 個參數,測試的次數就更多了。想象下,若是這個網頁裏面的參數若是是 10 個,或者更多的呢?好比不少網站提交註冊信息的時候,要填寫的欄位就不少,要進行的安全測試用例也就隨之不斷增長…
這是網站規模的影響,還有一個問題,就出在「每一個參數,發送 200 個安全測試用例」這個假設上。這個假設的前提來源於哪裏?來源於咱們選擇的掃描規則庫。即你關心那些安全威脅,這個須要在測試策略裏面選擇。一樣來參照殺毒軟件,你會用殺毒軟件來查找一些專用的病毒嗎,好比 CIH、木馬;應用安全掃描也是同樣的道理,若是有明確的安全指標或者安全規則範圍,那麼就選擇之。這些可能來源於企業的規範,來源於政府的法律法規。就要根據你的理解,在這裏選擇。
在實際工做中,咱們也很難在最開始的階段,就把掃描規範制定下來,按照項目經理們的口頭禪「漸進明細」,「滾動式規劃」,在實踐中,更多時候也是摸着石頭過河,選擇了一個掃描策略,而後根據結果分析,看是否須要調整,不斷優化。好比選擇默認的「缺省值」掃描策略,對網站進行掃描,發現其「敏感信息」裏面會去檢查頁面上是否含有 Email 地址,是否含有信用卡號碼等,若是咱們以爲這些信息,顯示在頁面上是正常的業務須要(好比這樣的連接:
<a href="mailto:admin@www.test.com">有問題請聯繫 admin@www.test.com</a>),咱們就能夠取消掉這些規則,因此掃描規則也很大程度上影響着咱們的掃描效率。
網站採用多種混合的技術,須要不一樣的掃描設置
一些大型網站,每每是一個統一的入口,在裏面提供不一樣的內容,而這些內容可能來源於不一樣的技術。如咱們熟悉的門戶網站,裏面就有「財經」、「體育」、「娛樂」等多個頻道;每一個頻道的內容,多是採用不一樣的技術,對應不一樣的服務器。如一個網站的「論壇」頻道,就有不少相似的頁面:
http://www.Test.com/bbs/showthread.php?id=1 Http://www.Test.com/bbs/showthread.php?id=2 Http://www.Test.com/bbs/showthread.php?id=3
這裏的 showthread.php 頁面存在屢次,每次都是參數值不一樣,訪問後發現這些頁面除了文本內容外,其餘的頁面結構等都相同,則這些頁面只須要選擇幾個典型的掃描便可,沒有必要所有掃描。
而同時,在另外的一些頻道,存在另外類型的頁面:
http://www.Test.com/default.aspx?content=inside_community.htm http://www.Test.com/default.aspx?content=inside_press.htm http://www.Test.com/default.aspx?content=inside_executives.htm
這些動態頁面,也是網址相同,參數相同,可是具備不一樣的參數值,訪問時候發現每種類型的參數值都指向了徹底不一樣的頁面,則須要每種參數值都要測試到。這種狀況常常存在跳轉頁面中。
而這兩個頻道中,第一種狀況,能夠選擇典型的頁面掃描之,而第二種狀況則須要進行徹底的掃描,每種參數值都須要考慮到。這就須要不一樣的掃描設置。
同時,可能你們也注意到了,第一種狀況下的是 php 頁面,而第二種狀況下的則是 aspx 頁面,對應不一樣的開發技術,這也可能須要不一樣的掃描設置。
因此,總結下,AppScan 的掃描受到以下因素的影響:
- 網站規模(頁面個數,頁面參數)
- 掃描策略的選擇
- 掃描設置
而對於大型的網站,咱們常常須要從幾個方面來優化配置
- 選擇合適的,最小化的掃描規則
- 分解掃描任務,把一個大的掃描任務分解爲多個小的掃描任務
- 根據頁面特色,設置能夠過濾的相似頁面(冗餘頁面)