1. 程式人生 > >AppScan系列——AppScan操作手冊

AppScan系列——AppScan操作手冊

轉自:http://zhouanya.blog.51cto.com/4944792/1388681/

1.SQL注入

1.1.什麼是sql注入

所謂SQL注入(SQL Injection),就是利用程式設計師對使用者輸入資料的合法性檢測不嚴或不檢測的特點,故意從客戶端提交特殊的程式碼,從而收集程式及伺服器的資訊,獲取想得到的資料(如資料庫使用者名稱、密碼、表結構等)。

SQL注入是從正常的WWW埠訪問,而且表面看起來跟一般的Web頁面訪問沒什麼區別,所以目前市面的防火牆都不會對SQL注入發出警報。動態生成Sql命令時沒有對使用者輸入的資料進行驗證是Sql注入攻擊得逞的主要原因。

1.2.
sql注入原理

攻擊者會將一些惡意程式碼插入到字串中,然後會通過各種手段將該字串傳遞到SQLServer資料庫的例項中進行分析和執行。只要這個惡意程式碼符合SQL語句的規則,則在程式碼編譯與執行的時候,就不會被系統所發現。

SQL注入式攻擊的主要形式有兩種:一是直接將程式碼插入到與SQL命令串聯在一起並使得其以執行的使用者輸入變數,由於其直接與SQL語句捆綁,故也被稱為直接注入式攻擊法。二是一種間接的攻擊方法,它將惡意程式碼注入要在表中儲存或者作為原資料儲存的字串。在儲存的字串中會連線到一個動態的SQL命令中,以執行一些惡意的SQL程式碼。

wKiom1M61SehIKCIAADrMkAzWr8048.jpg

2.AppScan註冊

2.1.註冊步驟

1.將patch.exe檔案當到APPSCAN的安裝目錄(如:D:\Program Files\IBM\Rational AppScan)下,執行。

2.執行keygen.exe,生成lince.lic檔案。

開啟APPSCAN,幫助-》許可證-》裝入舊格式(.lic)的許可證,將剛才生成的.lic檔案裝載。

wKiom1M61VmxyVvYAAB33WILtio752.jpg

3.新建掃描任務

3.1.掃描模板選擇

   開啟AppScan工具,點選“新建”,會彈出一個掃描模板選擇框,一般選擇“常規掃描” 或者自己定義的模板。

wKioL1M61W-xlRgLAAExyLzQ_OY136.jpg

下一步會進入掃描配置嚮導,選擇執行的掃描型別,預設是“Web應用程式掃描”,點選“下一步”,輸入“起始URL”

wKioL1M61ZqStzeDAAF899H3qVo042.jpg

3.2.登入管理

   進入登入管理,因為有些頁面需要登入後 才能做有效的掃描,這裡記錄的是登入所需資訊,便於掃描時能登入應用程式。總共有4種方法,比較常用的是“記錄”和“自動”

記錄: 點選“記錄”按鈕,進行錄製登入操作。操作類似於用LR做指令碼錄製。

wKioL1M61dWDsMSTAAFDv3aZVHw192.jpg

自動:輸入使用者名稱和密碼,掃描時會自動根據這個憑證登入應用程式。

wKioL1M61fjT37x1AACNy8KanvA495.jpg

3.3.測試策略選擇

選擇測試策略,AppScan會根據你的測試策略來進行安全掃描測試。我們可以先選擇“Default”,後面再做相應修改,或者點選“瀏覽” 選擇已整理的測試策略模板

wKioL1M61iOxN0mcAAEZGvJx-Mw539.jpg

3.4.完成掃描配置

完成掃描配置嚮導後,會提供如何啟動的4個選項給你。

wKiom1M61mnThUlIAACrtuEsP9Y094.jpg

1)啟動全面自動掃描:會自動探索URL,而且邊探索邊掃描頁面。

2)僅使用自動“探索”啟動:自動探索URL,不做掃描。

3)使用“手動探索”: 手動去訪問頁面,AppScan會自動記錄你訪問頁面的url

4)我將稍後啟動掃描:AppScan不做任何操作,需要自己手動去啟動掃描。

選擇第4個——“我將稍後啟動掃描”, 在掃描配置模組,可以檢視剛才所做的配置資訊

wKioL1M61nSQ8VoAAAG1H0pe3_A003.jpg

3.5.測試策略模板

掃描配置>>測試策略,點選“導”,導一份測試策略模板

wKiom1M61suBe2hiAAEHuPbZtkc665.jpg

3.6.掃描執行緒設定

   可以設定掃描的執行緒數,從而減低掃描速度,減少對應用伺服器造成過高負載:

掃描配置>>連線>>通訊和代理裡設定 

wKioL1M61tHQFa_ZAABowGMPpoI699.jpg

3.7.匯出掃描配置模板

掃描任務可能以後我們還需要重複做,為了減少重複的掃描配置,我們可以把掃描配置匯出成模板,便於以後的複用。在“掃描配置”模組,點選“匯出為模板”,字尾名是“.scant”

wKiom1M61yHxqvwWAABB8sE5iAM705.jpg

4.掃描指定的URL

4.1.處理偽靜態頁

   偽靜態頁定義:其共同特徵,都是以 html 為字尾名,最後的檔名格式都是 file+ 數字格式;這種型別的頁面經常存在新聞,論壇等。如果訪問這些頁面,發現頁面結構相同,差異的都是裡面的文字內容,如提供不同的新聞內容等,這些頁面就是所謂的“偽靜態頁面”,其實是網站釋出系統動態產生的,由於結果相似,在安全掃描中,沒有必要針對這些頁面每次都進行掃描。

如 autobbs:

http://bbs.pcauto.com.cn/forum-15580.html

http://bbs.pcauto.com.cn/forum-17065.html

方法:在掃描配置>>排除路徑和檔案,增加一個排除的路徑

wKioL1M61x-iV_gDAAD53RLVfD0973.jpg

一般來說,我們需要保留一個html頁來讓它掃描,因此增加一個異常項(例外)

wKiom1M618-id_yIAAFA7_6Gj2s836.jpg

4.2.指定掃描的URL

   先排除所有的URL(如配置正則表示式:.*:82),然後把需要掃描的URL設為異常

wKiom1M62E_ArrTuAAHnmJxEme4352.jpg

4.3.排除檔案型別

掃描配置>>排除路徑和檔案中可設定排除檔案型別,排除一些不掃描的檔案:如swfjpggif

wKioL1M62FCTiBU_AAF-vXYxvnM164.jpg

4.4.冗餘路徑設定

如果我們遇到如下型別的頁面,都是 menu 引數值不同,訪問以後發現出現的是頁面中有不同的超連結: 

wKioL1M62HXROx9UAAB3lXwIjfs287.jpg

這種頁面是屬於業務型別的“冗餘路徑”,需要全面掃描,這時可以開啟“掃描配置”:探索>>探索選項 中 把 “冗餘路徑限制”的引數值設大一點(預設是5)。

也可以針對該目錄建立一個單獨的掃描任務,只掃描該目錄和其下子目錄。

wKiom1M62LqCsKz9AADrhgqguY8333.jpg

4.5.探索的結果檢查

 探索完後,點選“應用程式資料”,檢視“已訪問的URL”,檢查這些已訪問的URL是否已經包含了指定掃描的URL

wKiom1M62RmyI9g6AAHEK3Lf2sw033.jpg

5.掃描結果分析

5.1.安全問題分析

掃描結果會根據安全問題的類別和嚴重級別排序:

點選最下面的節點。

wKioL1M62Xuh83fkAADSiUhHnQY965.jpg

瞭解變體的詳細資訊。可以把變體理解成安全掃描執行的“測試用例”,當實際結果與預期結果一直時,說明應用程式存在這個安全漏洞。

wKiom1M62dHgW0iMAADHtw3bBsc479.jpg

對比測試與原始有什麼不同。一般有差異的地方,appscan會用紅色字型標識。

wKiom1M62fuDqjLTAADjBkbm-kw994.jpg

在瀏覽器中檢視具體的報錯(問題)。

wKioL1M62fTztOQAAACmFRCqLcY813.jpg

5.2.頁面中模擬重現安全問題

檢視“測試”的請求資訊。

wKioL1M62iOQBRGAAAJF2wl1V88428.jpg

在頁面的“新建分類名稱”中輸入 “\'%20having%201=1--”,點選“新增分類”按鈕,能夠儲存成功

wKiom1M62nyweKKPAABie_36hRI843.jpg

6.加強部分

下面是加強部分,不要求掌握,有興趣可瞭解一下:

6.1.瞭解被測網站

如何瞭解到網站具體有哪些頁面呢?這裡我們可以利用 AppScan 的探索(頁面爬行)功能。

  在掃描配置裡面設定了主 URL 以後,工作選單中中依次選擇掃描 - 僅探索。對網站進行探索。一般會讓探索工具執行 10 到 30 分鐘,看該網站具體存在哪些頁面,哪些引數等。這個就可以切換到“應用程式資料”檢視來檢視。

我們一般關心這3個檢視:

·已訪問的URL():AppScan 已經探索到並且進行了分析的頁面

·已過濾掉的URL():AppScan 已經發現,同時根據掃描配置,認為不需要進行安全掃描的頁面。

·中斷連結URL():AppScan 發現了,但是無法訪問到或者訪問出錯的頁面,如 404 頁面不存在,或者 500 伺服器錯誤等。

6.2.制定測試策略模板

確定測試策略,我們主要關心是否存在跨站點指令碼執行和 SQL 注入的問題,則在掃描規則中,我們就可以選擇這兩種型別的規則,其他規則都排除。可以在掃描配置>>測試 >>測試策略中選擇,如下圖所示:

wKiom1M62q7TVH3oAAIvY_U17zM753.jpg

在測試策略中,有多種不同的分組模式,最經常使用的是“嚴重性”,“型別”,“侵入式”、“WASC 威脅分類”等標準,根據不同分組選擇的掃描策略,最後組成一個共同的策略集合。

測試策略選擇步驟如下:

1選擇預設的掃描策略,切換到按照“型別”分類,取消掉“基礎結構”和“應用程式”兩種型別。

說明:把掃描策略置空,沒有選擇任何的掃描策略。在分組型別選擇“型別”分類,型別分類中只有兩種型別:“基礎結構”和 “應用程式”,可以快速全部都取消掉。

wKioL1M62qPT6Bt6AABsmpj5nsU607.jpg

2分組型別,切換到“WASC 威脅分類”,選擇“SQL 注入”和“跨站點指令碼編制”。

wKiom1M62vCSxhsYAAEvIxDlEh8273.jpg

3.分組型別,切換到“型別”,發現這時候“基礎結構”和“應用程式”兩種型別的掃描策略都是選擇上的模式,而且是虛線,說明這兩種型別下均有部分掃描策略被選擇了我們不關心“基礎結構”級別的安全問題,所以在這裡取消“基礎結構”。

wKioL1M62uqTWbhbAACAPVNvz2I475.jpg

4.分組型別,切換到“侵入式”,發現這時候“侵入式”和“非侵入式”兩種型別的掃描策略都是選擇上的模式。“侵入式”會有有比較強的副作用,可能對系統造成傷害,所以一般掃描生產系統的時候,很少選擇。這裡把“侵入式”的用例取消掉。

wKiom1M62z_yQGPmAABpqWwIDKs522.jpg

把選擇好的測試策略,我們可以把它匯出成一個模板,方便以後使用:

wKiom1M620zBmftTAAFLK4AIHkg846.jpg

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 引數,預設的引數值是“不適用”:

wKioL1M624-w0UdNAAFvfU0MeFU935.jpg

像這些頁面,在一個 URL 中進行測試以後,沒有必要在另外一個頁面也進行測試。所以該引數值的變化,可以認為是冗餘頁面,沒有必要進行下一步的重新探索和測試。可以把title 新增到“引數和cookie”: 掃描配置>>引數和cookie>>其它選項—冗餘調整

wKiom1M6287Qjy-oAAG1XLRA3J0970.jpg

取消選擇任何一個選擇框,則表示無論是否含有該引數,無論該引數值是否發生變化,都不認為是新頁面,沒有必要重新測試,而且不應該因為該引數的變化去影響其他引數的測試。

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在遇到記憶體問題之前應當執行的分鐘數。