AppScan 安全漏洞扫描策略
使用 AppScan 進(jìn)行掃描
針對(duì)大型網(wǎng)站的掃描,我們按照戴明環(huán) PDCA 的方法論來(lái)進(jìn)行規(guī)劃和討論,建議 AppScan 使用步驟:計(jì)劃(Plan)、執(zhí)行(Do)、檢查(check)、分析(Analysis and Action)。
下面我們針對(duì)每個(gè)階段,進(jìn)行具體的闡述。
?
準(zhǔn)備階段
AppScan 安裝環(huán)境要求和檢查
為了保證更好的掃描效果,安裝 AppScan 的硬件建議配置如下:
表 1. Rational AppScan 安裝配置要求
| 1 2 3 4 | 處理器 Pentium P4,2.4?GHz 內(nèi)存???????????2?GB RAM 磁盤空間??? ??30?GB 網(wǎng)絡(luò)???????????1?NIC?100?Mbps(具有已配置的 TCP/IP 的網(wǎng)絡(luò)通信)? |
其中,處理器和內(nèi)存建議越大越好,而磁盤空間,建議系統(tǒng)盤(一般是 C 盤)磁盤空間至少保留 10G,如果系統(tǒng)盤磁盤空間比較少,可以考慮把用戶文件等保存在其他盤;如默認(rèn)的用戶文件是:C:\Documents and Settings\Administrator\My Documents\AppScan;可以修改為其他路徑。該路徑可以在菜單欄中依次選擇工具 - 選項(xiàng) - 一般 - 文件位置部分修改。
磁盤要求:修改臨時(shí)文件路徑
有時(shí)候大家會(huì)發(fā)現(xiàn),已經(jīng)把上面的地址都修改到了其他盤,但是在掃描過(guò)程中,還是會(huì)發(fā)現(xiàn) C 盤的空間快速被消耗,分析原因,是因?yàn)?strong>很多臨時(shí)文件都保存在 C 盤,AppScan 中有一個(gè)隱藏的參數(shù) APPSCAN_TEMP 來(lái)設(shè)置臨時(shí)文件位置。在掃描過(guò)程中,如果系統(tǒng)盤空間比較下,可以通過(guò)修改系統(tǒng)變量來(lái)修改到其他硬盤空間。
臨時(shí)文件位置說(shuō)明:描述正常操作期間 AppScan 將其臨時(shí)文件保存到的位置。缺省情況下,AppScan 將其臨時(shí)文件存儲(chǔ)在以下位置:
C:\Documents and Settings\All Users\Application Data\IBM\Rational AppScan\temp
如果需要修改此缺省位置,請(qǐng)按照要求編輯環(huán)境變量 APPSCAN_TEMP 的路徑。(訪問(wèn)環(huán)境變量的方法是,右鍵單擊我的電腦,然后依次選擇屬性 > 高級(jí) > 環(huán)境變量。)
?
注意:在新位置的路徑中絕不能有任何 Unicode 字符。
修改 AppScan 中的臨時(shí)文件:
?
計(jì)劃階段
在計(jì)劃階段,首先明確幾個(gè)問(wèn)題:
掃描策略的選擇
試想,我們現(xiàn)在要掃描的是某個(gè)移動(dòng)公司的網(wǎng)站系統(tǒng),該網(wǎng)站系統(tǒng)提供多個(gè)內(nèi)容頻道,還可以連接到多個(gè)其他移動(dòng)公司網(wǎng)站和業(yè)務(wù)網(wǎng)站,我們本次安全測(cè)試重點(diǎn)關(guān)心的是門戶網(wǎng)站本身和其上面的網(wǎng)上營(yíng)業(yè)廳業(yè)務(wù)。這就是一個(gè)比較明確的測(cè)試目標(biāo)對(duì)象。
然后,確定掃描策略,我們主要關(guān)心該網(wǎng)站是否存在跨站點(diǎn)腳本執(zhí)行和 SQL 注入的問(wèn)題,則在掃描規(guī)則中,我們就可以選擇這兩種類型的規(guī)則,其他規(guī)則都排除。
具體的掃描規(guī)則定制,可以在掃描配置 - 測(cè)試 - 測(cè)試策略中選擇:
?
在測(cè)試策略中,有多種不同的分組模式,最經(jīng)常使用的是“嚴(yán)重性”,“類型”,“侵入式”、“WASC 威脅分類”等標(biāo)準(zhǔn),根據(jù)不同分組選擇的掃描策略,最后組成一個(gè)共同的策略集合。
根據(jù)我們這次掃描的目標(biāo),關(guān)心的是跨站點(diǎn)腳本執(zhí)行和 SQL 注入的問(wèn)題,而且不考慮“基礎(chǔ)結(jié)構(gòu)”級(jí)別的安全問(wèn)題。則就可以首先選擇一個(gè)默認(rèn)的掃描策略,然后全部置空,再選擇
跨站點(diǎn)腳本執(zhí)行和 SQL 注入,最后再去除這兩種掃描策略中和基礎(chǔ)結(jié)果相關(guān)的安全問(wèn)題。
方法如下:
- 選擇缺省的掃描策略,或者把當(dāng)前的掃描策略,切換到按照“類型”分類,取消掉“基礎(chǔ)結(jié)構(gòu)”和“應(yīng)用程序”兩種類型。 ?說(shuō)明:則把掃描策略置空,沒(méi)有選擇任何的掃描策略,指所有分布類型選擇“類型”分類,是因?yàn)轭愋头诸惱锩婧械念愋?#xff0c;只有兩種類型,可以快速全部都取消掉。
?
- 分組類型,切換到“WASC 威脅分類”,選擇“SQL 注入”和“跨站點(diǎn)腳本編制”。
?
?
- 分組類型,切換到“類型”,發(fā)現(xiàn)這時(shí)候“基礎(chǔ)結(jié)構(gòu)”和“應(yīng)用程序”兩種類型的掃描策略都是選擇上的模式,而且是虛線,說(shuō)明這兩種類型下均有部分掃描策略被選擇了。
?
- 我們不關(guān)心“基礎(chǔ)結(jié)構(gòu)”級(jí)別的安全問(wèn)題,所以在這里取消“基礎(chǔ)結(jié)構(gòu)”。
?
?
- 分組類型,切換到“侵入式”類型,下面有“非侵入式”和“侵入式”兩種分類。取消“基礎(chǔ)結(jié)構(gòu)”級(jí)別的測(cè)試。
侵入式的測(cè)試用例,往往因?yàn)橛斜容^強(qiáng)的副作用,可能對(duì)系統(tǒng)造成傷害,所以一般掃描生產(chǎn)系統(tǒng)的時(shí)候,很少選擇。我們可以查看一個(gè) SQL 注入類型的侵入式安全問(wèn)題,在“輸入以查找”輸入框中輸入“SQL”,然后回車查詢。可以看到測(cè)試變體的描述“將參數(shù)值設(shè)置為 Declare/Case SQL 注入攻擊(嘗試關(guān)閉 DB 服務(wù)器)”,則掃描過(guò)程中,會(huì)使用該測(cè)試用例去執(zhí)行嘗試關(guān)閉數(shù)據(jù)庫(kù)的命令,如果該測(cè)試用例執(zhí)行通過(guò),則就關(guān)閉了數(shù)據(jù)庫(kù),則整個(gè)系統(tǒng)就癱瘓!所以,要很慎重的選擇“侵入式的測(cè)試用例”。
其他的在“類型”中,“應(yīng)用程序”類型表示該問(wèn)題的存在是因?yàn)閼?yīng)用程序不嚴(yán)謹(jǐn),代碼存在安全問(wèn)題而造成的,修改方法就是修改原代碼;而“基礎(chǔ)結(jié)構(gòu)”類型,則表示該問(wèn)題是配置問(wèn)題,建議修改系統(tǒng)配置或者安裝最新的補(bǔ)丁(經(jīng)常是中間件或數(shù)據(jù)庫(kù)補(bǔ)丁)。
了解被測(cè)試網(wǎng)站
在對(duì)網(wǎng)站進(jìn)行測(cè)試之前,我們經(jīng)常需要先大概了解下這個(gè)網(wǎng)站,比如該網(wǎng)站使用了哪些技術(shù),提供什么類型的業(yè)務(wù)(功能),網(wǎng)站規(guī)模等。這些都和我們的掃描設(shè)置相關(guān)。如下圖,就是我們經(jīng)常使用的一個(gè)調(diào)查表,了解被測(cè)試系統(tǒng)的基本特點(diǎn)。
表 2. 記錄被測(cè)網(wǎng)站特點(diǎn)
其中,用戶經(jīng)常迷惑的是 URL 數(shù)量,有些時(shí)候,用戶很難評(píng)估出一個(gè)系統(tǒng)的大概頁(yè)面數(shù)量,而按照 AppScan 的工作原理,掃描是針對(duì)頁(yè)面的每個(gè)參數(shù)的,如果頁(yè)面越多,參數(shù)越多,則掃描要運(yùn)行的時(shí)間也就越長(zhǎng),掃描保存成的接過(guò)文件也是越大,更需要進(jìn)行分解。如果一個(gè)掃描任務(wù),本身的已訪問(wèn) URL 數(shù)超過(guò) 5000,評(píng)估的要運(yùn)行的安全測(cè)試用例數(shù)超過(guò) 50,000,則建議進(jìn)行掃描配置的分析,并根據(jù)分析結(jié)果,決定是否需要進(jìn)一步的任務(wù)分解和分工。
那么,如果可以了解到網(wǎng)站具體有哪些頁(yè)面呢?這里我們就可以利用 AppScan 的探索(頁(yè)面爬行)能力。
在掃描配置里面設(shè)置了主 URL 以后,工作菜單中中依次選擇掃描 - 僅探索。對(duì)網(wǎng)站進(jìn)行探索。一般會(huì)讓探索工具運(yùn)行 10 到 30 分鐘,看該網(wǎng)站具體存在哪些頁(yè)面,哪些參數(shù)等。這個(gè)就可以切換到“應(yīng)用程序數(shù)據(jù)”視圖來(lái)查看。
我們一般關(guān)心這幾個(gè)視圖:
- 已訪問(wèn)的 URL():AppScan 已經(jīng)探索到并且進(jìn)行了分析的頁(yè)面
- 已過(guò)濾掉的 URL():AppScan 已經(jīng)發(fā)現(xiàn),同時(shí)根據(jù)掃描配置,認(rèn)為不需要進(jìn)行安全掃描的頁(yè)面。
- 中斷鏈接 URL():AppScan 發(fā)現(xiàn)了,但是無(wú)法訪問(wèn)到或者訪問(wèn)出錯(cuò)的頁(yè)面,如 404 頁(yè)面不存在,或者 500 服務(wù)器錯(cuò)誤等。
偽靜態(tài)頁(yè)面
可以選擇左邊“我的應(yīng)用程序數(shù)據(jù)”中的 URL 樹(shù)下的每一個(gè)節(jié)點(diǎn),察看該節(jié)點(diǎn)已訪問(wèn)的 URL,已過(guò)濾掉的 URL 等。
如在已訪問(wèn)的 URL() 中,我們發(fā)現(xiàn)大量類似如下結(jié)構(gòu)的 HTML 頁(yè)面:
| 1 2 3 | http://www.Test.com//focus/satisfy/file5.html http://www.Test.com//focus/satisfy/file6.html http://www.Test.com/m-zone/news/dgdd/quanbu/bylb/file5.html |
其共同特征,都是以 html 為后綴名,最后的文件名格式都是?file+ 數(shù)字格式;這種類型的頁(yè)面經(jīng)常存在新聞,論壇等。如果訪問(wèn)這些頁(yè)面,發(fā)現(xiàn)頁(yè)面結(jié)構(gòu)相同,差異的都是里面的文本內(nèi)容,如提供不同的新聞內(nèi)容等,這些頁(yè)面就是所謂的“偽靜態(tài)頁(yè)面”,其實(shí)是網(wǎng)站發(fā)布系統(tǒng)動(dòng)態(tài)產(chǎn)生的,由于結(jié)果相似,在安全掃描中,沒(méi)有必要針對(duì)這些頁(yè)面每次都進(jìn)行掃描。如針對(duì)每個(gè)目錄下面存在的 file+ 數(shù)字格式的頁(yè)面,我們就可以設(shè)置正則表達(dá)式來(lái)過(guò)濾,比如,在掃描配置 - 排除路徑和文件中
?
排除所有該類型的頁(yè)面;.*file\d+.html
增加“例外”,對(duì)該類型的頁(yè)面只掃描 file1.html 和 file20.html
經(jīng)常存在的其他類似頁(yè)面,還有 news1.html、content200.html 等類型,采用方法類似。
業(yè)務(wù)類型的“冗余路徑”
和“偽靜態(tài)頁(yè)面”對(duì)應(yīng)的有另外一種動(dòng)態(tài)頁(yè)面,這些頁(yè)面按照默認(rèn)的掃描規(guī)則,會(huì)被自動(dòng)過(guò)濾,但是根據(jù)真實(shí)的業(yè)務(wù)場(chǎng)景,這些頁(yè)面確實(shí)不能被過(guò)濾的,如訪問(wèn) demo.testfire.net 時(shí)候在“已過(guò)濾 URL”內(nèi)會(huì)顯示有如下的 URL 地址,過(guò)濾原因都是“路徑限制”:
| 1 2 3 | 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 |
選擇 URL 地址,鼠標(biāo)右鍵“在瀏覽器中顯示”,會(huì)發(fā)現(xiàn)這里顯示的頁(yè)面內(nèi)容完全不一樣,和上面的“偽靜態(tài)頁(yè)面”正好相反,這些參數(shù)相同,參數(shù)值不同的動(dòng)態(tài)頁(yè)面,是真正的業(yè)務(wù)頁(yè)面,是不能過(guò)濾掉;如果過(guò)濾,則會(huì)很多后續(xù)的業(yè)務(wù)頁(yè)面無(wú)法發(fā)現(xiàn)。那這些頁(yè)面為什么會(huì)被過(guò)濾了呢?按照什么樣的規(guī)則被過(guò)濾掉的?
在 AppScan 中,默認(rèn)情況下是有一個(gè)“冗余路徑限制”(在“掃描配置 - 探索選型 - 冗余路徑限制”),默認(rèn)對(duì)于冗余的頁(yè)面,最多掃描 5 次,關(guān)鍵的問(wèn)題是,什么頁(yè)面被 Appscan 認(rèn)為是冗余頁(yè)面呢 ?
簡(jiǎn)單說(shuō):
| 1 | http://www.Test.com/default.aspx?content=inside_community.htmhttp://www.Test.com/default.aspx?content=inside_press.htm |
Appscan 是根據(jù)“?”號(hào)來(lái)分隔的,如果 ? 號(hào)前面的內(nèi)容都相同,則就被認(rèn)為是冗余頁(yè)面,所以上面的頁(yè)面就是冗余頁(yè)面了。
遇到這樣情況的頁(yè)面,最多被訪問(wèn) 5 次。而這 5 次,具體是使用了哪些參數(shù),是隨機(jī)的,具體訪問(wèn)到的頁(yè)面也會(huì)在“應(yīng)用程序數(shù)據(jù)”視圖的“已訪問(wèn)的 URL”中查看:
| 1 | http://www.Test.com/default.aspx?content=business.htmhttp://www.Test.com/default.aspx?content=business_lending.htmhttp://www.Test.com/default.aspx?content=inside_contact.htm |
可是,在本例中 content 參數(shù)值不同的時(shí)候,其實(shí)根據(jù)業(yè)務(wù)邏輯,不應(yīng)該算作“冗余頁(yè)面的”,而按照配置,也會(huì)被自動(dòng)過(guò)濾了,遇到這種情況,就需要考慮增加“冗余路徑限制”,如設(shè)置為 20 或者 50。以可以更多次訪問(wèn)這些頁(yè)面。
這些情況經(jīng)常存在于跳轉(zhuǎn)參數(shù)等情況。
順便備注下,“冗余路徑限制”,功能設(shè)置的目的是為了處理類似論壇 BBS 等頁(yè)面,只有文本內(nèi)容不同,頁(yè)面架構(gòu)完全相同的頁(yè)面:如
| 1 2 3 | http://www.Test.com/showthread.php?id=1 http://www.Test.com/showthread.php?id=2 http://www.Test.com/showthread.php?id=3 |
而我們?cè)跍y(cè)試 demo.testfire.net 時(shí)候會(huì)發(fā)現(xiàn)每次的安全測(cè)試結(jié)果都可能有差別,一個(gè)很大的原因就是每次訪問(wèn)的頁(yè)面是不同的,就是這個(gè)設(shè)置的影響。
分析重復(fù)的“腳本參數(shù)”
在上面的步驟中,分析了“偽靜態(tài)頁(yè)面”,對(duì)其應(yīng)該通過(guò)“排除路徑或者文件名”的方法設(shè)置排除規(guī)則;而對(duì)于“業(yè)務(wù)類型的冗余路徑”,則需要通過(guò)增加“冗余路徑顯示”個(gè)數(shù)等的方法進(jìn)行擴(kuò)充,以掃描到這些 URL。我們?cè)谶@個(gè)步驟來(lái)分析另外一種參數(shù),腳本參數(shù)。
在“我的應(yīng)用程序數(shù)據(jù)”樹(shù)狀結(jié)構(gòu)下,鼠標(biāo)選擇目錄以后,在右邊視圖中選擇“腳本參數(shù)”,然后查看是否存在不同頁(yè)面(URL) 存在相同或者類似參數(shù)的情況:如下圖,在不同 URL 中,都存在 kbKey 參數(shù),默認(rèn)的參數(shù)值是“請(qǐng)輸入您要搜索的問(wèn)題”:
?
訪問(wèn)這些 URL,發(fā)現(xiàn)每個(gè)頁(yè)面內(nèi)都包含了一個(gè)搜索功能,這就是為什么在不同頁(yè)面都發(fā)現(xiàn)了該參數(shù)。而從業(yè)務(wù)角度,這些搜索頁(yè)面在一個(gè) URL 中進(jìn)行測(cè)試以后,沒(méi)有必要在另外一個(gè)頁(yè)面也進(jìn)行測(cè)試。而且該參數(shù)值的變化,可以認(rèn)為是冗余頁(yè)面,沒(méi)有必要進(jìn)行下一步的重新探索和測(cè)試。這可以通過(guò)上圖中,選擇該參數(shù)后,鼠標(biāo)右鍵,選擇“添加到‘參數(shù)和 Cookie’選項(xiàng)卡中的列表”來(lái)實(shí)現(xiàn)。選擇后彈出下面的頁(yè)面:
?
?
?
在該頁(yè)面中,點(diǎn)擊“其他選項(xiàng)-冗余調(diào)整”,取消選擇任何一個(gè)選擇框,則表示無(wú)論是否含有該參數(shù),無(wú)論該參數(shù)值是否發(fā)生變化,都不認(rèn)為是新頁(yè)面,沒(méi)有必要重新測(cè)試,而且不應(yīng)該因?yàn)樵搮?shù)的變化去影響其他參數(shù)的測(cè)試。
我們知道,AppScan 中的測(cè)試,是針對(duì)頁(yè)面的每個(gè)參數(shù)進(jìn)行的,而且一個(gè)參數(shù)值的變化會(huì)要求重新測(cè)試其他的參數(shù),所以該設(shè)置,可以大大減少測(cè)試用例數(shù)。
?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 選框?? 選中時(shí) ... 只要添加或除去此參數(shù)?/cookie,便再次探索 URL。?? 在探索階段,如果兩個(gè) URL 的唯一區(qū)別在于一個(gè)包括此參數(shù),而另一個(gè)不包括此參數(shù),那么將其視為不同 URL,并且對(duì)兩者都進(jìn)行探索。 例如,如果是以下兩個(gè) URL,兩者都將進(jìn)行探索: ...page.jsp ...page.jsp?thisParam=Value 如果您取消選中此復(fù)選框,那么在此情況下,將僅發(fā)送一個(gè)請(qǐng)求,而其他請(qǐng)求將被廢棄。 只要此參數(shù)?/cookie 的值更改,便再次探索 URL。?? 在探索階段,如果兩個(gè) URL 的唯一區(qū)別在于此參數(shù)?/cookie 的值,那么將其視為不同 URL,并且對(duì)兩者都進(jìn)行探索。 例如,如果是以下兩個(gè) URL,兩者都將進(jìn)行探索: ...page.jsp?thisParam=Value1 ...page.jsp?thisParam=Value2 如果您取消選中此復(fù)選框,那么在此情況下,將僅發(fā)送一個(gè)請(qǐng)求,而其他請(qǐng)求將被廢棄。 只要添加或除去此參數(shù)?/cookie,便重復(fù)所有相鄰參數(shù) 在測(cè)試階段,如果兩個(gè) URL 的唯一區(qū)別在已添加或除去了此參數(shù),那么將其視為不同 URL,并且再次測(cè)試相鄰參數(shù)。 ?/cookie測(cè)試 例如,如果是以下兩個(gè) URL,將為相鄰參數(shù)生成兩組完整的測(cè)試,每個(gè) URL 一組。 ...page.jsp?adjacentParam=<test_this> ...page.jsp?adjacentParam=<test_this>&thisParam=Value 如果您取消選中此復(fù)選框,將為相鄰參數(shù)僅生成一組測(cè)試。 只要此參數(shù)?/cookie 的值更改,便重復(fù)所有相鄰參數(shù)????? 在測(cè)試階段,如果兩個(gè) URL 的唯一區(qū)別在于此參數(shù)?/cookie 的值,那么將其視為不同 URL,并且再次測(cè)試相鄰參數(shù)。 /cookie測(cè)試 例如,如果是以下兩個(gè) URL,將為相鄰參數(shù)生成兩組完整的測(cè)試,每個(gè) URL 一組。 ????? ...page.jsp?adjacentParam=<test_this>&thisParam=Value1 ?? ...page.jsp?adjacentParam=<test_this>&thisParam=Value2 如果您取消選中此復(fù)選框,將為相鄰參數(shù)僅生成一組測(cè)試。 |
查看每個(gè)目錄頁(yè)面?zhèn)€數(shù)
如果一個(gè)掃描任務(wù),本身的已訪問(wèn) URL 數(shù)超過(guò) 5000,評(píng)估的要運(yùn)行的安全測(cè)試用例數(shù)超過(guò) 20,000,則建議進(jìn)行掃描配置的分析,并根據(jù)分析結(jié)果,決定是否需要進(jìn)一步的任務(wù)分解和分工。
我們?cè)凇?strong>我的應(yīng)用程序數(shù)據(jù)”樹(shù)狀結(jié)構(gòu)下,鼠標(biāo)選擇目錄以后,在右邊視圖中選擇“已訪問(wèn)的 URL()”,記錄 URL 數(shù)目,如果該目錄 URL 數(shù)目比較大(超過(guò) 500)則可以考慮為該目錄單獨(dú)建立一個(gè)掃描任務(wù),只掃描該目錄下面的鏈接。
執(zhí)行階段
根據(jù)在“計(jì)劃階段”確定的掃描策略,和進(jìn)行的掃描設(shè)置,重新進(jìn)行探索(掃描菜單依次選擇:重新掃描 - 重新探索);后繼續(xù)分析頁(yè)面數(shù)和測(cè)試用例數(shù)目,如果控制頁(yè)面數(shù) 5000 個(gè)以內(nèi),測(cè)試用例數(shù) 20,000 個(gè)以內(nèi),則可以直接進(jìn)行掃描;如果沒(méi)有,建議繼續(xù)分析,優(yōu)化掃描配置。
分階段測(cè)試
AppScan 的掃描過(guò)程分為“探索”和“測(cè)試”兩個(gè)階段,默認(rèn)情況下,使用的是完全掃描模式,即是邊探索邊測(cè)試的。如果網(wǎng)站比較大,建議考慮先探索后測(cè)試的模式。
如當(dāng) URL 達(dá)到 5000,需要進(jìn)行的測(cè)試達(dá)到 50000 的時(shí)候,可以暫停掃描,手工停止探索,選擇“繼續(xù)僅測(cè)試”。對(duì)已經(jīng)發(fā)現(xiàn)和分析的頁(yè)面進(jìn)行測(cè)試,測(cè)試完畢,再來(lái)選擇“繼續(xù)僅探索”,即:
繼續(xù)僅探索 --- 繼續(xù)僅測(cè)試—繼續(xù)僅探索 - 僅測(cè)試的一個(gè)循環(huán)過(guò)程。
在這個(gè)過(guò)程,一個(gè)階段結(jié)束以后,建議查看下 .Scan 文件的大小,如果大小超過(guò)了 500M,則建議考慮任務(wù)分解,可以根據(jù)目錄把一個(gè)掃描任務(wù)分解為多個(gè),或者根據(jù)掃描策略來(lái)進(jìn)行分解。
該方法是利用了 AppScan 掃描過(guò)程中,探索測(cè)試可以分離,而且支持掃描過(guò)程中斷后繼續(xù)掃描的特性。
按照業(yè)務(wù)分解掃描任務(wù)
在實(shí)際工作中,我們掃描的一個(gè)大型網(wǎng)站,往往包含多個(gè)頻道,而每個(gè)頻道可能需要的掃描配置都不同,這些配置甚至互相沖突。如一個(gè)網(wǎng)站的提供了 BBS 論壇功能:
| 1 2 | http://www.Test.com/WWW.TEST.COM/showthread?channel=1&thread=1001 http://www.Test.com/WWW.TEST.COM/showthread?channel=30&thread=2001 |
對(duì)于這樣的頁(yè)面,訪問(wèn)后發(fā)現(xiàn)頁(yè)面結(jié)構(gòu)相同,只是文本內(nèi)容不同,則應(yīng)該使用“冗余路徑限制”參數(shù),控制掃描次數(shù),沒(méi)有必要多次掃描。
同時(shí),該網(wǎng)站的一個(gè)服務(wù)頻道存在如下的頁(yè)面:
| 1 2 | http://www.Test.com/default.aspx?content=inside_executives.htm http://www.Test.com/default.aspx?content=privacy.htm |
即上面提到的業(yè)務(wù)類型的“冗余路徑”,應(yīng)該多次掃描,配置上要求增大“冗余路徑限制”參數(shù)。
在這種情況下,就很有必要根據(jù)業(yè)務(wù)分別建立掃描任務(wù),每個(gè)任務(wù)采用不同的掃描配置。
檢查階段
在掃描執(zhí)行過(guò)程中,需要檢查,看是否存在下面的情況:
- 提示網(wǎng)絡(luò)連接不上,或者提示部分頁(yè)面無(wú)法打開(kāi)。則檢查是否是掃描速度過(guò)快,服務(wù)器不能承受不了,根據(jù)情況修改掃描配置 - 連接 - 通信和代理,增加“超時(shí)”數(shù),并考慮減少“并發(fā)線程數(shù)”,以允許更長(zhǎng)時(shí)間的等待頁(yè)面影響并減少對(duì)服務(wù)器的訪問(wèn)連接數(shù)。
- 發(fā)現(xiàn)掃描出的安全問(wèn)題,包含我們不關(guān)心的安全隱患,則取消掉這些規(guī)則。如發(fā)現(xiàn)了一個(gè)安全隱患,類型是“SQL 注入文件寫(xiě)入(需要用戶驗(yàn)證)”,該問(wèn)題是需要用戶根據(jù)提示來(lái)檢查的,并且是針對(duì) SQL 數(shù)據(jù)庫(kù)的,如果我們使用的數(shù)據(jù)庫(kù)不是 SQL 數(shù)據(jù)庫(kù),或用戶確認(rèn)后沒(méi)有發(fā)現(xiàn)線索,則就可以在掃描配置 - 測(cè)試 - 測(cè)試策略中取消選擇該策略。
- 執(zhí)行“計(jì)劃階段”的檢查,看是否還存在“偽靜態(tài)頁(yè)面”,“業(yè)務(wù)類型的冗余路徑”等,如果存在,則調(diào)整掃描配置。
分析階段
在分析階段,結(jié)合業(yè)務(wù)特點(diǎn),檢查是否掃描范圍,分析掃描結(jié)果,并針對(duì)掃描出來(lái)的問(wèn)題,進(jìn)行分析,產(chǎn)生多種類型的報(bào)告等。
掃描結(jié)果檢查
掃描結(jié)束后,建議切換到“應(yīng)用程序數(shù)據(jù)”視圖中,對(duì)頁(yè)面進(jìn)行分析,檢查是否核心頁(yè)面都被測(cè)試到了。重點(diǎn)檢查如下部分:
報(bào)告分析
我們需要對(duì)報(bào)告進(jìn)行對(duì)比分析或者報(bào)告匯總合并,方法如下:
案例分析
工作中遇到一個(gè)案例,使用 AppScan 掃描掃描了 3*24 小時(shí),掃描的 scan 文件已經(jīng)達(dá)到 9G;掃描還在持續(xù)進(jìn)行中,總體進(jìn)度完成了 30%,可以想象掃描速度已經(jīng)很緩慢,還需要多長(zhǎng)時(shí)間才可以完成掃描?掃描完成以后如此大的結(jié)果文件是否可以成功打開(kāi)和修改保存 ?
按照我的經(jīng)驗(yàn),如果掃描結(jié)果文件大于 1G,那就很有必要立即停止掃描,進(jìn)行配置分析。我們的分析過(guò)程如下:
| 1 2 | http://www.Test.com//focus/satisfy/file5.html http://www.Test.com//focus/satisfy/file6.html |
在掃描配置 - 排除路徑和文件中:
排除所有該類型的頁(yè)面;.*file\d+.html
增加“例外”,對(duì)該類型的頁(yè)面只掃描 file1.html 和 file20.html
6.同時(shí),發(fā)現(xiàn)了 swf 文件,應(yīng)該不準(zhǔn)備掃描 Flash,所以在“排除文件類型”中,設(shè)置根據(jù)后綴名排除 swf 文件。
7.發(fā)現(xiàn)
| 1 | http://www.Test.com/service |
目錄下存在大量如下類型的頁(yè)面,都是 menu 參數(shù)值不同,訪問(wèn)以后發(fā)現(xiàn)出現(xiàn)的是頁(yè)面中有不同的超鏈接:
| 1 2 3 | http://www.Test.com/service/Business.do?menu=Query http://www.Test.com/service/Business.do?menu=Open http://www.Test.com/service/Business.do?menu=Service |
確認(rèn)該頁(yè)面是業(yè)務(wù)類型的“冗余路徑”,應(yīng)該全面掃描,則需要把“冗余路徑設(shè)置”調(diào)整為比較大的參數(shù),同時(shí)該頻道是網(wǎng)上營(yíng)業(yè)廳頻道,也要求用戶先登錄。所以針對(duì)該目錄建立一個(gè)單獨(dú)的掃描任務(wù),只掃描該目錄和其下子目錄。
8.分析發(fā)現(xiàn) index.jsp 在多個(gè)目錄下出現(xiàn),而且每次出現(xiàn)都有兩種格式,即沒(méi)有參數(shù)和有固定的三個(gè)參數(shù),每次的參數(shù)值都相同。如:
| 1 2 3 | http://www.Test.com//rdwd/jfmz/jifen/index.htmlhttp://www.Test.com//rdwd/jfmz/jifen/index.html?queryType=common&applyArea=010 ????&kbKey=?請(qǐng)輸入您要搜索的問(wèn)題http://www.Test.com//rdwd/txl/rdwdznyd/index.htmlhttp://www.Test.com//rdwd/txl/rdwdznyd/index.html?queryType=common&applyArea=010 ????&kbKey=?請(qǐng)輸入您要搜索的問(wèn)題 |
訪問(wèn)上面的頁(yè)面,發(fā)現(xiàn)內(nèi)容相同,則說(shuō)明是否帶這三個(gè)參數(shù)不會(huì)影響探索發(fā)現(xiàn)更多的頁(yè)面,則可以設(shè)置這三個(gè)參數(shù)每次是否出現(xiàn),是否有不同值都可以認(rèn)為是同一個(gè)頁(yè)面。
設(shè)置方法:掃描配置中依次選擇“參數(shù)和 Cookie”來(lái)實(shí)現(xiàn)。然后增加 queryType,applyArea,kbKey 三個(gè)參數(shù),均設(shè)置為“是否有參數(shù)”、“參數(shù)是否變化”不影響測(cè)試的模式。
9.切換到“應(yīng)用程序視圖”,分析“中斷鏈接”,發(fā)現(xiàn)一些頁(yè)面存在“范圍內(nèi)容超過(guò)最大容量的”的情況,在 IE 瀏覽器中直接訪問(wèn),發(fā)現(xiàn)這些頁(yè)面存在死循環(huán),頁(yè)面內(nèi)容無(wú)限遞增。則在掃描配置 - 排除路徑和文件中排除這些頁(yè)面。
10.根據(jù)以上設(shè)置,建立了兩個(gè)掃描任務(wù),均掃描“SQL 注入”和“跨站點(diǎn)腳本編制”。重新探索后,頁(yè)面總數(shù)減少到 4000 多,測(cè)試用例數(shù)減少到接近 50,000,兩個(gè)掃描任務(wù)均在 8 個(gè)小時(shí)內(nèi)完成。
總結(jié)
以上是生活随笔為你收集整理的AppScan 安全漏洞扫描策略的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: RPA-艺赛旗iS-RPA Studio
- 下一篇: 中文版-Because He Lives