當前位置:
首頁 > 最新 > Burp Suite二十節:使用Burp,Sqlmap進行自動化SQL注入滲透測試

Burp Suite二十節:使用Burp,Sqlmap進行自動化SQL注入滲透測試

XSS(跨站腳本攻擊)漏洞是Web應用程序中最常見的漏洞之一,它指的是惡意攻擊者往Web頁面里插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web裡面的html代碼會被執行,從而達到惡意攻擊用戶的特殊目的,比如獲取用戶的cookie,導航到惡意網站,攜帶木馬等。根據其觸發方式的不同,通常分為反射型XSS、存儲型XSS和DOM-base型XSS。漏洞「注入理論」認為,所有的可輸入參數,都是不可信任的。大多數情況下我們說的不可信任的數據是指來源於HTTP客戶端請求的URL參數、form表單、Headers以及Cookies等,但是,與HTTP客戶端請求相對應的,來源於資料庫、WebServices、其他的應用介面數據也同樣是不可信的。根據請求參數和響應消息的不同,在XSS檢測中使用最多的就是動態檢測技術:以編程的方式,分析響應報文,模擬頁面點擊、滑鼠滾動、DOM 處理、CSS 選擇器等操作,來驗證是否存在XSS漏洞。

本節包含的內容有:

XSS漏洞的基本原理

PhantomJS在XSS檢測中的使用原理

使用XSS Validator插件進行XSS漏洞檢測


一般來說,我們可以通過XSS漏洞的表現形式來區分漏洞是反射型、存儲型、DOM-base三種中的哪一種類型。

反射型XSS是指通過給別人發送帶有惡意腳本代碼參數的URL,當URL地址被打開時,帶有惡意代碼參數被HTML解析、執行。它的特點是非持久化,必須用戶點擊帶有特定參數的鏈接才能引起。它的連接形式通常如下:

其name參數的值為,這樣的參數值進入程序代碼後未做任何處理,從而被執行。其類似的源代碼如下圖:

2.存儲型XSS是指惡意腳本代碼被存儲進資料庫,當其他用戶正常瀏覽網頁時,站點從資料庫中讀取了非法用戶存儲的非法數據,導致惡意腳本代碼被執行。通常代碼結構如下圖:

其發生XSS的根本原因是伺服器端對寫入資料庫中的內容未做javascript腳本過濾。

3.DOM-base型XSS是指在前端頁面進行DOM操作時,帶有惡意代碼的片段被HTML解析、執行,從而導致XSS漏洞。

PhantomJS的官網地址:http://phantomjs.org,目前最新版本 2.1。它是一個基於WebKit的伺服器端JavaScript API,即在無需瀏覽器的支持的情況下可實現Web瀏覽器功能的支持,例如DOM 處理、JavaScript、CSS選擇器、JSON、Canvas和可縮放矢量圖形SVG等功能。基於它具有的功能,通常被用於以下場景:

無需瀏覽器的Web測試:支持很多測試框架,如YUI Test、Jasmine、WebDriver、Capybara、QUnit、Mocha

頁面自動化操作:使用標準的DOM API或一些JavaScript框架(如jQuery)訪問和操作Web頁面。

屏幕捕獲:以編程方式抓起CSS、SVG和Canvas等頁面內容,即可實現網路爬蟲應用。構建服務端Web圖形應用,如截圖服務、矢量光柵圖應用。

網路監控:自動進行網路性能監控、跟蹤頁面載入情況以及將相關監控的信息

我們這裡使用的主要是利用PhantomJS提供的JavaScript API 調用監控和觸發介面,方便地操作html頁面 DOM 節點並模擬用戶操作。

在Burp Extender的BApp Store中有一個XSS的檢測的插件XSS Validator,就是利用phantomJS和slimerJS的這些特性,來完成漏洞驗證的。下面我們一起來看看它的原理。

在插件安裝目錄的xss-detector子目錄下有一個xss.js的文件,就是phantomJS檢測的具體實現。在代碼中我們看到,默認情況下,在本地主機的8093埠啟動了一個監聽服務,並充當中間人代理的功能。

當phantomJS服務啟動,攔截到請求後即通過API介面請求頁面並初始化。在初始化過程中,設置了啟用web安全檢測、XSS審計、js操作等。

同時,自定義alert、confirm、prompt處理,記錄XSS檢測信息。

而對於js事件檢測的處理,主要是通過事件分發函數去做的。

理解了這些過程,基本上XSS Validator使用phantomJS對XSS檢測的原理已經掌握了。關於這個原理的類似分析,新浪微博網友@吃瓜群眾-Fr1day 的文章說得很清楚,傳送門地址:http://www.tuicool.com/articles/3emU7n

用圖例來描述其交互過程,如下圖:

在插件處理中幾個關鍵點是需要我們特別關注的:

Intruder使用了XSS Validator的payload生成器,將插件與Intruder兩者聯動合起來。

插件對Intruder發送的消息進行攔截處理,轉交phantomjs服務監聽埠處理。

xss.js請求真實的web伺服器,並對消息進行處理,添加Grep Phrase標誌

Intruder組件根據Grep Phrase標誌區分是否存在漏洞

只有理解了phantomJS在檢測XSS中的原理,我們才可以在工作中,根據實際情況,對諸如xss.js文件進行修改,來達到滿足我們自己業務需求的目的,而不僅僅拘泥了插件使用的本身功能。


上一節我們熟悉了phantomJS檢測xss的基本原理,現在我們一起來看看XSS Validator插件的使用。

XSS Validator插件的安裝依舊是可以通過BApp Store安裝和手工安裝兩種方式,手工安裝需要下載源碼進行編譯,這裡提供項目的github地址,https://github.com/nVisium/xssValidator。安裝過程由讀者自己完成,如果不明白安裝,請閱讀Burp插件使用相關章節。安裝完畢後,插件的界面如下圖所示:

上圖中的左側為插件運行時需要配置的參數,右側為驗證XSS漏洞的payload。在使用插件前,有一些關於phantomjs的具體配置需要我們關注。這也是我們在通過應用商店進行插件安裝時,安裝界面上提供了的使用說明裡的。

在執行Intruder之前,必須通過命令行phantomjs xss.js 啟動xss檢測服務,也是phantomjs的服務監聽埠。這就使得我們在執行命令行之前,需要將phantomjs安裝好,並加入到環境變數里,否則無法執行。至於phantomjs的安裝非常簡單,如果你實在不會,建議你閱讀此文章。傳遞地址:http://www.mincoder.com/article/4795.shtml

安裝完之後,執行phantomjs xss.js,控制台界面顯示如下,並無其他提示信息。

為了簡單地說明使用方法,其他的參數我們都採取默認配置,只修改Grep Phrase和JavaScript functions兩個參數: Grep Phrase修改為xxs_result,作為檢測標誌和列表頭。 JavaScript functions中我們僅使用alert,其他的都暫時去掉。便於我們從控制台觀察結果。我們最終的配置結果如截圖所示:

配置完插件之後,我們需要配置Intruder。 首先,指定Grep Phrase的值。

接著,Intruder的payload生成器需要設置為xssValidator的。

如果你如上圖中所示的設置,則可以啟動Intruder進行檢測了。在檢測過程中,我們會看到控制台輸出很多日誌信息,根據我們的配置,輸出alert信息的表示payload檢測出存在xss漏洞。如下圖中2所示:

同時,在Intruder的執行界面上,我們可以通過xss_result來查看payload的檢測情況,那些響應報文中存在漏洞標誌的均被標出,便於我們對消息的區分和處理。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 資料庫SQL 的精彩文章:

TAG:資料庫SQL |