關(guān)于自動(dòng)化web安全測(cè)試動(dòng)態(tài)fuzz的思路與實(shí)踐分析(圖文)
發(fā)布時(shí)間:2012-06-11 11:43:46 作者:佚名
我要評(píng)論

很久之前就想寫這么一篇文章,來(lái)談?wù)勎艺J(rèn)為的的web2.0甚至是3.0時(shí)代,web應(yīng)用安全測(cè)試遇到的幾個(gè)問題,以及目前知道的解決辦法。發(fā)出來(lái)供大家討論學(xué)習(xí),算是拋磚引玉吧。
什么叫自動(dòng)化web安全測(cè)試?這其實(shí)是一個(gè)很大的概念,因?yàn)閣eb安全包含很多方面,比如代碼審計(jì),比如黑盒測(cè)試,甚至還有灰盒測(cè)試。還有性能測(cè)試,壓力測(cè)試等等。代碼審計(jì)其實(shí)也不僅僅是審計(jì)安全問題,也有審計(jì)代碼質(zhì)量的。目前市場(chǎng)的代碼審計(jì)軟件,商業(yè)的好像都是有代碼質(zhì)量檢查的。我們今天其實(shí)主要還是講fuzz測(cè)試中web應(yīng)用的安全問題,也就是我理解的黑盒測(cè)試web應(yīng)用安全的問題。涵蓋的主要是如何用工具發(fā)現(xiàn)類似SQL注入,xss,命令執(zhí)行,文件包含,代碼注入等等一系列的安全問題。
一直以來(lái),我們檢測(cè)一個(gè)WEB應(yīng)用的安全漏洞,無(wú)非就是兩種手段,一種是手動(dòng)加參數(shù)比如 and 1=1或者對(duì)數(shù)字型的做一些運(yùn)算,-1 -2看是否參數(shù)進(jìn)行了傳遞并且在后端數(shù)據(jù)庫(kù)里正確的執(zhí)行了操作,根據(jù)頁(yè)面的內(nèi)容變化來(lái)判讀。當(dāng)然還有類似|| 1=1這種的。其實(shí)都是做的一個(gè)運(yùn)算。只要符合SQL標(biāo)準(zhǔn)能夠正確的執(zhí)行就OK了。第二種是工具,這里指的工具,更多的含義還是指webinspect,appscan,awvs這類的基于爬蟲類的掃描工具。先去抓取整個(gè)網(wǎng)站的目錄結(jié)構(gòu),然后根據(jù)爬出來(lái)的鏈接,測(cè)試他的動(dòng)態(tài)參數(shù)。無(wú)論是上述手段的哪一種,都會(huì)有一些缺陷。第一種不適合在大批量目標(biāo)的攻擊,因?yàn)轱@然手工測(cè)試的范圍有限,第二種解決了第一個(gè)手段的缺陷,可以在一個(gè)比較大的應(yīng)用中,快速發(fā)現(xiàn)應(yīng)用程序的漏洞。但是目前來(lái)說,仍然存在很多的問題。比如,現(xiàn)在比較大型的應(yīng)用,都是采用類似前端反向代理,后端動(dòng)態(tài)解析的架構(gòu)。這種架構(gòu)的出現(xiàn),大量的使用ajax的應(yīng)用,交互式連接,json接口等等。這些東西用爬蟲是識(shí)別不到的。因此用類似webinspect這樣的工具,根本就掃不到什么問題。前陣子看到說awvs可以做web 2.0的掃描,可以識(shí)別到ajax請(qǐng)求,但是我用最新版的對(duì)比測(cè)試,發(fā)現(xiàn)還是不行?,F(xiàn)在解決這類的問題,貌似有很多辦法,國(guó)內(nèi)的我看到aiscanner號(hào)稱可以用web2.0的引擎或者js引擎解決這個(gè)問題,用javascript虛擬引擎加上沙盒技術(shù)。這個(gè)我查了一些資料,包括在developerworks上也是只看到寥寥的幾個(gè)介紹。我猜是不是類似用node.js運(yùn)行一些東西,模仿類似XHR的方式去獲取一些交互式的,ajax的鏈接?希望有大牛能給我指點(diǎn)下。
0×02 基于代理攔截的WEB FUZZ工具
當(dāng)然,隨著技術(shù)的發(fā)展,很早的時(shí)候就出現(xiàn)過一些比較好的辦法,比如用代理中轉(zhuǎn)的方式來(lái)獲取連接,工具類似有的fiddler和burpsuite之類的。fiddler目前官方有一個(gè)比較好的插件是Ammonite,運(yùn)行后如下

在results里,可以看到發(fā)包和收包后的過程

首先說說這個(gè)插件,我目前測(cè)試的情況來(lái)說,準(zhǔn)確率是比較差的。其實(shí)他準(zhǔn)確率差和誤報(bào)率高的一個(gè)原因,是因?yàn)闄z測(cè)漏洞類型和檢測(cè)方法都比較的簡(jiǎn)單。打一個(gè)比方,這種類似中間代理的軟件,大多數(shù)都是延續(xù)這種思路的,他們?cè)跈z測(cè)SQL注入的時(shí)候,一般都是要不就是取網(wǎng)頁(yè)內(nèi)容里的SQL錯(cuò)誤關(guān)鍵字,要不就是根據(jù)HTTP狀態(tài)碼來(lái)判斷。這其實(shí)在現(xiàn)在來(lái)說,是比較老的檢測(cè)方法,更多的,在做了相關(guān)的運(yùn)算后,則需要取頁(yè)面長(zhǎng)度啊,是否跳轉(zhuǎn)啊這些來(lái)判斷的。這里先留一個(gè)坑,等會(huì)我說基于瀏覽器的自動(dòng)化fuzz工具的時(shí)候,會(huì)說到。
除此之外,fiddler上其實(shí)還有很多類似的插件,比如這個(gè)日本人寫的

這個(gè)插件比較類似burpsuite+fuzzdb的效果

先是攔截請(qǐng)求.

講請(qǐng)求發(fā)送到攻擊模塊

在burpsuite里加載fuzzdb的數(shù)據(jù)進(jìn)行進(jìn)行測(cè)試


可以選擇fuzz的模式

也可以自己加payloads,fuzz對(duì)比里也有

設(shè)置相關(guān)的測(cè)試參數(shù)

點(diǎn)擊start attack開始攻擊

開始攻擊,攻擊后的結(jié)果.

看來(lái)比f(wàn)iddler復(fù)雜許多是嗎?呵呵。其實(shí)這里有許多選項(xiàng)是可調(diào)的。這個(gè)自己研究下就可以了。設(shè)置好相關(guān)的參數(shù)后,測(cè)試起來(lái)也是相對(duì)要方便很多的。
關(guān)于主動(dòng)掃描和被動(dòng)掃描這個(gè),我還想在這里多說一句,無(wú)論是burpsuite還是fiddler,這種基于代理攔截的工具其中一個(gè)缺點(diǎn)就是主動(dòng)掃描的功能太弱。當(dāng)然,現(xiàn)在burpsuite有一些改進(jìn),可以做一些主動(dòng)掃描的事,但還是太弱。
Burpsuite和fiddler其實(shí)都是一個(gè)原理,通過代理中轉(zhuǎn)攔截所有http或者h(yuǎn)ttps的請(qǐng)求,然后重放請(qǐng)求來(lái)測(cè)試.fiddler稍微要強(qiáng)大一些是可以直接監(jiān)聽網(wǎng)卡等等,可以攔截所有的網(wǎng)絡(luò)請(qǐng)求,burpsuite有些場(chǎng)景還是不行。詳細(xì)的使用功能,還是有待大家自己去測(cè)試,挖掘,我就不詳細(xì)說了
一直以來(lái),我們檢測(cè)一個(gè)WEB應(yīng)用的安全漏洞,無(wú)非就是兩種手段,一種是手動(dòng)加參數(shù)比如 and 1=1或者對(duì)數(shù)字型的做一些運(yùn)算,-1 -2看是否參數(shù)進(jìn)行了傳遞并且在后端數(shù)據(jù)庫(kù)里正確的執(zhí)行了操作,根據(jù)頁(yè)面的內(nèi)容變化來(lái)判讀。當(dāng)然還有類似|| 1=1這種的。其實(shí)都是做的一個(gè)運(yùn)算。只要符合SQL標(biāo)準(zhǔn)能夠正確的執(zhí)行就OK了。第二種是工具,這里指的工具,更多的含義還是指webinspect,appscan,awvs這類的基于爬蟲類的掃描工具。先去抓取整個(gè)網(wǎng)站的目錄結(jié)構(gòu),然后根據(jù)爬出來(lái)的鏈接,測(cè)試他的動(dòng)態(tài)參數(shù)。無(wú)論是上述手段的哪一種,都會(huì)有一些缺陷。第一種不適合在大批量目標(biāo)的攻擊,因?yàn)轱@然手工測(cè)試的范圍有限,第二種解決了第一個(gè)手段的缺陷,可以在一個(gè)比較大的應(yīng)用中,快速發(fā)現(xiàn)應(yīng)用程序的漏洞。但是目前來(lái)說,仍然存在很多的問題。比如,現(xiàn)在比較大型的應(yīng)用,都是采用類似前端反向代理,后端動(dòng)態(tài)解析的架構(gòu)。這種架構(gòu)的出現(xiàn),大量的使用ajax的應(yīng)用,交互式連接,json接口等等。這些東西用爬蟲是識(shí)別不到的。因此用類似webinspect這樣的工具,根本就掃不到什么問題。前陣子看到說awvs可以做web 2.0的掃描,可以識(shí)別到ajax請(qǐng)求,但是我用最新版的對(duì)比測(cè)試,發(fā)現(xiàn)還是不行?,F(xiàn)在解決這類的問題,貌似有很多辦法,國(guó)內(nèi)的我看到aiscanner號(hào)稱可以用web2.0的引擎或者js引擎解決這個(gè)問題,用javascript虛擬引擎加上沙盒技術(shù)。這個(gè)我查了一些資料,包括在developerworks上也是只看到寥寥的幾個(gè)介紹。我猜是不是類似用node.js運(yùn)行一些東西,模仿類似XHR的方式去獲取一些交互式的,ajax的鏈接?希望有大牛能給我指點(diǎn)下。
0×02 基于代理攔截的WEB FUZZ工具
當(dāng)然,隨著技術(shù)的發(fā)展,很早的時(shí)候就出現(xiàn)過一些比較好的辦法,比如用代理中轉(zhuǎn)的方式來(lái)獲取連接,工具類似有的fiddler和burpsuite之類的。fiddler目前官方有一個(gè)比較好的插件是Ammonite,運(yùn)行后如下

在results里,可以看到發(fā)包和收包后的過程

首先說說這個(gè)插件,我目前測(cè)試的情況來(lái)說,準(zhǔn)確率是比較差的。其實(shí)他準(zhǔn)確率差和誤報(bào)率高的一個(gè)原因,是因?yàn)闄z測(cè)漏洞類型和檢測(cè)方法都比較的簡(jiǎn)單。打一個(gè)比方,這種類似中間代理的軟件,大多數(shù)都是延續(xù)這種思路的,他們?cè)跈z測(cè)SQL注入的時(shí)候,一般都是要不就是取網(wǎng)頁(yè)內(nèi)容里的SQL錯(cuò)誤關(guān)鍵字,要不就是根據(jù)HTTP狀態(tài)碼來(lái)判斷。這其實(shí)在現(xiàn)在來(lái)說,是比較老的檢測(cè)方法,更多的,在做了相關(guān)的運(yùn)算后,則需要取頁(yè)面長(zhǎng)度啊,是否跳轉(zhuǎn)啊這些來(lái)判斷的。這里先留一個(gè)坑,等會(huì)我說基于瀏覽器的自動(dòng)化fuzz工具的時(shí)候,會(huì)說到。
除此之外,fiddler上其實(shí)還有很多類似的插件,比如這個(gè)日本人寫的

這個(gè)插件比較類似burpsuite+fuzzdb的效果

先是攔截請(qǐng)求.

講請(qǐng)求發(fā)送到攻擊模塊

在burpsuite里加載fuzzdb的數(shù)據(jù)進(jìn)行進(jìn)行測(cè)試


可以選擇fuzz的模式

也可以自己加payloads,fuzz對(duì)比里也有

設(shè)置相關(guān)的測(cè)試參數(shù)

點(diǎn)擊start attack開始攻擊

開始攻擊,攻擊后的結(jié)果.

看來(lái)比f(wàn)iddler復(fù)雜許多是嗎?呵呵。其實(shí)這里有許多選項(xiàng)是可調(diào)的。這個(gè)自己研究下就可以了。設(shè)置好相關(guān)的參數(shù)后,測(cè)試起來(lái)也是相對(duì)要方便很多的。
關(guān)于主動(dòng)掃描和被動(dòng)掃描這個(gè),我還想在這里多說一句,無(wú)論是burpsuite還是fiddler,這種基于代理攔截的工具其中一個(gè)缺點(diǎn)就是主動(dòng)掃描的功能太弱。當(dāng)然,現(xiàn)在burpsuite有一些改進(jìn),可以做一些主動(dòng)掃描的事,但還是太弱。
Burpsuite和fiddler其實(shí)都是一個(gè)原理,通過代理中轉(zhuǎn)攔截所有http或者h(yuǎn)ttps的請(qǐng)求,然后重放請(qǐng)求來(lái)測(cè)試.fiddler稍微要強(qiáng)大一些是可以直接監(jiān)聽網(wǎng)卡等等,可以攔截所有的網(wǎng)絡(luò)請(qǐng)求,burpsuite有些場(chǎng)景還是不行。詳細(xì)的使用功能,還是有待大家自己去測(cè)試,挖掘,我就不詳細(xì)說了
相關(guān)文章
局域網(wǎng)共享安全方式之用局域網(wǎng)文件共享系統(tǒng)實(shí)現(xiàn)共享文件夾安全設(shè)置
現(xiàn)在很多單位都有文件服務(wù)器,經(jīng)常會(huì)共享文件讓局域網(wǎng)用戶訪問。那么,如何才能保護(hù)局域網(wǎng)內(nèi)共享文件夾的安全性呢?下面通過本文給大家分享局域網(wǎng)共享安全方式之用局域網(wǎng)文2017-05-11- 這篇文章主要介紹了IIS的FastCGI漏洞處理方法,需要的朋友可以參考下2017-04-30
IIS PHP fastcgi模式 pathinfo取值錯(cuò)誤任意代碼執(zhí)行漏洞修復(fù)方法
這篇文章主要介紹了PHP fastcgi模式 pathinfo取值錯(cuò)誤任意代碼執(zhí)行漏洞,需要的朋友可以參考下2017-04-30- IIS短文件名泄露漏洞,IIS上實(shí)現(xiàn)上存在文件枚舉漏洞,攻擊者可利用此漏洞枚舉獲取服務(wù)器根目錄中的文件,這里為大家分享一下安裝方法,需要的朋友可以參考下2017-04-23
用mcafee麥咖啡設(shè)置服務(wù)器基本用戶安全(防止新建用戶與修改密碼)
這篇文章主要介紹了用麥咖啡設(shè)置服務(wù)器基本用戶安全(防止新建用戶與修改密碼),需要的朋友可以參考下2017-02-26防范黑客入侵,關(guān)閉端口封鎖大門 黑客無(wú)法入侵
這篇文章主要介紹了防范黑客入侵,關(guān)閉端口封鎖大門 黑客無(wú)法入侵的相關(guān)資料,需要的朋友可以參考下2016-10-31現(xiàn)代網(wǎng)絡(luò)性能監(jiān)控工具應(yīng)具備何種技能?網(wǎng)絡(luò)與應(yīng)用程序監(jiān)控
大家都知道現(xiàn)在市場(chǎng)上的網(wǎng)絡(luò)性能監(jiān)控工具大有所在,這為現(xiàn)在的IT行業(yè)的人員提供了很多便利,幫助IT管理團(tuán)隊(duì)監(jiān)控網(wǎng)絡(luò)性能,并且?guī)椭鶬T管理人員確定系統(tǒng)性能的瓶頸所在,進(jìn)而2016-10-19- 雖然現(xiàn)在網(wǎng)絡(luò)很發(fā)達(dá),但對(duì)我們普通人而言,也就是10多年的上網(wǎng)歷史,好多人還沒意識(shí)到信息安全的重要性。那么如何保證自己的上網(wǎng)安全?下面小編為大家分享10條防范自救,一2016-10-12
- 這篇文章主要介紹了遠(yuǎn)離病毒 八項(xiàng)基本原則的相關(guān)資料,需要的朋友可以參考下2016-10-08
- 這篇文章主要介紹了Linux 防范病毒的方法的相關(guān)資料,需要的朋友可以參考下2016-10-08