AppScan操作手冊
1.SQL注入
1.1.什么是sql注入
所謂SQL注入(SQL Injection),就是利用程序員對用戶輸入數據的合法性檢測不嚴或不檢測的特點,故意從客戶端提交特殊的代碼,從而收集程序及服務器的信息,獲取想得到的資料(如數據庫用戶名、密碼、表結構等)。
SQL注入是從正常的WWW端口訪問,而且表面看起來跟一般的Web頁面訪問沒什么區別,所以目前市面的防火牆都不會對SQL注入發出警報。動態生成Sql命令時沒有對用戶輸入的數據進行驗證是Sql注入攻擊得逞的主要原因。
1.2.sql注入原理
攻擊者會將一些惡意代碼插入到字符串中,然后會通過各種手段將該字符串傳遞到SQLServer數據庫的實例中進行分析和執行。只要這個惡意代碼符合SQL語句的規則,則在代碼編譯與執行的時候,就不會被系統所發現。
SQL注入式攻擊的主要形式有兩種:一是直接將代碼插入到與SQL命令串聯在一起並使得其以執行的用戶輸入變量,由於其直接與SQL語句捆綁,故也被稱為直接注入式攻擊法。二是一種間接的攻擊方法,它將惡意代碼注入要在表中存儲或者作為原數據存儲的字符串。在存儲的字符串中會連接到一個動態的SQL命令中,以執行一些惡意的SQL代碼。
2.AppScan注冊
2.1.注冊步驟
1.將patch.exe文件當到APPSCAN的安裝目錄(如:D:\Program Files\IBM\Rational AppScan)下,運行。
2.運行keygen.exe,生成lince.lic文件。
打開APPSCAN,幫助-》許可證-》裝入舊格式(.lic)的許可證,將剛才生成的.lic文件裝載。
3.新建掃描任務
3.1.掃描模板選擇
打開AppScan工具,點擊“新建”,會彈出一個掃描模板選擇框,一般選擇“常規掃描” 或者自己定義的模板。
下一步會進入掃描配置向導,選擇執行的掃描類型,默認是“Web應用程序掃描”,點擊“下一步”,輸入“起始URL”
3.2.登錄管理
進入登錄管理,因為有些頁面需要登錄后 才能做有效的掃描,這里記錄的是登錄所需信息,便於掃描時能登錄應用程序。總共有4種方法,比較常用的是“記錄”和“自動”
記錄: 點擊“記錄”按鈕,進行錄制登錄操作。操作類似於用LR做腳本錄制。
自動:輸入用戶名和密碼,掃描時會自動根據這個憑證登錄應用程序。
3.3.測試策略選擇
選擇測試策略,AppScan會根據你的測試策略來進行安全掃描測試。我們可以先選擇“Default”,后面再做相應修改,或者點擊“瀏覽” 選擇已整理的測試策略模板
3.4.完成掃描配置
完成掃描配置向導后,會提供如何啟動的4個選項給你。
1)啟動全面自動掃描:會自動探索URL,而且邊探索邊掃描頁面。
2)僅使用自動“探索”啟動:自動探索URL,不做掃描。
3)使用“手動探索”: 手動去訪問頁面,AppScan會自動記錄你訪問頁面的url
4)我將稍后啟動掃描:AppScan不做任何操作,需要自己手動去啟動掃描。
選擇第4個——“我將稍后啟動掃描”, 在掃描配置模塊,可以查看剛才所做的配置信息
3.5.導入測試策略模板
掃描配置>>測試策略,點擊“導入”,導入一份測試策略模板
3.6.掃描線程設置
可以設置掃描的線程數,從而減低掃描速度,減少對應用服務器造成過高負載:
在掃描配置>>連接>>通信和代理里設置
3.7.導出掃描配置模板
掃描任務可能以后我們還需要重復做,為了減少重復的掃描配置,我們可以把掃描配置導出成模板,便於以后的復用。在“掃描配置”模塊,點擊“導出為模板”,后綴名是“.scant”
4.掃描指定的URL
4.1.處理偽靜態頁
偽靜態頁定義:其共同特征,都是以 html 為后綴名,最后的文件名格式都是 file+ 數字格式;這種類型的頁面經常存在新聞,論壇等。如果訪問這些頁面,發現頁面結構相同,差異的都是里面的文本內容,如提供不同的新聞內容等,這些頁面就是所謂的“偽靜態頁面”,其實是網站發布系統動態產生的,由於結果相似,在安全掃描中,沒有必要針對這些頁面每次都進行掃描。
如 autobbs:
http://bbs.pcauto.com.cn/forum-15580.html
http://bbs.pcauto.com.cn/forum-17065.html
方法:在掃描配置>>排除路徑和文件,增加一個排除的路徑
一般來說,我們需要保留一個html頁來讓它掃描,因此增加一個異常項(例外)
4.2.指定掃描的URL
先排除所有的URL(如配置正則表達式:.*:82),然后把需要掃描的URL設為異常
4.3.排除文件類型
在掃描配置>>排除路徑和文件中可設置排除文件類型,排除一些不掃描的文件:如swf、jpg、gif
4.4.冗余路徑設置
如果我們遇到如下類型的頁面,都是 menu 參數值不同,訪問以后發現出現的是頁面中有不同的超鏈接:
這種頁面是屬於業務類型的“冗余路徑”,需要全面掃描,這時可以打開“掃描配置”:探索>>探索選項 中 把 “冗余路徑限制”的參數值設大一點(默認是5)。
也可以針對該目錄建立一個單獨的掃描任務,只掃描該目錄和其下子目錄。
4.5.探索的結果檢查
探索完后,點擊“應用程序數據”,查看“已訪問的URL”,檢查這些已訪問的URL是否已經包含了指定掃描的URL。
5.掃描結果分析
5.1.安全問題分析
掃描結果會根據安全問題的類別和嚴重級別排序:
點擊最下面的節點。
了解變體的詳細信息。可以把變體理解成安全掃描執行的“測試用例”,當實際結果與預期結果一直時,說明應用程序存在這個安全漏洞。
對比測試與原始有什么不同。一般有差異的地方,appscan會用紅色字體標識。
在瀏覽器中查看具體的報錯(問題)。
5.2.頁面中模擬重現安全問題
查看“測試”的請求信息。
在頁面的“新建分類名稱”中輸入 “\'%20having%201=1--”,點擊“添加分類”按鈕,能夠保存成功
6.加強部分
下面是加強部分,不要求掌握,有興趣可了解一下:
6.1.了解被測網站
如何了解到網站具體有哪些頁面呢?這里我們可以利用 AppScan 的探索(頁面爬行)功能。
在掃描配置里面設置了主 URL 以后,工作菜單中中依次選擇掃描 - 僅探索。對網站進行探索。一般會讓探索工具運行 10 到 30 分鍾,看該網站具體存在哪些頁面,哪些參數等。這個就可以切換到“應用程序數據”視圖來查看。
我們一般關心這3個視圖:
·已訪問的URL():AppScan 已經探索到並且進行了分析的頁面
·已過濾掉的URL():AppScan 已經發現,同時根據掃描配置,認為不需要進行安全掃描的頁面。
·中斷鏈接URL():AppScan 發現了,但是無法訪問到或者訪問出錯的頁面,如 404 頁面不存在,或者 500 服務器錯誤等。
6.2.制定測試策略模板
確定測試策略,我們主要關心是否存在“跨站點腳本執行”和 “SQL 注入”的問題,則在掃描規則中,我們就可以選擇這兩種類型的規則,其他規則都排除。可以在掃描配置>>測試 >>測試策略中選擇,如下圖所示:
在測試策略中,有多種不同的分組模式,最經常使用的是“嚴重性”,“類型”,“侵入式”、“WASC 威脅分類”等標准,根據不同分組選擇的掃描策略,最后組成一個共同的策略集合。
測試策略選擇步驟如下:
1選擇缺省的掃描策略,切換到按照“類型”分類,取消掉“基礎結構”和“應用程序”兩種類型。
說明:把掃描策略置空,沒有選擇任何的掃描策略。在分組類型中選擇“類型”分類,類型分類中只有兩種類型:“基礎結構”和 “應用程序”,可以快速全部都取消掉。
2分組類型,切換到“WASC 威脅分類”,選擇“SQL 注入”和“跨站點腳本編制”。
3.分組類型,切換到“類型”,發現這時候“基礎結構”和“應用程序”兩種類型的掃描策略都是選擇上的模式,而且是虛線,說明這兩種類型下均有部分掃描策略被選擇了,我們不關心“基礎結構”級別的安全問題,所以在這里取消“基礎結構”。
4.分組類型,切換到“侵入式”,發現這時候“侵入式”和“非侵入式”兩種類型的掃描策略都是選擇上的模式。“侵入式”會有有比較強的副作用,可能對系統造成傷害,所以一般掃描生產系統的時候,很少選擇。這里把“侵入式”的用例取消掉。
把選擇好的測試策略,我們可以把它導出成一個模板,方便以后使用:
6.3.匹配正則表達式例子
http://xx.xx.com.cn/forum-15580.html
正則表達式:.*forum-\d+.html
http://xx.xx.com.cn/bbs6/forum-16071-2.html
正則表達式:.*forum-\d+-+\d+.html
http://xx.xx.com.cn/bbs6/pick_101-16260.html
正則表達式:.*pick_\d+-+\d+.html
http://xx.xx.com.cn/bbs6/type_g539fg521b-16071.html
正則表達式:type[_a-z0-9]+-+\d+.html
http://xx.xx.com.cn/bbs6/forum-16260_postat.html
正則表達式:forum-\d+_+postat+.html
http://xx.xx.com.cn/bbs6/forum-16071-10_replyat.html
正則表達式:forum-\d+-+\d+_+replyat+.html
http://xx.xx.com.cn/bbs6/time_0-16071-4.html
正則表達式:.*time_\d+-+\d+-+\d+.html
http://xx.xx.com.cn:8002/price/q-p1.html
正則表達式:q+-+[a-z]\d+.html
6.4.重復的“腳本參數”處理
在“我的應用程序數據”樹狀結構,鼠標選擇目錄以后,在右邊視圖中選擇“腳本參數”,然后查看是否存在不同頁面(URL) 存在相同或者類似參數的情況:如下圖,在不同 URL 中,都存在 title 參數,默認的參數值是“不適用”:
像這些頁面,在一個 URL 中進行測試以后,沒有必要在另外一個頁面也進行測試。所以該參數值的變化,可以認為是冗余頁面,沒有必要進行下一步的重新探索和測試。可以把title 添加到“參數和cookie”: 掃描配置>>參數和cookie>>其它選項—冗余調整
取消選擇任何一個選擇框,則表示無論是否含有該參數,無論該參數值是否發生變化,都不認為是新頁面,沒有必要重新測試,而且不應該因為該參數的變化去影響其他參數的測試。
6.5.常見問題
1.IBM Rational AppScan掃描時發生"AppScan內存需求已超過預定義的限制"錯誤從而停止工作。
原因:為了防止Rational AppScan因為超過內存限度而停止工作,可以進行相應的設定使Rational AppScan當內存使用量相對過大時自動重新啟動。
這樣當掃描因為剩余的虛擬內存量過低從而被迫停止時,Rational AppScan會監測系統注冊表的設定來決定是否重新啟動。
解決辦法:自Rational AppScan 7.7版本以上,在主畫面中選擇菜單[工具]->[選項]->[高級]頁面。
·檢索PerformanceMonitor.RestartOnOutOfMemory屬性並將其設定為布爾值True。
還可以使用下面的屬性
·檢索PerformanceMonitor\minScanTimeDurationForRestart屬性並設定適當的DWORD雙字節數值,該數值是指定Rational AppScan在遇到內存問題之前應當運行的分鍾數。