安全測(cè)試應(yīng)該是測(cè)試中非常重要的一部分,但他常常最容易被忽視掉。
盡管國(guó)內(nèi)經(jīng)常出現(xiàn)各種安全事件,但沒(méi)有真正的引起人們的注意。不管是開發(fā)還是測(cè)試都不太關(guān)注產(chǎn)品的安全。當(dāng)然,這也不能怪我們苦B的“民工兄弟”。因?yàn)楣镜乃o我們的時(shí)間與精力只要求我們對(duì)產(chǎn)品的功能的實(shí)現(xiàn)以及保證功能的正常運(yùn)行。一方面出于僥幸心理。誰(shuí)沒(méi)事會(huì)攻擊我?
關(guān)于安全測(cè)試方面的資料也很少,很多人所知道的就是一本書,一個(gè)工具。
一本書值《web安全測(cè)試》,這應(yīng)該是安全測(cè)試領(lǐng)域維數(shù)不多又被大家熟知的安全測(cè)試書,我曾看過(guò)前面幾個(gè)章節(jié),唉,鄙視一下自己,做事總喜歡虎頭蛇尾。寫得非常好,介紹了許多安全方面的工具和知識(shí)。我覺(jué)得就算你不去做專業(yè)的安全開發(fā)\測(cè)試人員。起碼可以開闊你的視野,使你在做開發(fā)或測(cè)試時(shí)能夠考慮到產(chǎn)品安全方面的設(shè)計(jì)。防患于未然總是好的,如果你想成為一個(gè)優(yōu)秀的人。
一個(gè)工具,其實(shí)本文也只是想介紹一下,這個(gè)工具----AappScan,IBM的這個(gè)web安全掃描工具被許多人熟知,相關(guān)資料也很多,因?yàn)槲乙裁嗣钠っ?,所以也?lái)人說(shuō)兩句,呵呵!說(shuō)起sappScan,對(duì)它也頗有些感情,因?yàn)?,上一?a target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; ">工作的時(shí)候,我摸過(guò)于測(cè)試相關(guān)的許多工具,AappScan是其它一個(gè),當(dāng)時(shí)就覺(jué)得這工具這么強(qiáng)大,而且還這么傻瓜?。_^! 于是,后面在面試的簡(jiǎn)歷上寫了這個(gè)工具,應(yīng)聘現(xiàn)在的這家公司,幾輪面試下來(lái)都問(wèn)到過(guò)這個(gè)工具,因?yàn)楝F(xiàn)在這家公司一直在使用這個(gè)工具做安全方面的掃描。我想能來(lái)這家公司和我熟悉AappScan應(yīng)該有一點(diǎn)點(diǎn)的關(guān)系吧!呵呵
AappScan下載與安裝
IBM官方下載;http://download2.boulder.ibm.com ... 2-AppScan_Setup.exe
本連接為7.8 簡(jiǎn)體中文版本的
破解補(bǔ)丁;http://www.vdisk.cn/down/index/4760606A4753
破解補(bǔ)丁中有相應(yīng)的注冊(cè)機(jī)與破解步驟,生成注冊(cè)碼做一下替換就OK了,這里不細(xì)說(shuō)。

AppScan其實(shí)是一個(gè)產(chǎn)品家族,包括眾多的應(yīng)用安全掃描產(chǎn)品,從開發(fā)階段的源代碼掃描的AppScan source edition,到針對(duì)WEB應(yīng)用進(jìn)行快速掃描的AppScan standard edition.以及進(jìn)行安全管理和匯總整合的AppScan enterprise Edition等,我們經(jīng)常說(shuō)的AppScan就是指的桌面版本的AppScan,即AppScan standard edition.其安裝在Windows操作系統(tǒng)上,可以對(duì)網(wǎng)站等WEB應(yīng)用進(jìn)行自動(dòng)化的應(yīng)用安全掃描和測(cè)試。
使用AppScan來(lái)進(jìn)行掃描
我們按照PDCA的方法論來(lái)進(jìn)行規(guī)劃和討論; 建議的AppScan使用步驟:PDCA: Plan,Do,check, Action and Analysis.
計(jì)劃階段:明確目的,進(jìn)行策略性的選擇和任務(wù)分解。
1)明確目的:選擇合適的掃描策略
2)了解對(duì)象:首先進(jìn)行探索,了解網(wǎng)站結(jié)構(gòu)和規(guī)模
3)確定策略:進(jìn)行對(duì)應(yīng)的配置
a)按照目錄進(jìn)行掃描任務(wù)的分解
b)按照掃描策略進(jìn)行掃描任務(wù)的分解
執(zhí)行階段:一邊掃描一遍觀察
4)進(jìn)行掃描
5)先爬后掃(繼續(xù)僅測(cè)試)
檢查階段(Check)
6)檢查和調(diào)整配置
結(jié)果分析(Analysis)
7)對(duì)比結(jié)果
8)匯總結(jié)果(整合和過(guò)濾)
AppScan的工作原理
當(dāng)我們單擊“掃描”下面的小三角,可以出現(xiàn)如下的三個(gè)選型“繼續(xù)完全掃描”,“繼續(xù)僅探索”,“繼續(xù)僅測(cè)試“,有木有?什么意思? 理解了這個(gè)地方,就理解了AppScan的工作原理,我們慢慢展開:
還沒(méi)有正式開始,所以先不管“繼續(xù)“,直接來(lái)討論’完全掃描”,“僅探索”,“僅測(cè)試”三個(gè)名詞:
AppScan是對(duì)網(wǎng)站等WEB應(yīng)用進(jìn)行安全攻擊,通過(guò)真刀真槍的攻擊,來(lái)檢查網(wǎng)站是否存在安全漏洞;既然是攻擊,肯定要有明確的攻擊對(duì)象吧,比如北約現(xiàn)在的對(duì)象就是卡扎菲上校還有他的軍隊(duì)。對(duì)網(wǎng)站來(lái)說(shuō),一個(gè)網(wǎng)站存在的頁(yè)面,可能成千上萬(wàn)。每個(gè)頁(yè)面也都可能存在多個(gè)字段(參數(shù)),比如一個(gè)登陸界面,至少要輸入用戶名和密碼吧,這就是一個(gè)頁(yè)面存在兩個(gè)字段,你提交了用戶名密碼等登陸信息,網(wǎng)站總要有地方接受并且檢查是否正確吧,這就可能存在一個(gè)新的檢查頁(yè)面。這里的每個(gè)頁(yè)面的每個(gè)參數(shù)都可能存在安全漏洞,所有都是被攻擊對(duì)象,都需要來(lái)檢查。
這就存在一個(gè)問(wèn)題,你領(lǐng)命來(lái)檢查一個(gè)網(wǎng)站的安全性,這個(gè)網(wǎng)站有多少個(gè)頁(yè)面,有多少個(gè)參數(shù),頁(yè)面之間如何跳轉(zhuǎn),你可能很不明確,如何知道這些信息? 看起來(lái)很復(fù)雜,盤根錯(cuò)節(jié);那就更需要找到那個(gè)線索,提綱挈領(lǐng); 那就想一想,訪問(wèn)一個(gè)網(wǎng)站的時(shí)候,我們需要知道的最重要的信息是哪個(gè)?網(wǎng)站主頁(yè)地址吧? 從網(wǎng)站地址開始,很多其他頻道,其他頁(yè)面都可以鏈接過(guò)去,對(duì)不對(duì),那么可不可以有種技術(shù),告訴了它網(wǎng)站的入口地址,然后它“順藤摸瓜”,找出其他的網(wǎng)頁(yè)和頁(yè)面參數(shù)? OK,這就是”爬蟲” 技術(shù),具體說(shuō),是”網(wǎng)站爬蟲“,其利用了網(wǎng)頁(yè)的請(qǐng)求都是用http協(xié)議發(fā)送的,發(fā)送和返回的內(nèi)容都是統(tǒng)一的語(yǔ)言HTML,那么對(duì)HTML語(yǔ)言進(jìn)行分析,找到里面的參數(shù)和鏈接,紀(jì)錄并繼續(xù)發(fā)送之,最終,找到了這個(gè)網(wǎng)站的眾多的頁(yè)面和目錄。這個(gè)能力AppScan就提供了,這里的術(shù)語(yǔ)叫“探索”,explorer,就是去發(fā)現(xiàn),去分析,了解未知的,記錄。
在使用AppScan的時(shí)候,要配置的第一個(gè)就是要檢查的網(wǎng)站的地址,配置了以后,AppScan就會(huì)利用“探索”技術(shù)去發(fā)現(xiàn)這個(gè)網(wǎng)站存在多少個(gè)目錄,多少個(gè)頁(yè)面,頁(yè)面中有哪些參數(shù)等,簡(jiǎn)單說(shuō),了解了你的網(wǎng)站的結(jié)構(gòu)。
“探索”了解了,測(cè)試的目標(biāo)和范圍就大致確定了,然后呢,利用“軍火庫(kù)”,發(fā)送導(dǎo)彈,進(jìn)行安全攻擊,這個(gè)過(guò)程就是“測(cè)試”;針對(duì)發(fā)現(xiàn)的每個(gè)頁(yè)面的每個(gè)參數(shù),進(jìn)行安全檢查,檢查的彈藥就來(lái)自AppScan的掃描規(guī)則庫(kù),其類似殺毒軟件的病毒庫(kù),具體可以檢查的安全攻擊類型都在里面做好了,我們?nèi)ナ褂眉纯伞?/p>
那么什么是“完全測(cè)試呢”,完全測(cè)試就是把上面的兩個(gè)步驟整合起來(lái),“探索”+ “測(cè)試”;在安全測(cè)試過(guò)程中,可以先只進(jìn)行探索,不進(jìn)行測(cè)試,目的是了解被測(cè)的網(wǎng)站結(jié)構(gòu),評(píng)估范圍; 然后選擇“繼續(xù)僅測(cè)試”,只對(duì)前面探索過(guò)的頁(yè)面進(jìn)行測(cè)試,不對(duì)新發(fā)現(xiàn)的頁(yè)面進(jìn)行測(cè)試。“完全測(cè)試”就是把兩個(gè)步驟結(jié)合在一起,一邊探索,一邊測(cè)試。
上圖更容易理解:

步驟1:探索(爬行,爬網(wǎng))
步驟2:真對(duì)找到的頁(yè)面進(jìn)行測(cè)試,生成安全攻擊
AppScan掃描大型網(wǎng)站
經(jīng)常有客戶抱怨,說(shuō)AppScan無(wú)法掃描大型的網(wǎng)站,或者是掃描接近完成時(shí)候無(wú)法保存,甚至保存后的結(jié)果文件下次無(wú)法打開?;同時(shí)大家又都很奇怪,作為一款業(yè)界出名的工具,如此的脆弱?是配置使用不當(dāng)還是自己不太了解呢?我們今天就一起來(lái)討論下AppScan掃描大型網(wǎng)站會(huì)遇到的問(wèn)題以及應(yīng)對(duì)。
什么叫大型網(wǎng)站,顧名思義,網(wǎng)站規(guī)模大,具體說(shuō)是頁(yè)面很多,內(nèi)容很全。比如www.sina.com.cn,比如http://music.10086.cn/,都包括上萬(wàn)個(gè)頁(yè)面。而且除了這個(gè),可能還有一個(gè)特點(diǎn)---頁(yè)面參數(shù)多,即要填寫的地方多,和用戶的交互多;比如一個(gè)網(wǎng)站如果都是靜態(tài)頁(yè)面(.html,.jpg等),沒(méi)有讓用戶輸入的地方,那么可以利用,可以作為攻擊點(diǎn)的地方也就不多。如果頁(yè)面到處都是有輸入,有查詢,要求用戶來(lái)參與的,你輸入的越多,可能泄露的信息也越多,可能被別人利用的攻擊點(diǎn)也就越多,所以和頁(yè)面參數(shù)也是有關(guān)系的。AppScan聲稱測(cè)試用例的時(shí)候,也是根據(jù)每個(gè)參數(shù)來(lái)產(chǎn)生的,簡(jiǎn)單說(shuō),如果一個(gè)參數(shù),對(duì)應(yīng)了200個(gè)安全攻擊測(cè)試用例,那么一個(gè)登陸界面至少就對(duì)應(yīng)400個(gè)了,為什么?登陸界面至少有用戶名和密碼兩個(gè)字段吧? 每個(gè)字段200個(gè)攻擊用例。
這個(gè)簡(jiǎn)單吧,還可以更復(fù)雜:如果遇到下面的兩個(gè)地址,那要掃描多少次呢?
http://www.cnblogs.com/fnng/focus/satisfy/file.jsp?id=1
http://www.cnblogs.com/fnng/focus/satisfy/file.jsp?id=2
上面的兩個(gè)地址有類似的,“?”號(hào)以前的URL地址完全一樣,”?”號(hào)后面帶的參數(shù)不同,這種可以認(rèn)為是重復(fù)頁(yè)面,那么對(duì)于重復(fù)頁(yè)面,是否要重復(fù)測(cè)試呢?
這取決于“冗余路徑設(shè)置”,默認(rèn)的是最多測(cè)試5次;即,這種類型URL出現(xiàn)的前5次,那么就是要測(cè)試1000個(gè)攻擊用例了。
如果再繼續(xù)修改下:遇到下面的URL呢
http://www.cnblogs.com/fnng/focus/satisfy/file.jsp?id=1&Item=open
http://www.cnblogs.com/fnng/focus/satisfy/file.jsp?id=2&Item=close
每個(gè)URL里面都有2個(gè)參數(shù),測(cè)試的次數(shù)就更多了。想象下,如果這個(gè)網(wǎng)頁(yè)里面的參數(shù)如果是10個(gè),或者更多的呢?比如很多網(wǎng)站提交注冊(cè)信息的時(shí)候,要填寫的內(nèi)容足夠多吧?
要進(jìn)行的安全測(cè)試用例也就隨之不斷增加…
這是網(wǎng)站規(guī)模的影響,還有一個(gè)問(wèn)題,就出在“每個(gè)參數(shù),發(fā)送200個(gè)安全測(cè)試用例”這個(gè)假設(shè)上。這個(gè)假設(shè)的前提來(lái)源于哪里? 來(lái)源于我們選擇的掃描規(guī)則庫(kù)。即你關(guān)心那些安全威脅,這個(gè)需要在測(cè)試策略里面選擇。同樣來(lái)參照殺毒軟件,你會(huì)用殺毒軟件來(lái)查找一些專用的病毒嗎,比如CIH,比如木馬;應(yīng)用安全掃描也是一樣的道理,如果有明確的安全指標(biāo)或者安全規(guī)則范圍,那么就選擇之。這些可能來(lái)源于企業(yè)的規(guī)范,來(lái)源于政府的法律法規(guī)。就要根據(jù)你的理解,在這里選擇。

很多時(shí)候,我們也很難在最開始的階段,就把掃描規(guī)范制定下來(lái),按照項(xiàng)目經(jīng)理們的口頭禪“漸進(jìn)明細(xì)”,“滾動(dòng)式規(guī)劃”,在實(shí)踐中,更多時(shí)候也是摸著石頭過(guò)河,選擇了一個(gè)掃描策略,然后根據(jù)結(jié)果分析,看是否需要調(diào)整,不斷優(yōu)化。比如選擇默認(rèn)的“缺省值’掃描策略,對(duì)網(wǎng)站進(jìn)行掃描,發(fā)現(xiàn)其”敏感信息“里面會(huì)去檢查頁(yè)面上是否含有Email地址,是否含有信用卡號(hào)碼等,如果我們覺(jué)得這些信息,顯示在頁(yè)面上是正常的業(yè)務(wù)需要, 我們就可以取消掉這些規(guī)則,所以掃描規(guī)則也很大程度上影響著我們的掃描效率。