解密web黑科技告訴你黑客的一些「不為人知」的事情
一個星期沒有寫文章了也是因為最近一周工作太忙了,今天是周五正好有時間自己總結了一下這周的工作。
首先給大家介紹一個開源項目:https://github.com/Arachni/arachni
從github上面可以看到arachni有1946顆星在web漏洞掃描的開源項目中評分已經是相當的高了。
Arachni提供:
穩定,高效,高性能的框架
Check,report並plugin允許開發人員輕鬆快速地創建和部署他們的組件,並對其施加最小限制,同時提供必要的基礎設施以實現其目標。此外,鼓勵他們在一個統一的框架下充分利用Ruby語言,這將提高他們的工作效率,而不會扼殺他們或使他們的任務複雜化。此外,該框架可用於任何其他Ruby庫,並導致全新掃描儀的開發或幫助您創建高度自定義的掃描/審計方案和/或腳本掃描。雖然框架的某些部分相當複雜,但您不必直接處理它們。從用戶或組件開發人員的角度看,一切都顯得簡單直接,同時提供強大功能,性能和靈活性。從簡單的命令行實用程序掃描器到直觀且用戶友好的Web界面和協作平台,Arachni遵循最少驚喜的原則,並為您提供大量反饋和指導。
簡單來說Arachni旨在自動檢測Web應用程序中的安全問題。它所期望的是目標網站的網址,過一段時間後它會向您顯示其結果。
Arachni的源碼我花了一個星期的時間把它讀完了,arachni的源碼是用Ruby語言開發的,Ruby一種簡單快捷的面向對象(面向對象程序設計)腳本語言,在20世紀90年代由日本人松本行弘(Yukihiro Matsumoto)開發,其實在沒有研究Arachni之前我從來沒有用過ruby語言所以讀arachni源碼的時候有些費力一邊研究arachni架構一邊學習Ruby的語法,其實這一個禮拜的辛苦付出收穫還是挺大的。
下面給大家介紹一些在ruby中比較特殊的用法:
Ruby中的::符號
Ruby中常量的路徑(作用域),類似與文件系統中的目錄,通過::進行分割和訪問,默認直接以::開頭(例: :: Y)表示變數路徑的根位置
load與require方法的異同
祖先鏈用於描述Ruby對象的繼承關係,因為類與模塊是父子關係,所以祖先鏈中也可以包含模塊,prepend與include分別可以向鏈中添加模塊,不同的是調用include方法,模塊會被插入祖先鏈,當前類的正上方,而prepend同樣是插入到祖先鏈,但位置其他卻在當前類的正下方,另外通過Class.ancestors可以查看當前的祖先鏈。
對象、類與模塊之間關係
動態調用方法
class MyClass
def my_method(my_arg)
my_arg * 2
end
end
obj = MyClass.new
obj.my_method(3) #=> 6
obj.send(:my_method, 3) #=> 6
Arachni在網上的資料特別少所以必須通過閱讀源碼來把握arachni的整體架構,通過對源碼的閱讀結合自己的理解畫了一幅arachni的源碼架構圖
arachni源碼中集成了一個無頭瀏覽器phantomjs
PhantomJS是一款帶JavaScript API的無頭WebKit腳本。它具有對各種Web標準的快速和本地支持:DOM處理,CSS選擇器,JSON,Canvas和SVG
在arachni中它是如何操作頁面的元素:
在arachni中它是如何操作插架的:
1.集成瀏覽器環境
Arachni包含一個集成的,真實的瀏覽器環境,以便為使用諸如HTML5,JavaScript,DOM操作,AJAX等技術的現代Web應用程序提供足夠的覆蓋。
除了監控vanilla DOM和JavaScript環境外,Arachni的瀏覽器還支持流行的框架,使記錄的數據更易於消化:
JQuery的
AngularJS
更多來...
實質上,這將Arachni轉變為DOM和JavaScript調試器,允許它監控DOM事件和JavaScript數據以及執行流程。因此,系統不僅可以觸發並識別基於DOM的問題,還會隨附關於當時頁面狀態的大量信息。
2.相關信息包括:
頁面DOM,如HTML代碼。有一個DOM轉換列表,用於將頁面狀態恢復到登錄狀態。作為HTML代碼的原始DOM(即導致頁面被記錄的動作之前)。用DOM轉換列表。數據流接收器 - 每個接收器都是一個JS方法,它接收到一個受污染的參數。該方法的父對象(例如:)DOMWindow。方法簽名(如:)decodeURIComponent()。
參數列表。在包含的對象中遞歸確定污點。方法源代碼。JS堆棧跟蹤。
執行流匯 - 每個匯是一個成功執行的JS有效負載,由安全檢查注入。包含一個JS堆棧跟蹤。
JavaScript堆棧軌跡包括:方法名稱。方法位置。方法源代碼。
參數列表。
從本質上講,您可以訪問與您最喜歡的調試器(例如FireBug)所提供的信息大致相同的信息,就好像您已經在適當的時間設置了一個斷點來識別問題一樣。
個人公眾號:對我笑一個
TAG:對我笑一個 |