自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

劍走偏鋒:基于靜態(tài)檢測的IE漏洞檢測工具IEFuzz

安全
在當(dāng)下,動態(tài)瀏覽器Fuzzer占據(jù)著主流,因?yàn)樗鼈兊倪\(yùn)行效率高(純粹是用JavaScript寫的)。然而,當(dāng)我們在進(jìn)行動態(tài)Fuzzing 的時候,往往面臨著一個共同的問題,就是“異常事件重現(xiàn)”。所以一般我們在構(gòu)建JS 瀏覽器 Fuzzer時都需要非常仔細(xì),否則在運(yùn)行過程中可能會由于瀏覽器Fuzzer是動態(tài)的,將導(dǎo)致異常事件不可重現(xiàn)。

本文主要分享一款靜態(tài)的IE瀏覽器模糊測試工具,該工具被稱為IEFuzz。我們知道,像其他大部分軟件一樣,瀏覽器也往往通過兩種方式進(jìn)行模糊測試,一種為靜態(tài),另外一種則為動態(tài)。

在此前,我們在其他文章中也了解過其他的Fuzzer,如X-Fuzzer,PKAV HTTP Fuzzer,也了解過相關(guān)的Fuzzing方法,如從零開始學(xué)Fuzzing系列:瀏覽器挖掘框架Morph誕生記等。本文主要講述靜態(tài)瀏覽器Fuzzer的情況。

在當(dāng)下,動態(tài)瀏覽器Fuzzer占據(jù)著主流,因?yàn)樗鼈兊倪\(yùn)行效率高(純粹是用JavaScript寫的)。然而,當(dāng)我們在進(jìn)行動態(tài)Fuzzing 的時候,往往面臨著一個共同的問題,就是“異常事件重現(xiàn)”。所以一般我們在構(gòu)建JS 瀏覽器 Fuzzer時都需要非常仔細(xì),否則在運(yùn)行過程中可能會由于瀏覽器Fuzzer是動態(tài)的,將導(dǎo)致異常事件不可重現(xiàn)。

所以,在Fuzzing之前,我們往往需要考慮以下幾個方面的問題:

1、測試實(shí)例(樣本)如何生成?
2、對異常事件如何監(jiān)控?
3、對于引起異常事件的測試實(shí)例如何保存?
4、異常事件如何重現(xiàn)?

對于上述使用動態(tài) Fuzzer面臨的問題,另外一種解決思路是,采用靜態(tài)Fuzzer進(jìn)行檢測。雖然靜態(tài)Fuzzer效率較低,但是一般都可以重現(xiàn)異常事件的。

IEFuzz簡介

該靜態(tài)IE fuzzer 是用python編寫的,包括使用到以下模塊:

pywin32com ——用于加載或者重載*.html測試實(shí)例;

pydbg——用于監(jiān)控IE瀏覽器的異常事件;

paimei——用于生成異常事件的dump文件,下載鏈接為:paimei。

IEFuzz使用配置

為了能夠順利進(jìn)行Fuzzing,我們需要在IE設(shè)置中做如下更改。

1、首先,因?yàn)镕uzzer 需要在本地加載測試實(shí)例(如加載路徑為file://c:/fuzzer/testcases/temp.html)所以應(yīng)該先將IE的ActiveX告警提示關(guān)閉,通過如下步驟:

(1)工具->Internet 選項->安全->自定義級別;

(2)隨后將ActiveX告警提示關(guān)閉。

2、接著,為了能夠使用 Python win32com來監(jiān)控IE,我們還需要關(guān)閉IE的保護(hù)模塊。但是請注意其中的風(fēng)險。

(1)工具->Internet 選項->安全->受信任的站點(diǎn):自定義級別為低;

(2)工具->Internet 選項->安全->Internet:自定義級別為中,同時關(guān)閉保護(hù)模式;

(3)工具->Internet 選項->安全->受限站點(diǎn):關(guān)閉保護(hù)模式。

編寫測試實(shí)例

首先我們可以基于該fuzzer編寫自己的靜態(tài)測試用例生成器。之后可以將其放在/TestCases文件夾中。在GitHub源碼中, 也提供了一個樣本以供參考:’TestCases/SampleTestCase.py。因源碼篇幅較長,鏈接如下,

TestCases/SampleTestCase.py

在編寫測試實(shí)例時也請注意,實(shí)例中需要包含一個TestCase類以及getFinalTestCase()方法。 getFinalTestCase()方法需要能夠返回完整的 Html頁面。

在動態(tài)fuzzer的應(yīng)用過程中,需要從對象中提取不同的Html元素屬性,然后在運(yùn)行狀態(tài)下進(jìn)行模糊檢測。而對于一個靜態(tài)Fuzzer,我們能夠在我們的python測試實(shí)例中預(yù)定義html元素以及屬性,并將之作為字典dict。

dict舉例如下:

  1. attr = {'CANVAS':['height','width','getContext', ... , ... , ... ]} 

對于這種屬性生成列表,也提供了一個JavaScript 應(yīng)用供參考。

  1. <html>     
  2. <head>     
  3. <script>     
  4. /*     
  5. ----------------------------------------------------------------------------     
  6. "THE BEER-WARE LICENSE" (Revision 42):     
  7. <debasishm89_at_gmail.com> wrote this file.  As long as you retain this notice you     
  8. can do whatever you want with this stuff. If we meet some day, and you think     
  9. this stuff is worth it, you can buy me a beer in return.   Debasish Mandal     
  10. ----------------------------------------------------------------------------     
  11. This JS code should be used for generating a python dict. of element attributes of different HTML elements.     
  12. In case of dynamic fuzzer, its usually generated on the fly, since its a static fuzzer you need to pre define html elements and their attributes to your test case.     
  13. Other wise you can use a list of well known attributes. It's completely your choice, how you write your test case.      
  14. */     
  15. function getEleAttributes(ele){     
  16. buff = "['"     
  17. forvar p in ele ){     
  18. buff += p + "','";     
  19. }     
  20. buff = buff.slice(0, -2) + "]";     
  21. return buff     
  22. }     
  23. function generate() {     
  24. /*     
  25. Add your element list in this here and open this html in IE.     
  26. */     
  27. var elements = ["ARTICLE","ASISE","B","BDI","BDO""BLOCKQUOTE","BR","BUTTON","CANVAS","CAPTION","CITE","COL","CODE","COMMAND","DATALIST","DD","DEL","DETAILS","DFN","DL","DT""EM","STYLE","FIELDSET","FIGCAPTION","SCRIPT""EMBED","FIGURE","FOOTER","HEADER","HGROUP","HR","I","INPUT","INS","KEYGEN","KBD","LEGEND","MARK","MENU","METER","NAV","NOSCRIPT","OPTGROUP","OUTPUT","P","PARAM","PRE","PROGRESS","Q","RP","RT","RUBY","S","SAMP","SECTION","SELECT","SMALL","SOURCE","SPAN","SUP","TH","THEAD","TIME","OBJECT","IFRAME","TEXTAREA","TRACK","U","VAR","WBR","FORM","A","BODY","HTML","DIV","TABLE","AREA","TD","TR","LINK","BASE","FONT","HEAD","IMG","MAP","META","OL","LI","TBODY","TITLE","H1","BLINK","AREA","COL","SPAN","FRAMESET","FRAME","UL","OPTION","NOFRAMES","TFOOT","XMP","ISINDEX","CENTER","HR","LABEL","OPTGROUP","AUDIO","VIDEO","TEMPLATE","SVG"]     
  28. main_buff = "ele_dict = {"     
  29. for (ele in elements){     
  30. var id_0 = document.createElement( elements[ele] );     
  31. all_props = getEleAttributes(id_0)     
  32. main_buff += "'"+elements[ele]      
  33. main_buff += "':"     
  34. main_buff += all_props     
  35. main_buff += ","     
  36. }     
  37. main_buff = main_buff.slice(0,-1)     
  38. main_buff += "}"     
  39. document.getElementById('result').innerHTML = main_buff;     
  40. }     
  41. </script>     
  42. </head>     
  43. <body onload='generate();'>     
  44. <b>Output : (Copy paste following python dictionary to your testcase generator script and fuzz using them )</b></br><textarea id="result" rows="100" cols="200"></textarea>     
  45. </body>     
  46. </html> 

參考鏈接為:Generate_Elements_Dict.html

IEFuzz運(yùn)行步驟

那么IEFuzz 是如何運(yùn)行的?請參考往下步驟:

1、啟動IE;
2、將iexplore.exe進(jìn)程掛載到 Debugger(pydbg) 中,然后對其父進(jìn)程以及子進(jìn)程所有類型的事件進(jìn)行監(jiān)控;
3、生成一個靜態(tài)實(shí)例(Html + JavaScript);
4、通過win32COM加載該靜態(tài)實(shí)例到本地(如file://c:/fuzzer/testcases/temp.html)
5、如果沒有產(chǎn)生異常事件,那么就需要重新生成一個Html測試實(shí)例,然后再使用win32COM (python模塊)進(jìn)行重載。(在這里先不關(guān)閉IE或者重新打開IE??梢哉f,我們只是重新刷新了頁面,但是頁面的代碼或者內(nèi)容是不同的,這也給測試節(jié)省了時間);
6、在出現(xiàn)異常事件時,先復(fù)制或者保存測試實(shí)例到一個單獨(dú)的文件夾,然后再關(guān)閉IE進(jìn)程;
7、返回步驟1。

參考鏈接為:Generate_Elements_Dict.html

責(zé)任編輯:何妍 來源: FreeBuf
相關(guān)推薦

2011-05-11 10:00:57

2015-04-02 16:26:39

漏洞檢測工具Kadimus

2022-01-27 09:16:08

CPU內(nèi)存.NET

2015-04-27 15:49:21

2021-03-29 11:40:17

檢測工具Trivy應(yīng)用

2014-04-15 17:03:00

2009-06-03 14:15:34

2014-02-27 17:17:56

RSA2014內(nèi)部威脅威脅檢測

2015-03-13 09:10:29

2021-04-14 08:20:46

Lighthouse工具性能檢測

2010-06-04 10:09:29

Linux 性能檢測

2011-01-11 13:58:32

WebLog ExpeWEB服務(wù)器流量記錄

2010-06-04 10:30:15

Linux 性能檢測

2015-08-17 15:10:11

漏洞檢測安全工具LFI scanner

2012-06-20 10:18:00

2021-07-01 05:17:52

Windows 11操作系統(tǒng)微軟

2021-10-22 09:40:59

開源技術(shù) 工具

2009-12-17 17:31:10

2021-12-13 16:16:42

Java開發(fā)工具

2022-03-25 14:11:11

Java死鎖線程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號