如何更有效使用RationalAppScan掃描大型網站,第1部分:工作原理及技術分析
近來看到AppScan的技術介紹,感覺不錯,與同行分享。
Rational AppScan(簡稱 AppScan)其實是一個產品家族,包括眾多的應用安全掃描產品,從開發階段的原始碼掃描的 AppScan source edition,到針對 Web 應用進行快速掃描的 AppScan standard edition,以及進行安全管理和彙總整合的 AppScan enterprise Edition 等。我們經常說的 AppScan 就是指的桌面版本的 AppScan,即 AppScan standard edition。其安裝在 Windows 作業系統上,可以對網站等 Web 應用進行自動化的應用安全掃描和測試。
來張 AppScan 的截圖,用圖表說話,更明確。
請注意右上角,單擊“掃描”下面的小三角,可以出現如下的三個選型“繼續完全掃描”、“繼續僅探索”、“繼續僅測試”,有木有?什麼意思?理解了這個地方,就理解了 AppScan 的工作原理,我們慢慢展開:
還沒有正式開始安全測試之前,所以先不管“繼續”,直接來討論“完全掃描”,“僅探索”,“僅測試”三個名詞:
AppScan 是對網站等 Web 應用進行安全攻擊來檢查網站是否存在安全漏洞;既然是攻擊,需要有明確的攻擊物件吧,比如北約現在的物件就是卡扎菲上校還有他的軍隊。對網站來說,一個網站存在的頁面,可能成千上萬。每個頁面也都可能存在多個欄位(引數),比如一個登陸介面,至少要輸入使用者名稱和密碼吧,這就是一個頁面存在兩個欄位,你提交了使用者名稱密碼等登陸資訊,網站總要有地方接受並且檢查是否正確吧,這就可能存在一個新的檢查頁面。這裡的每個頁面的每個引數都可能存在安全漏洞,所有都是被攻擊物件,都需要來檢查。
這就存在一個問題,我們來負責來檢查一個網站的安全性,這個網站有多少個頁面,有多少個引數,頁面之間如何跳轉,我們可能並不明確,如何知道這些資訊?看起來很複雜,盤根錯節;那就更需要找到那個線索,提綱挈領;想一想,訪問一個網站的時候,我們需要知道的最重要的資訊是哪個?網站主頁地址吧?從網站地址開始,很多其他頻道,其他頁面都可以連結過去,對不對,那麼可不可以有種技術,告訴了它網站的入口地址,然後它“順藤摸瓜”,找出其他的網頁和頁面引數?OK,這就是“爬蟲”技術,具體說,是“網站爬蟲”,其利用了網頁的請求都是用 http 協議傳送的,傳送和返回的內容都是統一的語言 HTML,那麼對 HTML 語言進行分析,找到裡面的引數和連結,紀錄並繼續傳送之,最終,找到了這個網站的眾多的頁面和目錄。這個能力 AppScan 就提供了,這裡的術語叫“探索”,explorer,就是去發現,去分析,瞭解未知的,並記錄之。
在使用 AppScan 的時候,要配置的第一個就是要檢查的網站的地址,配置了以後,AppScan 就會利用“探索”技術去發現這個網站存在多少個目錄,多少個頁面,頁面中有哪些引數等,簡單說,瞭解了你的網站的結構。
“探索”瞭解了,測試的目標和範圍就大致確定了,然後呢,利用“軍火庫”,傳送導彈,進行安全攻擊,這個過程就是“測試”;針對發現的每個頁面的每個引數,進行安全檢查,檢查的彈藥就來自 AppScan 的掃描規則庫,其類似防毒軟體的病毒庫,具體可以檢查的安全攻擊型別都在裡面做好了,我們去使用即可。
那麼什麼是“完全測試呢”,完全測試就是把上面的兩個步驟整合起來,“探索”+“測試”;在安全測試過程中,可以先只進行探索,不進行測試,目的是瞭解被測的網站結構,評估範圍;然後選擇“繼續僅測試”,只對前面探索過的頁面進行測試,不對新發現的頁面進行測試。“完全測試”就是把兩個步驟結合在一起,一邊探索,一邊測試。
AppScan 工作原理小結如下:
- 通過搜尋(爬行)發現整個 Web 應用結構
- 根據分析,傳送修改的 HTTP Request 進行攻擊嘗試(掃描規則庫)
- 通過對於 Respone 的分析驗證是否存在安全漏洞
圖 2. AppScan 掃描原理:掃描規則庫 + 爬行 + 測試
步驟 1:探索(又叫爬行,爬網)
步驟 2:測試(針對找到的頁面,生成測試,進行安全攻擊)
所以,簡言之,AppScan 的核心是提供一個掃描規則庫,然後利用自動化的“探索”技術得到眾多的頁面和頁面引數,進而對這些頁面和頁面引數進行安全性測試。“掃描規則庫”,“探索”,“測試”就構成了 AppScan 的核心三要素。而在安全掃描過程中,如何進行優化,就要結合這三個要素,看哪些部分需要優化,應該如何優化。
同時,對於 AppScan 標準版來說,掃描的配置和結果資訊都儲存為字尾名為 Scan 檔案,Scan 檔案裡面主要包括的內容如下:
- 掃描配置資訊:掃描配置資訊,如掃描的目標網站地址,錄製的登陸過程指令碼等,選擇的掃描設定等都儲存在 Scan 檔案中。
- 所有訪問到頁面資訊:針對每個發現的頁面,即使沒有進行測試,在探索過程也會訪問該頁面並紀錄 http request/response 資訊;所以如果探索的頁面訪問的時候返回的頁面內容比較多,頁面比較大,那麼即使只做了探索根本沒有掃描,整個 Scan 檔案也會很大。
- 測試階段,記錄測試成功的測試變體和頁面訪問資訊:針對每個頁面都會傳送多次測試(測試變體),每次測試都會有 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)型別的安全漏洞:
所以針對 AppScan 標準版來說,由於需要儲存的資訊比較多,結果檔案是會比較大的,最根本的方法還是有針對性地進行掃描和測試,使用排除頁面等排除冗餘頁面,把一個大的系統分解為多個小的掃描任務等。
好的,瞭解了 AppScan 的原理,我們就結合原來討論下為什麼掃描大型網站時候可能遇到問題了。
<a href=”mailto:admin@www.test.com”>有問題請聯絡 admin@www.test.com</a>
一些大型網站,往往是一個統一的入口,在裡面提供不同的內容,而這些內容可能來源於不同的技術。如我們熟悉的入口網站,裡面就有“財經”、“體育”、“娛樂”等多個頻道;每個頻道的內容,可能是採用不同的技術,對應不同的伺服器。如一個網站的“論壇”頻道,就有很多類似的頁面:
http://www.Test.com/bbs/showthread.php?id=1 |
這裡的 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,如需轉載請自行聯絡原作者
相關文章
- 大型網站技術架構核心原理(1)網站架構
- 《大型網站技術架構:核心原理與案例分析》讀書筆記 - 第1篇 概述網站架構筆記
- 高階掃描技術及原理介紹(轉)
- 大型網站技術架構——核心原理與案例分析(二)網站架構
- 大型網站技術架構——核心原理與案例分析(一)網站架構
- 《大型網站技術架構:核心原理與案例分析》讀書筆記 - 第4篇 架構師(附 大型網站架構技術一覽)網站架構筆記
- 大型網站技術架構:核心原理與案例分析筆記網站架構筆記
- 掃描技術和掃描工具
- 《大型網站技術架構:核心原理與案例分析》讀書筆記 - 第3篇 案例網站架構筆記
- 《大型網站技術架構:核心原理與案例分析》讀書筆記 - 第2篇 架構網站架構筆記
- 《大型網站技術架構:核心原理與案例分析》讀書筆記網站架構筆記
- 如何使用evilscan 掃描網路
- 《大型網站技術架構核心原理與案例分析》讀書筆記(二)網站架構筆記
- 《大型網站技術架構:核心原理與案例分析》讀書筆記系列網站架構筆記
- 大型網站技術架構(二)--大型網站架構演化網站架構
- 大型網站技術架構(一)--大型網站架構演化網站架構
- 網站漏洞掃描工具Uniscan網站
- Joomla!網站掃描工具joomscanOOM網站
- NoSQL群線下技術聚會第1期 ——“網站分析”系列沙龍SQL網站
- 如何掃描網站漏洞 針對於海洋CMS的漏洞檢查分析網站
- 大型網站架構利器-CDN技術網站架構
- 大型網站架構技術一覽網站架構
- 一張圖看懂大型網站技術架構網站架構
- 大型網站技術架構-入門梳理網站架構
- 大型網站技術架構的演進網站架構
- 大型網站技術架構——2. 網站架構模式網站架構模式
- 大型網站技術架構(五)--網站高可用架構網站架構
- 多位數碼管動態掃描原理分析
- PostgreSQL技術內幕(七)索引掃描SQL索引
- 掃描器在工作中的使用
- Vim 實用技術,第 1 部分: 實用技巧
- tls/ssl工作原理及相關技術TLS
- 大型網站技術架構(八)--網站的安全架構網站架構
- 讀書筆記-大型網站技術架構筆記網站架構
- 大型網站技術架構(三)--架構模式網站架構模式
- 大型網站技術架構(二)--架構模式網站架構模式
- 《大型網站技術架構》讀書筆記網站架構筆記
- 大型分散式網站架構技術總結分散式網站架構