Web安全 — BurpSuite實戰(2)

https://www.freebuf.com/column/156238.html

上節課,我們講了如何使用burp抓取數據包,以及proxy的一些常用功能;這節課,我們主要學習scannerintruderrepeater等等。

intruder功能

標識符枚舉用戶名,ID和賬戶號碼, 模糊測試SQL注入,跨站,目錄遍歷等等 
首先,打開burp,並進入到proxy功能,可以看到“target”、“positions”、“payloads”、“options”標籤

positions模塊

Positions – 選擇攻擊模式

sniper – 對變量依次進行暴力破解。

battering ram – 對變量同時進行破解。

pitchfork – 每一個變量標記對應一個字典,一一對應進行破解。

cluster bomb – 每個變量對應一個字典,並且進行交叉式破解,嘗試各種組合。適用於用戶名+密碼的破解。 

選擇要進行暴力破解的參數,用$包含參數值,表示對該值進行枚舉

payloads模塊

以簡單模式爲例,可選擇對某個參數設置payload

Payload類型可選擇字典方式,爆破方式等等多總

Payload進行編碼、加密、截取等操作,例如暴力破解base64加密登錄等等 

Simple list – 通過配置一個字符串列表作爲Payload,也可以自定義添加或從加載文件夾,如下:

Runtime file - 指定文件,作爲相對應Payload位置上的Payload列表。

Custom iterator – 款功能強大的Payload,它共有8個佔位,每一個佔位可以指定簡單列表的Payload類型,然後根據佔位的多少,與每一個簡單列表的Payload進行笛卡爾積,生成最終的Payload列表。

options模塊

Request Engine設置請求的線程數,超時重試時間

Grep Match — 這個設置主要用來從響應包中提取某些結果,如果匹配成功,則在攻擊結果中添加的新列中標明,便於排序和數據提取。比如說,在測試SQL注入漏洞,掃描包含“ODBC”,“錯誤”等消息,來識別可能存在注入漏洞的參數。

Grep Extract — 這些設置可用於提取響應消息中的有用信息。此選項是從返回包中提取有用的信息。例如,如果可通過ID的參數循環,可以提取每個文檔尋找有趣的項目的頁面標題。如果您發現返回的其他應用程序用戶詳細信息的功能,可以通過用戶ID重複和檢索有關用戶管理帳戶,忘記密碼,郵箱等等。 

Grep Payloads – 這些設置可用於提取響應消息中是否包含Payload的值,比如說,你想驗證反射性的XSS腳本是否成功,可以通過此設置此項。 

scanner功能

Live Scanning選項卡中,我們也可以對請求的域、路徑、IP地址、端口、文件類型進行控制,如下圖:

通過前幾節的學習,我們已經知道Burp Scanner有主動掃描和被動掃描兩個掃描方式,在Options子選項卡中,主要是針對這兩種掃描方式在實際掃描中的掃描動作進行設置。具體的設置包含以下部分:

攻擊插入點設置(Attack Insertion Points)

Burp Scanner在掃描中對請求數據包進行掃描,在每一個插入點構造測試語句,對參數值進行替換,從驗證可能存在的安全漏洞。 

主動掃描(Active Scanning Engine)

主動掃描設置主要是用來設置控制主動掃描時的線程、失敗重試間隔、失敗重試次數、請求延遲等等。其中請求延遲設置(Throttle between requests)和其子選項延遲隨機數 (Add random variations to throttle)在減少應用負荷,模擬人工測試,使得掃描更加隱蔽,而不易被網絡安全設備檢測出來。按自己的需求及配置情況設置線程數及延遲情況。

此選項的設置主要是爲了優化掃描的速度和準確率,儘量地提高掃描速度的同時降低漏洞的誤報率。 掃描速度(Scan speed)分三個選項,不同的選項對應於不同的掃描策略,當選擇Thorough時,Burp會發送更多的請求,對漏洞的衍生類型會做更多的推導和驗證。而當你選擇Fast,Burp則只會做一般性的、簡單的漏洞驗證。

主動掃描範圍設置(Active Scanning Areas)

在主動掃描過程中,根據掃描時間、重點等情況,選擇不同的掃描範圍。這裏可選擇的掃描範圍有:SQL注入 -可以使不同的測試技術(基於錯誤,時間等),並且可按照特定數據庫類型(MSSQL,Oracle和MySQL的)、反射式跨站點腳本、存儲的跨站點腳本。 

被動掃描範圍設置(Passive Scanning Areas)

因爲被動掃描不會發送新的請求,只會對原有數據進行分析,其掃描範圍主要是請求和應答消息中的如下參數或漏洞類型:HeadersFormsLinksParametersCookiesMIMEtypeCaching敏感信息泄露Frame框架點擊劫持ASP.NET ViewState

 

repeater功能

 

通過修改請求包,查看服務器端響應情況。在滲透測試過程中,我們經常使用Repeater來進行請求與響應的消息驗證分析,比如修改請求參數,驗證輸入位置的漏洞;修改請求參數,驗證邏輯越權;從攔截歷史記錄中對驗證碼,抓取進行重放。如下所示: 

 

 

其設置主要包括以下內容:

 

更新Content-Length 這個選項是用於控制Burp是否自動更新請求消息頭中的Content-Length

解壓和壓縮(Unpack gzip / deflate) 這個選項主要用於控制Burp是否自動解壓或壓縮服務器端響應的內容

跳轉控制(Follow redirections) 這個選項主要用於控制Burp是否自動跟隨服務器端作請求跳轉,比如服務端返回狀態碼爲302,是否跟着應答跳轉到302指向的url地址。 它有4個選項,分別是永不跳轉(Never),站內跳轉(On-site only )、目標域內跳轉(Inscope only)、始終跳轉(Always),其中永不跳轉、始終跳轉比較好理解,站內跳轉是指當前的同一站點內跳轉;目標域跳轉是指target scope中配置的域可以跳轉;

跳轉中處理Cookie(Process cookies in redirections) 這個選項如果選中,則在跳轉過程中設置的Cookie信息,將會被帶到跳轉指向的URL頁面,可以進行提交。

視圖控制(View) 這個選項是用來控制Repeater的視圖佈局

其他操作(Action) 通過子菜單方式,指向Burp的其他工具組件中。 

 

spider功能

 

爬取網站相關頁面,通過HTML、js、提交的表單中的超鏈接、目錄列表、註釋,以及 robots.txt 文件。以樹列表的形式詳細的顯示網站結構。在使用時要謹慎對有提交、刪除等功能進行spider操作。

 

 

decoder功能

 

對左側text中的值進行解密、加密、hash以text形式顯示到下方,同樣也可以進行顯示hex值。 

 

Burp Decoder的功能比較簡單,作爲Burp Suite中一款編碼解碼工具,它能對原始數據進行各種編碼格式和散列的轉換。其界面如下圖,主要由輸入域、輸出域、編碼解碼選項三大部分組成。 

 

 

同時,可對同一個值進行多次操作,如下 

 

 

comparer功能

 

Burp Comparer在Burp Suite中主要提供一個可視化的差異比對功能,當服務器返回包過大時,可通過複製粘貼、加載文本方式添加對比,以words和bytes方式進行查看請求或數據包的不同,來查看服務器對某些請求的差異。例如:1.枚舉用戶名過程中,對比分析登陸成功和失敗時,服務器狀態的區別;2.使用 Intruder 進行攻擊時,對於不同的服務器端響應,可以很快的分析出兩次響應的區別在;3.進行SQL注入的盲注測試時,比較兩次響應消息的差異,判斷響應結果與注入條件的關聯關係。 

 

 

extender功能

 

可通過商店添加某些插件,同樣也可以添加自己或第三方的插件 

 

 

可添加java、Python、ruby類型的插件,若安裝失敗會提示異常情況

 

 

同樣burp提供了api接口,可創建自定義插件

 

 

實戰篇

 

Scanner實戰

 

下面介紹幾種對網站滲透時會用到的一些方法 

 

在對系統做主動掃描時,當進行Burp Scanner。對下面的url進行掃描,如下: 

 

 

當我們在Burp Target 的站點地圖上的某個URL執行Actively scan this host時,會自動彈出過濾設置 

 

 

優化掃描選項,我們可以對選項進行設置,指定哪些類型的文件不再掃描範圍之內,如下: 

 

 

在這裏,我們可以設置掃描時過濾某些類型,如:過濾js、css、圖片等靜態資源文件。 

 

當我們點擊【next】按鈕,進入掃描路徑分支的選擇界面。如下圖: 

 

 

以上是掃描開始前的一些相關設置,看個人需求進行設置,下面進入掃描階段。 

 

此時,在Scan queue隊列界面,可以看到會顯示掃描的進度、問題總數、請求數和錯誤統計等信息。

 

 

同樣,在Scan queue功能上,可以選中某個記錄,在右擊的彈出菜單中,對掃描進行控制。比如取消掃描、暫停掃描、恢復掃描、轉發其他功能等等。如下:

 

 

同時,在Results界面,自動顯示隊列中已經掃描完成的漏洞明細。

 

intruder實戰

 

登錄框暴力破解

登錄處不存在驗證碼和次數限制,首先我們會想到弱口令和暴力破解 

下面我們看看如何對用戶名和密碼進行暴力破解 

首先,我們嘗試已知用戶名,暴力破解密碼,上一篇已經介紹瞭如何抓包,這裏不在進行介紹。

 

單個參數暴力破解

 

當我們將數據包發送到intruder功能時,會自動對某些參數標記

 

這裏我們只對pass進行暴力破解,點擊clear$清楚所有標記

 

選擇要進行暴力破解的參數值,點擊add$,可以看到將pass參數選中,這裏我們只對一個參數進行暴力破解,所以使用sniper即可。

 

下面我們選擇要添加的字典

 

同樣也可以進行添加自己的字典,等等

 

這裏,我們選擇自帶的password字典進行暴力猜解

 

由於字典有3000多條,不可能一條條獲取,可以對status或length進行排序,可以看到找到了長度不一樣的payload,說明很可能是要找的密碼。

 

 

多個參數暴力破解

同樣,若用戶名和密碼都不知道,如何進行暴力破解 

首先,按照上面的方式選中user和pass參數 

 

這裏選擇交叉式cluster bomb模式進行暴力破解,由於交叉式會進行n*m次所以這裏只寫幾個payload進行演示

 

  首先,payload set選1,爲第一個payload的值

 

然後設置payload set爲2,設置第二個值的payload,可以看到需要進行56次請求

 

  可以看到payload1、payload2的值均爲test,猜解到正確的用戶名密碼

 

我們可以看到存在登錄框,但未不存在驗證碼和次數限制,首先我們會想到弱口令和暴力破解,同樣payload參數有很多種方式數字、日期、自定義長度等等

 

Custom iterator方式生成字典

 

首先設置position1,爲aaa 

 

設置position2爲$$$

 


設置position3爲passwords 

 

進行暴力破解時可以看到payload以test$$$passwords內容組成,可以方便我們對某些特定的類型進行暴力破解,例如郵箱[email protected]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章