如何更有效使用RationalAppScan掃描大型網站,第1部分:工作原理及技術分析

技術小美發表於2017-11-08

近來看到AppScan的技術介紹,感覺不錯,與同行分享。

Rational AppScan(簡稱 AppScan)其實是一個產品家族,包括眾多的應用安全掃描產品,從開發階段的原始碼掃描的 AppScan source edition,到針對 Web 應用進行快速掃描的 AppScan standard edition,以及進行安全管理和彙總整合的 AppScan enterprise Edition 等。我們經常說的 AppScan 就是指的桌面版本的 AppScan,即 AppScan standard edition。其安裝在 Windows 作業系統上,可以對網站等 Web 應用進行自動化的應用安全掃描和測試。

來張 AppScan 的截圖,用圖表說話,更明確。

圖 1. AppScan 標準版界

請注意右上角,單擊“掃描”下面的小三角,可以出現如下的三個選型“繼續完全掃描”、“繼續僅探索”、“繼續僅測試”,有木有?什麼意思?理解了這個地方,就理解了 AppScan 的工作原理,我們慢慢展開:

還沒有正式開始安全測試之前,所以先不管“繼續”,直接來討論“完全掃描”,“僅探索”,“僅測試”三個名詞:

AppScan 三個核心要素

AppScan 是對網站等 Web 應用進行安全攻擊來檢查網站是否存在安全漏洞;既然是攻擊,需要有明確的攻擊物件吧,比如北約現在的物件就是卡扎菲上校還有他的軍隊。對網站來說,一個網站存在的頁面,可能成千上萬。每個頁面也都可能存在多個欄位(引數),比如一個登陸介面,至少要輸入使用者名稱和密碼吧,這就是一個頁面存在兩個欄位,你提交了使用者名稱密碼等登陸資訊,網站總要有地方接受並且檢查是否正確吧,這就可能存在一個新的檢查頁面。這裡的每個頁面的每個引數都可能存在安全漏洞,所有都是被攻擊物件,都需要來檢查

這就存在一個問題,我們來負責來檢查一個網站的安全性,這個網站有多少個頁面,有多少個引數,頁面之間如何跳轉,我們可能並不明確,如何知道這些資訊?看起來很複雜,盤根錯節;那就更需要找到那個線索,提綱挈領;想一想,訪問一個網站的時候,我們需要知道的最重要的資訊是哪個?網站主頁地址吧?從網站地址開始,很多其他頻道,其他頁面都可以連結過去,對不對,那麼可不可以有種技術,告訴了它網站的入口地址,然後它“順藤摸瓜”,找出其他的網頁和頁面引數?OK,這就是“爬蟲”技術,具體說,是“網站爬蟲”,其利用了網頁的請求都是用 http 協議傳送的,傳送和返回的內容都是統一的語言 HTML,那麼對 HTML 語言進行分析,找到裡面的引數和連結,紀錄並繼續傳送之,最終,找到了這個網站的眾多的頁面和目錄。這個能力 AppScan 就提供了,這裡的術語叫“探索”,explorer,就是去發現,去分析,瞭解未知的,並記錄之。

在使用 AppScan 的時候,要配置的第一個就是要檢查的網站的地址,配置了以後,AppScan 就會利用“探索”技術去發現這個網站存在多少個目錄,多少個頁面,頁面中有哪些引數等,簡單說,瞭解了你的網站的結構。

“探索”瞭解了,測試的目標和範圍就大致確定了,然後呢,利用“軍火庫”,傳送導彈,進行安全攻擊,這個過程就是“測試”;針對發現的每個頁面的每個引數,進行安全檢查,檢查的彈藥就來自 AppScan 的掃描規則庫,其類似防毒軟體的病毒庫,具體可以檢查的安全攻擊型別都在裡面做好了,我們去使用即可。

那麼什麼是“完全測試呢”,完全測試就是把上面的兩個步驟整合起來,“探索”+“測試”;在安全測試過程中,可以先只進行探索,不進行測試,目的是瞭解被測的網站結構,評估範圍;然後選擇“繼續僅測試”,只對前面探索過的頁面進行測試,不對新發現的頁面進行測試。“完全測試”就是把兩個步驟結合在一起,一邊探索,一邊測試。

AppScan 工作原理小結如下:

  • 通過搜尋(爬行)發現整個 Web 應用結構
  • 根據分析,傳送修改的 HTTP Request 進行攻擊嘗試(掃描規則庫)
  • 通過對於 Respone 的分析驗證是否存在安全漏洞


圖 2. AppScan 掃描原理:掃描規則庫 + 爬行 + 測

 

 

 

步驟 1:探索(又叫爬行,爬網)


圖 3. 探索(爬網,爬行)

 

 

步驟 2:測試(針對找到的頁面,生成測試,進行安全攻擊)


圖 4. 針對探索發現的頁面和引數,進行安全測試

 

 

所以,簡言之,AppScan 的核心是提供一個掃描規則庫,然後利用自動化的“探索”技術得到眾多的頁面和頁面引數,進而對這些頁面和頁面引數進行安全性測試。“掃描規則庫”,“探索”,“測試”就構成了 AppScan 的核心三要素。而在安全掃描過程中,如何進行優化,就要結合這三個要素,看哪些部分需要優化,應該如何優化。

AppScan 結果檔案

同時,對於 AppScan 標準版來說,掃描的配置和結果資訊都儲存為字尾名為 Scan 檔案,Scan 檔案裡面主要包括的內容如下:

  1. 掃描配置資訊:掃描配置資訊,如掃描的目標網站地址,錄製的登陸過程指令碼等,選擇的掃描設定等都儲存在 Scan 檔案中。
  2. 所有訪問到頁面資訊:針對每個發現的頁面,即使沒有進行測試,在探索過程也會訪問該頁面並紀錄 http request/response 資訊;所以如果探索的頁面訪問的時候返回的頁面內容比較多,頁面比較大,那麼即使只做了探索根本沒有掃描,整個 Scan 檔案也會很大。
  3. 測試階段,記錄測試成功的測試變體和頁面訪問資訊:針對每個頁面都會傳送多次測試(測試變體),每次測試都會有 Request/response 資訊,這些資訊如果測試通過,即發現了一個安全問題,則會把該測試變體對應得 request/response 都會紀錄下來,儲存在 .scan 檔案中;由於 AppScan 的掃描測試用例庫全面,對於每種安全威脅漏洞,都會傳送多個安全測試變體(Variant)進行測試,比如對於 XSS 問題,AppScan 傳送了 100 個變體,其中 30 個執行失敗,70 個變體執行成功,則會紀錄 70 次執行成功的具體變體資訊,以及每個變體對應的 Request/Response 資訊。這就是一個很大的資料量。這些資訊儲存以後,就可以在不連線在網站的情況下進行結果分析,快速顯示當時測試的頁面快照等。

我們以http://demo.testfire.net/bank/customize.aspx 為例,如下就有 74 個變體都發現了 Customize 頁面的 Lang 引數存在跨站點指令碼執行(XSS)型別的安全漏洞:


圖 5. 測試變體顯

 

 

 

所以針對 AppScan 標準版來說,由於需要儲存的資訊比較多,結果檔案是會比較大的,最根本的方法還是有針對性地進行掃描和測試,使用排除頁面等排除冗餘頁面,把一個大的系統分解為多個小的掃描任務等。

好的,瞭解了 AppScan 的原理,我們就結合原來討論下為什麼掃描大型網站時候可能遇到問題了。

 

 

<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 的掃描受到如下因素的影響:

  • 網站規模(頁面個數,頁面引數)
  • 掃描策略的選擇
  • 掃描設定

而對於大型的網站,我們經常需要從幾個方面來優化配置

  • 選擇合適的,最小化的掃描規則
  • 分解掃描任務,把一個大的掃描任務分解為多個小的掃描任務
  • 根據頁面特點,設定可以過濾的類似頁面(冗餘頁面)


     

 

本文轉自hblxp32151CTO部落格,原文連結:http://blog.51cto.com/starpoint/646155,如需轉載請自行聯絡原作者


相關文章