若希望更早前瞭解BurpSuite的介紹,請訪問第二篇(滲透測試之BurpSuite工具的使用介紹(二)):https://www.cnblogs.com/zhaoyunxiang/p/16000296.html
五、Burp Scanner 模組使用介紹:
1.Burp Scanner是什麼:
Burp Scanner是一個進行自動發現 web應用程式的安全漏洞的工具。它是為滲透測試人員設計的,並且它和你現有的手動執行進行的 web應用程式半自動滲透測試的技術方法很相似。
使用的大多數的 web掃描器都是單獨執行的:你提供了一個開始 URL,單擊”go”,然後注視著進度條的更新直到掃描結束,最後產生一個報告。Burp Scanner和這完全不同,在攻擊一個應用程式時它和你執行的操作緊緊的結合在一起。讓你細微控制著每一個掃描的請求,並直接反饋回結果。
Burp Scanner可以執行兩種掃描型別:
1. Active scanning掃描器嚮應用程式傳送大量的偽造請求,這些請求都是有一個基礎請求衍生出來的,然後通過分析響應結果來查詢漏洞特徵。
2.Passive scanning掃描器不傳送他自己的任何新請求,只分析現有的請求和響應的內容,從這些資訊中推斷出漏洞。
你可以在目標應用程式使用兩種不同方式:
1.Manual scanning你可以傳送其他 Burp工具的一個或多個請求,來對這些特定的請求執行主動或被動的掃描。
2. Live scanning as you browse你可以配置掃描器來自動執行主動或被動的掃描那些你瀏覽應用程式時經過代理的請求。
這種自動探測漏洞的方法給滲透測試人員帶來了幾點好處:
1.通過逐個的請求,能快速可靠地對常規的漏洞進行掃描,這很大程度地減少你的測試精力,還能使你對那些不能進行自動可靠地探測的漏洞直接使用個人經驗來判斷。
2.每種掃描的結果會被立即顯示出來,並通報出在這個請求中包含的其他的測試操作。
3.Burp避免了其他掃描器的令人沮喪的問題,進行一次自動掃描需要 1年的時間,並還不能保證掃描是否有效,或者是否遇到了影響掃描效率的問題。
Burp精準地控制著要掃描的內容,並對掃描結果和應用程式上的廣範圍的影響進行實時監控,Burp Spider讓你把可靠自動化的優點和人類直觀智慧結合起來,常常會得到壓倒性的結果。
2.主動掃描
在這種掃描模式下,Burp使用應用程式的一個叫做” base request”單個請求,通過一些方法修改後,來觸發一些漏洞存在的跡象。這些被修改過的請求被髮送到應用程式,然後分析響應的結果。在許多情況下,根據初步探測的結果,會傳送進一步的請求。這種操作模式會產生大量的惡意的請求,並導致應用程式妥協。你要謹慎地使用這種掃描模式,僅當得到應用程式的所有者允許時,並且警告過他們自動掃描會給他們的應用程式和資料帶來影響。如果可能,掃描不用的系統,並在掃描前進行備份。
對應用程式中的已知缺陷的漏洞的自動探測是很可靠的。Burp的主動掃描能力的是為掃描器能可靠地查詢到基於輸入的漏洞而設計的。為了避免在其他地方產生的誤報, Burp在他的輸出上給了你自信,讓你集中精力到那些需要提供人類經驗和智慧的工作上。
Burp主動掃描能確認的問題大體上可分為下面 兩類:
1.在客戶端上的輸入漏洞,如:跨站點指令碼,HTTP訊息頭注入,開放重定向。
2.在服務端的輸入漏洞,如:SQL隱碼攻擊,作業系統命令注入,檔案路徑遍歷。
可以以非常高的可靠度探測到第 1類的問題。在大多數情況下,在客戶端上,和查詢漏洞相關的任何事情都是可見的。例如,為了探測反射型 XSS,Burp Scanner會在應用程式的每個入口點提交一些良性的輸入,並檢視回復的響應。如果有回覆,Burp會解析出響應的內容來確定回覆顯示的上下文。然後通過許多修改的輸入來確定在上下文裡組成一個攻擊的字串是否被回覆了。Burp Scanner有打破輸入過濾的廣泛能力,並且繞過 web伺服器的相關設定,來檢查所有使用的上下文。通過先前檢查的反饋對決策樹進行全面檢查,Burp能高效地模擬一個富有經驗並且有條不紊的測試人員的檢測行為,如一個輸入封裝計劃。第 2類問題本來就不適合使用自動化手段探測,因為大多數情況下和漏洞有關的行為只能發生在服務端,客戶端能看到的現象太少。例如,SQL隱碼攻擊漏洞會在響應中返回詳細的資料庫錯誤,或者完全地被遮蓋。Burp Scanner使用許多技術來確認盲服務端注入問題,有延時,改變布林條件,以及執行模糊的響應比較,等等。此時這些技術會比用在第 1類問題時產生更多的錯誤。然而,Burp Sanner在這裡卻實現了一個高的成功率,能可靠地發現許多問題,這對測試人員來說是費力的或者困難的來進行診斷。
3.被動掃描
在這種模式下,Burp不會向伺服器傳送任何新的請求。它只分析現存的請求和響應,並從中推斷出漏洞。在你訪問的任何授權應用程式,使用這種操作模式是安全和合法的。
只使用這種被動的技術,Burp Scanner能發現幾種漏洞,有:
1.明文提交的密碼。
2.不安全的 cookie屬性,如丟失 HttpOnly和安全標誌。
3.開放的 cookie範圍。
4.跨站點指令碼洩露 Referer資訊。
5.自動填充的表單。
6.SSL保護的緩衝區內容。
7.目錄遍歷。
8.提交的密碼會在後面返回的響應中。
9.不安全的會話令牌傳輸。
10.資訊洩露,如網際網路 IP地址,電子郵件地址,堆疊跟蹤,等。
11.不安全的檢視配置。
12.不清楚的,沒完成的,不正確或不標準的內容型別指示。
這些問題都是相對平淡的,對我們來說記錄它們顯得無聊和重複。但是作為一個滲透測試人員,有人責任指出它們。在你瀏覽應用程式一次時,Burp Scanner既然可靠地掃描出這些問題,你就應該理智清楚它們。
在下面的一些情況,只進行被動的掃描是有好處的:
1.因為被動掃描不必嚮應用程式傳送任何新的請求,你就可以安全地用在重要的應用程式上,你可以完全地控制傳送的每一個請求。
2.有些應用程式對攻擊的反應是很氣憤的,當收到一個惡意的請求時,會終止你的會話或者鎖定你的賬號。在這種情況下,只能一次次地進行手工測試,這時你可以通過被動掃描來確認許多問題,而不會出現麻煩。
3.如果你沒被授權進行攻擊一個目標,你可以像普通使用者那樣瀏覽應用程式使用被動掃描來確認漏洞。如果你提出了一個新的滲透測試方案,你可以通過被動掃描你的目標來獲得對安全狀態的瞭解,甚至在你進行測試之前,有希望發現一些公佈的問題。
4.開始掃描
Manual scanning在 Burp Suite的任何地方的都可以把一個或多個 HTTP請求傳送到Scanner執行主動或被動的掃描。例如,你使用 Burp Proxy攔截下一個感興趣的請求,你可以通過使用上下文選單,只對這一個請求進行掃描:
同樣地,你可以選擇目標站點地圖上或者歷史記錄裡的一系列的請求,把它們傳送到Scanner上。因此,在瀏覽完應用程式一圈並建立起它內容的全面地圖後,你就可以告訴 Burp掃描應用程式功能的特定區域:
如果你選擇了多個項並把它們傳送到主動掃描,Burp會啟動一個簡潔的嚮導,讓你微調你的選擇。嚮導的第一個畫面為你提供了許多直觀的過濾器來刪除那些需要的潛在項 (重複的,已經掃描過的,媒體內容,等等),以及顯示過濾器影響到的項有多少:
第二個嚮導畫面向顯示了剩下項的表單,你可以使用多種相關的屬性對錶格進行排序,檢視所有的請求和響應,以及刪除單個項:
這時嚮導設定已經完成,以平常方式來對這些選中進行掃描。
Live scanning可以使用另一種方式—”live scanning”來執行掃描。在這種模式下,你告訴 Burp你使用主動或被動掃描的目標範圍,然後它會自動啟動掃描,對你使用應用程式產生的相關請求進行主動或被動的掃描。當使用這種模式操作時,你需要作為一個普通使用者簡單地把應用程式訪問一圈,向 Burp顯示出應用程式內容和功能的位置,然後它就會在後臺進行查詢漏洞。當使用現場掃描時,你細微地控制著 Burp將要自動地掃描的請求。如果你已經為你的工作配置一個目標範圍,然後你可以簡單地告訴 Burp掃描屬於範圍內的每一個請求。另外,你可以自定義一個用來主動和被動的掃描範圍。在下面的這個例子裡,Burp配置為使用主動掃描傳送到 www.myapp.com的每一個請求,除了登陸請求,使用被動掃描傳送到其他目的地的任何請求:
注意現場掃描會忽略對媒體(影像,等)資源的請求,在這些資源裡請求不包含非 cookie引數。這些請求的靜態資源幾乎不會有任何安全問題,所以掃描器會忽略它們。 (這對手動掃描無效—如果你手動地選擇了這樣的一些項,並把它們傳送到主動掃描,這時它們當然會通過正常的傳送被掃描了)。
Active scan queue當你傳送請求到主動掃描時,它們會被立即處理。因為主動掃描會像伺服器傳送大量的請求,傳送的請求會被新增到一個佇列裡。一個有許多引數的經典請求會在 1到 2分鐘內掃描完,掃描佇列通過配置的執行緒池來掃描,所以等待掃描項的數目會變得非常大。當每一項都被掃描完時,掃描佇列表會顯示出它的進展——發出的請求數,完成百分比,確認的漏洞。根據接近最嚴重問題的可信度和嚴重性,把項的最後的值圖成了彩色:
你可以雙擊掃描佇列裡那些顯示已確認有問題的任何項,檢視項的基礎請求和響應:
你可以使用上下文選單在掃描佇列上進行許多操作:
1.顯示選中項的細節。
2.取消選中的項。
3.再次掃描選中的項。
4.暫停或繼續掃描器。
使用這些方法,Burp Scanner讓你對它做的每事情都細微地控制著,並和其他測試操作緊緊地結合在一起。它讓你設定自己感興趣的應用程式的區域的優先權,使用現場掃描瀏覽它們,或者從站點地圖選中它們進行掃描。它立即提供關於這些區域的反饋,來通知你的手動測試結果。
5.審查結果:
除了上面單個請求檢視裡發現的問題,Burp Scanner儲存了一份對所有發現的問題的彙總記錄,在一個目標應用程式的站點地圖的檢視樹上顯示出來。選中檢視樹上的一個主機或者資料夾顯示出在站點上這個分支列舉出的所有已確認的問題:
當發現同型別的多個問題時,這些問題會在皮膚的右上部彙總成一個問題。你可以展開這個彙總項來檢視每個有問題的例項。在皮膚右上部裡選中一個問題,在皮膚右下部裡顯示出這個問題的完整細節。這包含了自定義的漏洞諮詢,所有相關的請求和響應,來理解和再現這個問題。
諮詢包含了對了問題的標準描述和它的應對,以及這個問題特徵和整治手段的描述。在上面的例子中,跨站點指令碼諮詢告訴我們:
1.提供了攻擊輸入的請求引數(搜尋關鍵詞)。
2.響應中的輸入返回的上下文語法(在一個 JavaScript的片段裡的一個單引號分割的字串)。
3.這個應用程式在我們的輸入中過濾了單引號字元,但是卻沒過濾反斜槓,這就讓我們迴避了過濾器。
4.Burp嚮應用程式提交了理論上的有效載荷,這個有效載荷的格式被返回了。
5.這個原本的請求使用的是 POST方法,Burp能把它轉換成 GET方法的請求來方便地證實和發現這個問題。
Burp Scann對每一個發現的問題都給出了一個安全等級(高,中,低,資訊性的)和可信度(一定,堅定,暫定)。當使用一個不太可靠的技術確認一個問題時,Burp通過降低可信度來讓你注意。在諮詢的旁邊,Burp顯示了那些用來確認問題的請求和響應,並對相關部分進行加亮。你可以檢視 Burp是怎樣來確認這個問題的,並能迅速地明白這個漏洞的本質。你也可以把這些請求傳送到其他工具上進行手動驗證這個問題,或者微調 Burp蒐集的攻擊理論。
在掃描到的問題的列表裡,你可以對單個或多個的安全級別和可信度進行修改 (通過上下選單),或者集中刪除問題(通過上下文選單或使用”del”鍵)。
注意如果你刪除一個問題,Burp重新發現同一問題(例如,如果你重新掃描同樣的請求),這個問題會再次被報出。相反,如果你把這個問題標記為誤判,就不會出現相同的問題了。因此,刪除問題的最好辦法是再結果檢視樹上清除那些你不感興趣的主機或路徑。對於那些你不想要問題,當你正在使用它的功能時,可以使用誤判標記。
6.掃描優化:
Burp Scann會實時給提供正在執行的操作的細節資訊。在掃描佇列裡,你可以監視每一個基礎請求的掃描過程。這個表格向你顯示了 Burp放置有效負荷的”插入點”的數量,以及產生的攻擊請求的數量。(後者不是前者的一個線性函式,通過觀察應用程式的行為來反饋到後面的請求,就和一個測試人員一樣)。
這個資訊讓你可以快速地檢視掃描進度是否太慢,以及瞭解其原因。通過這個資訊,你可以採取一些手段來優化你的掃描。在掃描佇列裡一個上下文選單,你可以使用它對單個項進行取消或者重新設定優先權。通過你對應用程式的瞭解,你可以使用這個選項來對掃描器進行優化。
Attack insertion points掃描速度和效率的關鍵因素是攻擊插入點的選擇。Burp讓你能細微地控制著進行有效負荷攻擊的基礎請求的位置,這時你可以下面的配置項:
核取方塊讓你能夠定義使用 HTTP請求進行攻擊的位置:
1.URL,訊息體,以及 cookie引數的值。
2. Parameter name –如果被選中,Burp會新增一個引數到請求中,並且攻擊引數名字的位置,如果僅僅測試過引數值,常常能探測丟失的不尋常的錯誤。
3.HTTP headers –如果被選中,Burp會對 User-Agent和 Referer headers的位置進行攻擊,常常使用日誌功能來探測 SQL注入或儲存型 XSS的問題。
4. AMF string parameters –對動作訊息格式的請求,Burp攻擊那些基於字串資料型別的訊息。
5. REST-style URL parameters –如果被選中,Burp會攻擊那些有部分 URL路徑的每個目錄和檔名。
你可以對 Burp在個基礎請求中的攻擊插入點數量設定一個限制。偶爾,HTML表單裡會包含大量的區塊(幾百,或者更多)。如果 Burp對每個模組進行完全的漏洞掃描,這次掃描會花費大量的時間才能完成。如果你遇到表單的引數非常多時,設定一個插入點的限制數量,防止掃描止步不前。使用限制後,進入掃描佇列的項就會指示出跳過的插入點的數量,讓你能手動檢視這些基礎請求,然後決定是否值得對它的所有可能的進入點進行完整的漏洞掃描。
你可以告訴 Burp使用” intelligent attack selection”。這個選項讓 Burp執行或者忽略基於每個攻擊插入點基值的服務端檢查。例如,如果引數的值包含有不能在檔名中正常顯示的第 53頁字元時,Burp會跳過這個引數的檔案路徑遍歷檢查。使用這個選項可以大大加快掃描,而且這樣存在丟失實際存在的漏洞的風險也最小。
插入點配置讓你指出 Burp在服務端注入檢查跳過的引數。這些檢查相對比較消耗時間,因為 Burp傳送大量的盲目探測多種漏洞的請求。如果你認為請求裡的某個引數不會產生漏洞(例如,僅僅由平臺或者 web伺服器使用的內建引數),你可以告訴 Burp不要測試這些。(注意客戶端會檢查像執行的跨站點指令碼,因為如果一個引數沒有問題,每個請求引數的測試會花費掃描過程中最小開銷時間)
和其他值一樣,你可以通過 URL路徑的位置(用斜槓分開)來確認 REST引數。要這樣做,在引數下拉選單裡選中”REST parameter”,在項下拉選單選中”name”,然後指定你想排除測試的 URL路徑裡的位置序列號。你可以設定任意引數,Burp不會任何檢查的。
為主動掃描指定完整的自定義攻擊插入點是非常有可能的,所以你可以指定基礎請求的任意位置來放置攻擊字串。要使用這個功能,就需要把這個相關基礎請求傳送到 Intruder,通過常規方式使用有效負荷位置介面來定義每個開始/結束的插入點,並選中 Intruder選單選項裡的” actively scan defined insertion points”.Active scanning engine
這個選項讓你微調 Burp的掃描引擎,這依據應用程式的反應和自己的處理能力以及頻寬。如果你發現你的掃描進度很慢,但應用程式正常,CPU使用率很低,這時你可以加大掃描執行緒的數量來使你的掃描更快。如果你發現有連線錯誤產生,應用程式開始慢下來,或者你的電腦很卡,你就應該降低執行緒數量,並且增加處理網路錯誤數量和在處理暫停的時間。如果應用程式的功能是處理一個基礎請求介面和其他請求返回的響應直接的操作,你需要把執行緒數量降到 1,以確保每次只掃描一個基礎請求。如果你想避免應用程式超載,或者保持網路上隱身,你可以使用這個閥門設定來新增固定或隨機的請求間隔。
由於一些應用程式重定向到包含你提交的值的第三方 URL。Burp通過不跟蹤任何接收到的重定向,保護你在不經意間會攻擊第三方應用程式。如果掃描的請求是在定義的目標範圍內(例如,使用目標範圍來控制掃描的內容),Burp會只跟著範圍內的重定向。如果請求不在範圍內(例如,你可以手動執行一次對範圍外請求的掃描),Burp只跟蹤和已掃描的請求的主機埠一致的重定向,並且不能滿足範圍排除規則(如,”logout.aspx”)。
Active scanning areas
這些選項讓你在主動掃描時定義執行哪些選擇。每個執行的選擇都會增加請求的次數和整體掃描的時間。你可以根據自己對應用程式技術的瞭解,開啟或關閉單個選擇,或者對掃描要求有多嚴。例如,如果你知道應用程式不使用任何 LDAP,你就可以關閉 LDAP注入測試。在對每一個插入點進行全面的漏洞檢查之前,或者你可以配置 Burp在應用程式上進行一次快速的檢查,只查詢 URL和訊息體裡引數裡的 SQL注入和 XSS漏洞。
Passive scanning areas
被動掃描不會發生它自己的任何請求,並且每個被動檢測在電腦上的執行過程都是可以忽略不計的。不過,如果你對其中的一些項不感興趣或者不想看到它們的掃描結果,可以使單個的選項設為不可用。
7.報告:
當你完成測試後,可以把所有的或者選中的問題以 HTML格式匯出。要這樣,就選中顯示出的彙總結果裡需要的問題(可以選中多個主機,資料夾,問題等等),然後在上下文選單中選” report issues”。報告嚮導會讓你為自己的報告選擇許多項:
1.報告的格式(螢幕,列印)。
2.問題的描述級別和包含的建議。
3.是否顯示請求和響應的細節,或者像提取的,或者不是。
4.發現的問題類別是包含的還是排除的。
5.是否通過型別,安全或者 URL來組織問題。
6.報告的標題,及其大小,等等。
跨站點指令碼漏洞的報告會被優先顯示出來,所有的細節都列出來了,以友好的列印格式顯示出提取的應用程式響應的提取,像這樣:
你也可以使用 XML格式來報告這些問題,這樣能很容易地和其他工具整合在一起。XML有一個平整的結構,在每一個問題的報告中包含了問題的列表,通過 meta資訊來顯示問題型別,URL,等等。看起來像這樣的:
<!DOCTYPE issues [ <!ELEMENT issues (issue*)> <!ATTLIST issues burpVersion CDATA ""> <!ATTLIST issues exportTime CDATA ""> <!ELEMENT issue (serialNumber, type, name, host, path, location, severity, confidence, issueBackground?, requestresponse*)> remediationBackground?, issueDetail?, remediationDetail?, <!ELEMENT serialNumber (#PCDATA)> <!ELEMENT type (#PCDATA)> <!ELEMENT name (#PCDATA)> <!ELEMENT host (#PCDATA)> <!ELEMENT path (#PCDATA)> <!ELEMENT location (#PCDATA)> <!ELEMENT severity (#PCDATA)> <!ELEMENT confidence (#PCDATA)> <!ELEMENT issueBackground (#PCDATA)> <!ELEMENT remediationBackground (#PCDATA)> <!ELEMENT issueDetail (#PCDATA)> <!ELEMENT remediationDetail (#PCDATA)> <!ELEMENT requestresponse (request?, response?)> <!ELEMENT request (#PCDATA)> <!ELEMENT response (#PCDATA)> ]>
序列號是一個對其他單個問題的不同的長整數。如果你想從同一個 Burp例項上,多次匯出問題,你可以通過序列號來確認增加的新問題。
型別包含了一個用來唯一地確認查詢的內容型別(SQL注入,XSS等等)的整數,在不同的 Burp例項間,這個值是穩定的。
名字包含了相應的問題型別的描述名字。
路徑包含了問題的 URL(不包含查詢字串)。
位置包含了攻擊進入點的 URL和描述,以及相關項(一個特殊的 URL引數,請求訊息頭,等等)。
其他的項,有些事可選的,使用者可以通過報告嚮導來選擇,能進行自我解釋。
六、BurpSuite的攻擊模組(Burp Intruder):
1.Burp Intruder是什麼:
Burp Intruser是一個對 web應用程式進行自動化的自定義攻擊的工具。
Burp Intruder不是一個點選工具。要想高效地使用它,你需要明白目標應用程式是怎樣工作的,以及一些 HTTP協議的知識。在你使用 Burp Intruder進行攻擊之前,你需要調查清楚目標應用程式的功能和結構,尤其是再瀏覽器和伺服器直接傳輸的許多 HTTP訊息。你可以使用標準瀏覽器和 Burp Proxy攔截和檢視應用程式產生的請求和響應。當你確認了一些一些感興趣的 HTTP請求需要更嚴格的檢查時,你就已經為使用 Burp Intruder準備好。Burp Intruder是高度可配置的,並被用來在廣範圍內進行自動化攻擊。你可以使用 Burp
Intruder方便地執行許多工,包括列舉識別符號,獲取有用資料,漏洞模糊測試。合適的攻擊型別取決於應用程式的情況,可能包括:缺陷測試:SQL注入,跨站點指令碼,緩衝區溢位,路徑遍歷;暴力攻擊認證系統;列舉;操縱引數;拖出隱藏的內容和功能;會話令牌測序和會話劫持;資料探勘;併發攻擊;應用層的拒絕服務式攻擊。要想知道關於使用 BurpIntruder執行的這類攻擊的討論細節,可以檢視 The Web Application Hacker's Handbook的第13章。Burp Intruder有許多預設的攻擊”有效負荷”(在探索發現常規漏洞中有用的字串)列表。它包含了許多工具,這些工具動態地產生適合應用程式內的特定機制的攻擊載體。外部的檔案也可被載入並納入到 Burp Intruder(如,列舉使用者名稱的列表,新發型的漏洞的模糊字串)。
核心動作就是通過這些 HTTP請求重複地攻擊。在調查階段確認有基礎請求派生的請求。Burp Intruder以特殊方式操縱這些基礎請求來確認或探測應用程式漏洞。它使用一個或多個有效載荷來替換基礎請求中的一部分來實現這個過程。可以為每次攻擊配置時間和執行
方案。同時可以使用多執行緒來產生請求。限制請求可以防止入侵檢測系統的探測。拒絕服務模型可以使用請求來轟炸伺服器,這時會忽略所有接收到的響應。
當一次執行時,細節結果表格也就產生,顯示出從伺服器上接收到的每個請求的響應。結果裡包含了所有的相關資訊,可以使用它來查明一些感興趣或成功的響應。除了常見的每次攻擊的標準結果,在執行時可以對這些結果執行許多自定義的測試,這些結果同樣被記錄下來。例如,可以為 Burp Intruder精確配置指定一些 HTML頁面上的資訊(如,使用者資訊頁面上的個人細節資訊),並且在每個結果裡記錄這些資訊。可以為做進一步操作匯出所有結果,或者把它們當做輸入檔案進行下一步攻擊。
Burp Intruder是一個 Java應用程式,可以在任何有 Java Runtime環境的平臺上執行。它需要 1.5版本或者更新的。JRE可以免費從 java.sun.com上獲得。
2.配置 Burp攻擊模組( Intruder):
Burp Intruder控制皮膚讓你在他們的數字選項裡同時能配置一個或多個攻擊。你可以使用 Intruder選單建立一個新的選項或者重新命名現存的選項。在一些子選項(target, positions, payloads, options)裡進行每次攻擊配置。建立一個新攻擊的最簡單的方法是通過其他 Burp工具(如代理歷史記錄或站點地圖)定位相關的基礎請求,然後使用上下文選單裡的” send to intruder”。這將會用相關的細節來填充 target和 positions選項。當你建立一個攻擊選項時,可以通過 Intruder選單來控制怎樣設定 payloads和 options選項。通過這種方式,你可以在第一次攻擊選項(如模糊所有引數和搜尋錯誤訊息)裡設定一個標準的攻擊配置,然後把這些標準複製到傳送給 Intruder的每一次新攻擊裡。你可以使用Intruder選單在任意選項之間複製攻擊的配置,或者儲存載入攻擊配置。要開啟一次攻擊,需要設定攻擊配置資訊,然後在 Intruder選單上選擇” start attack”。下面的部分裡描述了配置選項的細節。要載入一個儲存的攻擊,需在 Intruder選單上選擇” open saved attack”,然後選擇需要的檔案[Professional]版本。
33.目標選項:
這個選項是用來配置目標伺服器的細節:
“host”區域是用來指定目標伺服器的 IP地址或者主機名。”port”區域是用來指定 HTTP/S服務的埠號。”use SSL”框是用來是否使用 SSL連線。
4.位置選項:
這個選項是用來配置在攻擊裡產生的所有 HTTP請求的模板:
主文字編輯器是用來設定基礎請求的內容,以及在攻擊時,標記出有效負荷插入到單個HTTP請求的位置。這有一個有許多功能的上下文選單。
設定攻擊模板的最簡單的方法是先定位出在一個其他 Burp工具裡的相關請求,然後選中” send to intruder”選項。你可以從 Burp Suite裡的任何顯示出一個 HTTP請求或響應的地方傳送請求,也可以從 Burp Proxy歷史記錄,站點地圖裡的檢視樹或者表格,以及從一個準備執行攻擊的 Burp Intruder:
使用一對§字元來標記出有效負荷的位置,在這兩個符號直接包含了模板文字的內容。當把一個有效負荷放置到一個給出的請求的特殊位置上時,就把這§符號放到這個位置,然後在兩個符號之間的出現的文字都會被有效負荷替換。當有個特殊位置沒有為一個給出的請求安排有效負荷時(這隻適用”sniper”攻擊型別—看下面),那個位置的§字元會被刪除,出現在它們之間的文字不會變化。
當使用 Burp Suite傳送一個其他地方的請求時,Burp Intruder會對你最想放置有效負荷的位置做一個最好的猜測,並且它把這些放置在每個 URL和主體引數的值裡,以及每個cookie裡。每個標記和它中間的文字都會被加亮以顯得更清晰。你可以使用 Intruder選單上的選項標記的位置是要替換還是附加現有的引數值。在上面的請求編輯器裡,指出了定義位置的數量和文字模板的大小。
你可以使用選項上的按鈕來控制位置上的標記:
1. add § —在當前游標位置插入一個位置標記。
2. clear § —刪除整個模板或選中的部分模板裡的位置標記。
3. auto § —這會對放置標記的位置做一個猜測,放哪裡會有用,然後就把標記放到相應位置。這是一個為攻擊常規漏洞(SQL注入)快速標記出合適位置的有用的功能,然後人工標記是為自定義攻擊的。
4.refresh —如果需要,可以重新整理編輯器裡有顏色的程式碼。
5.clear —刪除整個編輯器內容。
注意自動放置有效負荷位置需要識別出當前選中的請求模板內的 XML格式的資料。一些應用程式會在一個請求主體裡傳送封裝的 XML格式的資料,如:
POST /function HTTP/1.0 Content-Type: multipart/form-data; boundary=weidhwiderfhwiuehwiuehfwerrf Content-Length: 202 --weidhwiderfhwiuehwiuehfwerrf Content-Disposition: form-data; name="data" <data> <param1>foo</param1> <param2>bar</param2> <param3>123</param3> </data> --weidhwiderfhwiuehwiuehfwerrf—
如果你在整個訊息裡都執行自動放置有效負荷的位置,Intruder會用單個插入點標出所有的 XML塊,這些塊未必都是你想要的。相反,如果你手動地選出那些 XML塊,自動放置功能是識別出包含 XML的選擇,並把單個 XML引數值標記為插入點。
“attack type”下拉選單是用來定義 Burp Intruder行為的一個關鍵方面—為單個請求把有效負荷放置特定位置的方式。下面列出 4個可能的攻擊型別:
sinper —這使用了單個有效負荷集合。它的目標是在每個位置上,並把每個有效負荷按順序地插入到這些位置上。請求中的不是目標的位置不受影響—位置標記會被刪除並且它們之間的模板裡的文字不會變化。這類攻擊型別對單獨使用資料域來測試常規漏洞 (如,跨站點指令碼)非常有效。攻擊產生的大量請求是位置數量和有效負荷數量的產品。battering ram —這使用了單個有效負荷集合。它是通過有效負荷迭代,並一次在所有定義的位置插入有效負荷。當一次攻擊需要在 HTTP請求(如,Cookie訊息頭和訊息體裡的使用者名稱)中的多個位置上插入相同的有效負荷時,這個攻擊型別非常有用。攻擊產生的所有請求數量就是有效載荷的數量。
pitchfork —這個是用在多個有效負荷集合。在每個定義的位置有不同的有效負荷集合(最多 8個)。攻擊同時通過所有的有效負荷集合進行迭代,並在每一個位置上插入一個有效載荷。例如,第一個請求會把第一個有效負荷集合裡第一個有效負荷插入到第一個位置,第二個有效載荷集合裡的第一個有效負荷插入到第二個位置。第二個請求會把第一個集合裡的第二個有效負荷插入到第一個位置,把第二個有效負荷裡的第二個有效負荷插入到第二個位置,等等。當攻擊需要將不同的但相關的輸入插入到 HTTP請求(如,一個資料域裡的使用者名稱,以及在其他資料域裡的一個和使用者名稱相關的 ID號)的多個位置裡時,這個攻擊型別會有用的。攻擊產生的所有的請求數量是最小有效負荷集合裡的有效負荷數。
cluster bomb—這個使用了多個有效負荷集合。每個定義的位置(最多 8個)都有一個不同的有效負荷集合。攻擊會按照每個有效負荷集合的順序進行迭代,於是所有的有效負荷排列組合都會被測試。例如,如果有 2個有效負荷位置,攻擊會把第一個有效負荷集合裡的第一個有效負荷放置在第一個位置,在位置 2裡會迭代第二個有效負荷裡的所有有效負荷;然後他會把第一個集合裡第二個有效負荷放在第一個位置,然後在位置 2上迭代集合 2裡的所有有效負荷。當攻擊需要在 HTTP請求(如,一個引數裡的使用者名稱和另一個引數裡的密碼)裡插入不同的並且不相關的輸入時,這個攻擊型別會很有效。攻擊產生的請求數量是在所有定義集合裡的有效負荷數量—應該是最大值。
5.有效負荷選項:
這個選項是用來配置一個或多個有效負荷的集合。如果定義了 “ cluster bomb”和”pitchfork”攻擊型別,然後必須為每定義的有效負荷位置(最多 8個)配置一個單獨的有效負荷。使用” payload set”下拉選單選擇要配置的有效負荷。對於每個有效負荷集合,都會定義一個有效負荷 “源”(如,preset list, character blocks,brute forcer)來使用,並且在每個有效負荷上執行多種附加的處理。在 Burp Intruder中有大量的可用的有效負荷源。其中的一些是高度可配置的,並且提供了許多自定義攻擊。通過下拉選單為當前有效負荷選中源。每個有效負荷源在下面都一一介紹。
6.有效負荷源
Preset list
這是一個簡單的有效負荷源,配置有效負荷的預設列表:
配置列表的主控制檯在皮膚的右下方。可以通過文字框和”add”按鈕手動地新增項。可以通過下拉選單” add from list”來新增有用的有效負荷預設列表,包括常用的使用者和密碼,以及用來探測像 SQL注入的這樣常規漏洞的字串。”load”按鈕是用來匯入檔案的。”paste”按鈕式用來新增貼上板上的列表項。 “delete”按鈕刪除選中的項,”clear”按鈕刪除列表裡的所有項。
你可以通過” add from list”選單自定義有效負荷的預設列表。首先,選擇 Intruder選單裡的” configure preset payload lists”,然後選擇你自己的包含有效負荷檔案的目錄。你可以使用”copy”按鈕把 Burp的內建有效負荷列表複製到你自定義的目錄,和你的有效負荷列表一起使用:
Runtime file
這個有效負荷源配置了一個外面的文字檔案,在執行時可以通過這個檔案讀取裡面的有效負荷。當需要一個非常大的預設有效負荷列表時,這很有用了,避免了把整個列表都放到記憶體裡。從檔案裡的一行讀取一個有效負荷,因此有效負荷不會包含換行符。
Custom iterator
這個有效負荷源提供了一種強大的方式,通過給出的模板,來產生自定義的字元和其他項的排列。例如,使用表單裡個人編號 AB/12,工資應用程式來識別單個人員;你需要通過迭代所有的人員編號來獲取所有個人細節。
自定義的迭代器定義的用來產生排列的位置不能超過 8個。每個位置使用一個列表來配置,以及一個可選的分隔符,這個分隔符是被插入到那個位置和下一個之間。在上面的例子中,位置 1和 2是用 A-Z項來配置,位置 3和 4用 0-9項來配置,並且位置 2會被設定分隔符/。當執行攻擊時,自定義的迭代器會迭代每個位置裡的項,以覆蓋到所有的排列可能。
因此,在這個例子中,有效負荷的總數量等於 26*26*10*10.“scheme”下拉選單用來為自定義迭代器選擇一個預設的配置。這些可以被許多標準的攻擊或者自定義攻擊的修改使用。可用的 scheme有”目錄/副檔名”,這些可以被用來列舉web內容,”密碼+數字”可以為密碼猜測攻擊提供一個擴充套件的字元列表。
在右下方得控制按鈕是用來配置每個位置上的項。他們的功能和在 preset list source中一樣。”clear”按鈕是刪除自定義迭代器上所有位置裡配置。
Character substitution
這個有效負荷源需要一個有效負荷項的預設列表,在自定義規則下,通過用不同字元把替換項裡的單個字元,然後從這些項裡產生許多有效負荷。這個有效載荷源在密碼猜測攻擊中很有用。例如,在字典單詞上產生許多變化:
在右下方的控制項是用來配置預設項的列表。它們的功能和上面的一樣。右面的核取方塊列表是用來配置提交規則。當攻擊執行時,字元提交源會按順序地處理每個預設項。對於每個項,它都會產生一些有效負荷,來包含通過提交規則提交的字元的所有排列。例如,對於上面截圖裡的第一個項,就會產生下面的有效負荷:
aahed
4ahed
a4hed
44hed
aah3d
4ah3d
a4h3d
44h3d
Case substitution
這個有效負荷源需要一個有效負荷項的預設列表,調整每一項裡的字元,從這些項裡產生出一個或多個有效負荷。這個有效負荷源在猜測密碼攻擊時,會很有用。例如,在字典單詞上產生許多變化:
右下方得控制項是用來配置預設項的列表。它的功能和上面的一樣。
右邊的核取方塊是用來配置提交規則。可用的規則執行下面的功能:
no change —這個項是讓不要修改有效負荷集合。
to lower case —所有的字母被轉換成小寫的,並且結果新增到有效負荷集合。
to upper case —所有的字母被轉換成大寫的,並且結果新增到有效負荷集合。
to Propername —項裡的第一個字母轉換成大寫,後面的字母轉換成小寫,結果新增到有效負荷集合。
to ProperName —項裡的第一個字母轉換成大寫,後面的字母不變,結果新增到有效負荷集合。
當攻擊執行時,提交源會按順序執行每一個預設項。對於每個項,它都會使用選中的提交規則產生一個有效負荷。如果這個規則產生了一個全新的有效負荷,它就會被加到有效負荷集合裡(如,重複的有效負荷會被丟棄)。例如,對於上面截圖裡的第一個項,就會產生下面的有效負荷:
aahed
AAHED
Aahed
Recursive grep
這個有效負荷源帶有”extract grep”功能(下面會介紹)。它允許通過對早期請求的響應來遞迴地產生有效負荷。”extract grep”功能會通過匹配一個正規表示式來捕獲一個伺服器響應的一部分。和"recursive grep"一起,從先前的伺服器響應捕獲的文字將用作後續請求的有效負荷。
這可以用在許多的列舉任務裡。例如,可以用來通過 SQL注入來列舉資料庫的內容,遞迴查詢格式為:
union select name from sysobjects where name>'a'
伺服器的錯誤資訊會洩露一個資料庫物件的名字:
Syntax error converting the varchar value 'accounts' to a column of data type int.
使用” accounts”,再查詢確認下一個物件。使用 recursive grep有效負荷可以簡單地自動執行這個任務,進而快速地列舉出資料庫裡的所有物件。有效負荷裡使用的第一個請求必須是手動指定的。當重複連續地發現 recursive grep項時,就可以停止了,因為這就說明了列舉已經完成。注意由於有效載荷的本質屬性,使用它的攻擊就不能進行多執行緒請求。
Illegal Unicode這個有效負荷源需要一個有效負荷項的預設列表,在每一項裡用指定字元的非法Unicode編碼替換字元本身,從這些項裡產生出一個或者多個有效負荷。在嘗試迴避基於模式匹配的輸入驗證時,這個有效負荷會有用的,例如,在防禦目錄遍歷攻擊時../和\..序列的期望編碼的匹配。
右下方的控制項是用來配置預設項的列表。它的功能和上面的一樣。頂端的 2個文字框是來配置在每個預設項裡提交的字元(*那裡),以及為非法編作基礎的字元(/那裡)。可以通過字母的 ASCII編碼或者 2位十六進位制編碼來指定這個字母—這對於指定那些無法列印的字元是很有用的,如空字元。
中間的控制項是用來產生非法編碼的型別。在下面解釋:
maximum overlong UTF-8 length Unicode編碼方案允許最多使用 6位元組表示一個字元。使用一種型別就可以正確地表示出 (0x00-0x7F) Basic ASCII字元。然而,使用多位元組的Unicode方案也能表示出它們(如,”overlong”編碼)。下拉選單用來指定是否使用超長編碼,以及應該設定的最大使用型號。
illegal UTF-8 variants如果選擇的最大超長 UTF-8長度為 2位元組以上,這個選項是可用的。當使用多位元組編碼一個字元時,第一個位元組後面的位元組應該用 10XXXXXX這樣的二進位制格式,來指出後續的位元組。然而,第一個位元組裡最有意義的位會指出後面還有多少後續位元組。因此,Unicode編碼例程會安全地忽略掉後續位元組的前 2位。這就意味著每個後續位元組可能有 3個非法變種,格式為 00XXXXXX,01XXXXXX和 11XXXXXX。如果選中這個選項,則非法 Unicode有效負荷源會為每個後續位元組生成 3個附加編碼。
max permutations如果選擇的最大超長 UTF-8長度為 3位元組以上,這個選項可用,並且選中” illegal UTF-8 variants”。如果” max permutations”沒被選中,則在生產非法變種時,非法 Unicode有效負荷源會按順序處理每個後續位元組。為每個後續位元組產生 3個非法變種,並且其他的後續位元組不會改變。如果” max permutations”被選中了,然而,非法 Unicode有效負荷源會為後續位元組生成所有的非法變種排序—如,多個後續位元組會同時被修改。在目標系統上回避高階模式匹配控制時,這個功能就會很有用。
illegal hex這個選擇基本上一直可用。當使用超長編碼和後續位元組的非法變種(如果選中)生成非法編碼項列表時,通過修改由此產生的十六進位制編碼可能會迷惑到某種模式匹配控制。十六進位制編碼使用字元 A—F代表十進位制 10—15的值。然而有些十六進位制編碼會把 G解釋為 16,H為 17,等等。因此 0x1G會被解釋為 32。另外,如果非法的十六進位制字元使用在一個 2位數的十六進位制編碼的第一個位置,則由此產生的編碼就會溢位單個位元組的大小,並且有些十六進位制編碼只使用了結果數字的後 8個有效位,因此 0x1G會被解碼為 257,而那時會被解釋為 1。每個合法的 2位數的十六進位制編碼有 4—6種相關的非法十六進位制表示,如果使用的是上面的編碼,則這些表示會被解釋為同一種十六進位制編碼。如果”illegal hex”被選中,則非法 Unicode有效負荷源會在非法編碼項列表裡,生成每個位元組的所有可能的非法十六進位制編碼。
max permutations如果選中的最大超長 UTF-8長度為 2位元組以上並且” illegal hex”也被選中,則這個選項可用。如果” max permutations”沒被選中,在生成非法十六進位制編碼時,非法 Unicode有效負荷源會按順序處理每個位元組。對於每個位元組,會生成 4—6個非法十六進位制編碼,其他的位元組不變。如果” max permutations”被選中,然而,非法 Unicode有效負荷源會為所有的位元組,生成非法十六進位制的所有排序—如,多個位元組會被同時修改。在目標系統上回避高階模式匹配控制時,這個功能會非常有用。
add % prefix如果選中這個選項,在產生的有效負荷裡的每個 2位數十六進位制編碼前面,都會插入一個%符號。
lower case hex這個選項決定了是否在十六進位制編碼裡使用大小寫字母。
max encodings這個選項為會產生的非法編碼數量放置了一個上界。如果大量使用超長編碼或者選中了最大排序,這個選項會很有用,因為那會生成大量的非法編碼。當攻擊執行時,這個有效負荷源會迭代所有預設項列表,在非法編碼集合裡,每個預設項替換每個項裡的指定字元的所有例項。
Character blocks
使用一個給出的輸入字串,這個有效負荷源產生指定大小的字元塊。在對本機 (非託管)上執行的軟體進行探測緩衝區溢位和其他邊界條件漏洞時,這個選項很有用。
“string”欄位指定了輸入字串,從這裡產生字元塊。”min”和”max”欄位指定了產生字元塊的最小和最大長度。”step”欄位指定了每個字元塊的長度增量。
Numbers
這個有效負荷產生的數字,是順序的或者隨機的,使用一個指定的格式:
“from”和”to”欄位指定了產生的最小和最大的數。如果選中” sequential”,數字就以”from”欄位裡的值作為起點,以” step”欄位裡的值做為增量。如果選中” random”,”howmany”欄位指定生成數字的數量。數字是以十進位制或者十六進位制的格式生成。如果選中十六進位制,則”form”,”to”以及”step”欄位必須是十六進位制整數;否則是十進位制的整數或分數。在右手邊的控制項指定了要用到的數字格式。Dates這個有效負荷在一個指定的範圍內,在一個指定的間隔內,以一個指定的格式,產生日期。這個選項在資料探勘(拖出在不同天裡的訂單條目)或者暴力攻擊(猜測一個由生日組成的使用者認證)中有用。
產生的日期是從”from”控制項裡指定的日期開始,使用”step”控制項裡指定的間隔來增加,直到或者包含了”to”控制項裡的指定日期。在”format”下拉選單裡可以選擇一些預設的日期格式,或者自定義一個可以在文字欄位裡輸入的日期格式。下面的例子說明了可以用來指定自定義的日期格式的編碼:
E Sat
EEEE Saturday
d 7
dd 07
M 6
MM 06
MMM Jun
MMMM June
yy 03
yyyy 2003
/ . : etc
/ . :
Brute forcer
這個有效載荷源產生一個指定長度的有效載荷集合,這裡麵包含了指定字符集的所有排序可能。
Null payloads
這個有效載荷源能產生”null”有效載荷—如,0長度的字串。它可以產生一個指定數量的空有效載荷,也可一直繼續下去。
當一次攻擊需要重複同一請求,而不是做修改的基礎模板,這個有效載荷就有用了。要完成這個工作,把一對位置標記一起放在請求模板的一個位置。這個可以在許多攻擊中使用,例如測序分析中獲取 cookie,應用層的拒絕服務攻擊,這裡通過重複傳送請求以在伺服器上執行一個超載任務,保持一個用在其他地方進行斷斷續續測試的會話令牌。Char frobber
這個有效載荷是在每個有效載荷位置現有基值或者知道的字串上進行操作的,它通過一次一個字元,在基類字串上迴圈,把那個字元 ASCII碼加 1。
當測試引數值或部分值哪個更影響應用程式的響應,這個有效載荷源就有用了。特別是在測試複雜的會話令牌的哪一部分實際上是用來跟蹤會話狀態的。如果你修改會話令牌裡的單個字元的值後,在你的會話裡,請求仍然能被處理,則就有可能是這個字元不是用來跟蹤你的會話的。
Bit flipper
這個有效載荷是在每個有效載荷位置現有基值或者知道的字串上進行操作的,它通過一次一個字元,在基類字串上迴圈,翻轉順序上的每(指定的)一位。
你可以配置位翻轉要麼為了操作字面基礎值,要麼把基礎值當成 ASCII十六進位制字串。例如,如果基礎值是”ab”,則通過字面字串操作和翻轉所有的位,產生下面的有效載荷:
`b
cb
eb
ib
qb
Ab
!b
áb
ac
a`
af
aj
ar
aB
a"
aâ
如果是”ab”當做一個 ASCII十六進位制字串,然後翻轉所有位,就得到下面有效載荷:
aa
a9
af
a3
bb
8b
eb
2b
這個有效載荷源非常有用在對 char frobber相似的情況下,但你需要有細微控制權。例如,如果一個會話令牌或者其他引數值包含一個有意義的資料,但這個資料使用了一種 CBC模式密碼加密了,就由可能通過修改前面密碼塊裡的位來系統地改變部分加密資料。在這種情況下,你可以在有效載荷源上使用位翻轉來確定修改加密值裡的單個位的影響,弄清楚應用程式是否有漏洞。
Username generator
這個有效載荷源需要人名作為輸入,使用許多常規方案來產生使用者名稱。
例如,提供”peter weiner”這個名字,就會產生 115個可能的使用者名稱,如下:
peterweiner
peter.weiner
weinerpeter
weiner.peter
peter
weiner
peterw
peter.w
wpeter
w.peter
pweiner
p.weiner
weinerp
weiner.p
。。。
如果你的目標是一個特殊人物的使用者,這個有效載荷源就有用了,並且你不知道應用程式裡使用的使用者名稱或電子郵件地址方案。
有效載荷的處理(Payload processing)
對於每個有效載荷集合,除了使用有效載荷的”源”,在每個有效載荷上可能執行定義的許多附加處理過程。選中有效載荷源執行所有操作後,這個處理過程就開始了:
執行佇列中的定義規則,並且通過切換開關來幫助排除配置中的問題。可用下面型別的
規則:
1.新增字首
2.新增字尾
3.匹配/替換
4.子字串(從一個指定的偏移到一個指定的長度)
5.轉換子字串(從有效載荷的結尾索引的子字串)
6.修改狀況(一些為 case substitution的有效載荷源選項)
7.編碼(URL,HTML,Base64,ASCII十六進位制以及多平臺的組合字串)
8.解碼(URL,HTML,Base64,ASCII十六進位制以及多平臺的組合字串)
9.雜湊表
10.新增原來的有效負荷(如果你需要在同一個有效載荷裡包含原來的和雜湊格式,這會有用)。
最後,你可以配置最終的有效載荷裡的字元,把它進行 URL編碼,這樣在 HTTP請求裡更安全地傳輸。
建議使用最終的 URL編碼配置,而不是一個有效載荷過度規則。因為 payload grep選項是用來在使用最終的 URL編碼之前為顯示的有效載荷檢查響應。
選項卡(Options tab)
這個選項裡包含了許多配置控制著單個攻擊行為的選項。
如果選中”update Content-Length header”框,Burp Intruder會使用每個請求的 HTTP主體長度的正確值,新增或更新這個請求裡 HTTP訊息頭的內容長度。這個功能對一些需要把可變長度的有效載荷插入到 HTTP請求模板主體的攻擊是很有必要的。這個 HTTP規範和大多數 web伺服器一樣,需要使用訊息頭內容長度來指定 HTTP主體長度的正確值。如果沒有指定正確值,目標伺服器會返回一個錯誤,也可能返回一個未完成的請求,也可能無限期地等待接收請求裡的進一步資料。
如果選中”set Connection: close”框,則 Burp Intruder會新增或更新 HTTP訊息頭的連線來請求在每個請求後已關閉的連線。在多數情況下,這個選項會讓攻擊執行得更快。注意:早期的 Burp Intruder版本在這裡包含往請求裡新增 cookie頭的選項,這是依據不同請求的響應。現在這些配置被刪除了,你可以使用 suite-wide session handling support來代替。
concurrent threads設定決定了攻擊是否使用單執行緒或多執行緒來同步地載入請求。使用多執行緒能迅速地加快一次大型攻擊,影響時間的主要因素就是處理請求和接收響應之間的延時。這可以用來測試應用程式漏洞的併發處理。這也可用來增加應用層拒絕服務的效果。retry設定決定了如果產生網路錯誤(如,連線被拒絕或超時),Burp會重發一個請求的次數,以及等待的時間間隔。
throttle設定用來配置請求之間需要的延時。可能會需要一個固定的延時作為隱形的防護措施,來保留頻寬和處理能力,以避免影響其他活動,這樣就可以定期執行請求操作,如保持一個斷斷續續地用在其他地方測試的會話令牌存活。一個可變的延時會對自動探測會話超時值很有用。
start設定決定了攻擊在載入時是否立即執行,或者在一個指定的延時後開始,或者一直等到選中”恢復”命令。如果配置的一個攻擊需要在一些未知點上執行,或者為以後的使用儲存,那麼這個功能就有用了。
storage設定決定了攻擊是否會儲存單個請求和響應的內容。儲存請求和響應需要在消耗臨時目錄裡的磁碟空間,但能讓你在攻擊時完整地檢視它們,如果需要可以重複發請求,也可以把它們傳送到其他 Burp工具上。
如果選中”make unmodified baseline request”,這時除了配置攻擊請求,Burp還會除了模板請求,使用所有有效載荷位置來設定它們的基礎值。這樣請求在結果表格裡會以#0項顯示出來。
如果選中”DoS mode”,則攻擊會和平常一樣地處理請求,但不會等待處理伺服器返回的響應。當每個請求都處理完後,關閉 TCP連線。這個功能可以通過重複地傳送請求,使伺服器執行超負荷任務,來對有漏洞的應用程式執行應用層的拒絕服務攻擊。如果選中”store full payloads”,Burp會完整地儲存每一個結果的有效載荷值。這個選項會消耗一些記憶體,如果你想在執行時執行某種操作,這個就可能是需要的了,如修改有效載荷的 grep設定,重新處理一個使用修改請求模板的請求。
“grep”設定是用在執行時,配置在伺服器響應裡執行的模式匹配測試。這有 3種測試型別:
1. match grep —這個是用來檢查每個伺服器響應裡指定表示式,要麼簡單的模式匹配,要麼 Perl—like正規表示式。對於每個指定的表示式,攻擊會在結果表裡包含一個列來指明是否找到一個匹配。基本功能有廣泛的應用,例如:密碼猜測攻擊,掃描”密碼錯誤”或者”登陸成功”的短語,SQL注入漏洞測試,掃描包含”ODBC”“error”的訊息,等等。如果使用正規表示式來匹配表示式,可能會包含換行符。
2. extract grep —這個是用來檢查每個伺服器響應裡指定表示式,是否存在緊隨匹配表示式的要提取的文字(知道指定的符號或者最大長度)。對於每個指定的表示式,攻擊都在結果列表裡包含一個從伺服器響應裡提取的文字的列。這個功能可以用來進行資料探勘,通過資料探勘能獲得 web頁面裡的有用資訊,並且需要一個提取這些資訊的自動化方法。例如,如果你獲得了一個通向管理員使用者的頁面,通過它能夠修改由 URL查詢字串指定的 ID的使用者的賬戶資訊,這時重複地通過使用者 ID來提取每一位使用者的使用者名稱和密碼。
3. payload grep —這個是用來檢查每個伺服器響應中的用在相關請求中的有效載荷字串。這個功能在探測跨站點指令碼和其他響應注入漏洞中會有用。這漏洞產生在使用者把輸入動態插入到應用程式的響應裡。
如果選中”match against pre-encoded payloads”,則會搜尋響應裡的每一個應用編碼之前的有效載荷字串的原來格式。設定的這些常常都是很有必要的,例如,如果你使用 XSS測試有效載荷裡的印刷字元,這通常需要在有效載荷處理選項裡的 URL編碼,但如果應用程式有漏洞,就會在響應裡顯示出每個編碼格式。
這重定向設定控制了 Burp Intruder在執行攻擊時,是否跟蹤 HTTP重定向(如,有 3xx狀態碼和包含一個新 URL的 Location header)。如果配置跟蹤重定向,則 Intruder在接收到一個重定向時,會請求這個重定向 URL(如果需要,最多跟蹤 10個重定向),並在結果裡記錄下後續響應的細節。在結果表格的一個列裡會顯示是否為每個結果跟蹤重定向。你可以配置是否只跟蹤站點(如,相同協議,主機和埠)重定向,或者只跟蹤範圍內(在目標範圍定義的)重定向,或者跟蹤所有的。
當一個應用程式對許多型別的輸入都返回一個 3XX的響應,這個跟蹤重定向的選項就會有用,在請求重定向目標時,會返回應用程式處理請求的感興趣的特徵。例如,當使用模糊技術測試常規漏洞時,應用程式會頻繁地返回一個到錯誤頁面的重定向,這個頁面可能包含了關於錯誤本質的有用資訊,通過這個錯誤能診斷出像 SQL注入這樣的問題。
注意在跟蹤重定向時,大多數情況下,要使用單執行緒進行攻擊,例如,如果應用程式儲存了下一個指向重定向目標的請求返回的會話資訊。同樣要注意自動地跟蹤重定向有時會給你的攻擊帶來一些麻煩—例如,一些應用程式會對一些惡意請求響應到一個登出頁面的重定向,這時跟蹤重定向會導致你的會話終止,然而它不來不應該這樣做。
如果選中”process cookies in redirects”,當跟蹤重定向上時,任意設定為 3XX響應 cookie都會被提交。例如,當你嘗試暴力進行登入挑戰時,通過重定向頁面來指示登入結果,並且每次的登入嘗試都會有建立一個新的會話,這個就需要這個選項了。
啟動一次攻擊(Launching an attack)
為了建立一次新的攻擊,使用控制皮膚選項來設定需要的配置資訊,然後選擇 Intruder選單上的”start attack”。要想載入一個儲存的攻擊,選擇 Intruder選單上的”open saved attack”,然後選擇所需的檔案。
當執行一次新的攻擊時,會在指定的配置資訊上執行許多驗證審查。這包括驗證有效載荷位置和有效載荷集定義是否正確,時序和 grep設定是否可行,等等。有些故障會產生一些阻礙執行攻擊的錯誤;產生的其他警告則會被忽略。
每次攻擊都開啟了一個分離的視窗。這個視窗顯示出攻擊產生的結果,使你能夠實時修改攻擊配置,同樣也包含了的一系列控制選項,有儲存結果,伺服器響應和攻擊自身。注意:當修改一個正在執行的攻擊配置時,你應該小心地處理,在修改之前最好暫停。
結果選項(Results tab)
下面顯示的就是一次執行的攻擊的結果檢視例子,在目標 web站點上列舉的基本內容:
這次攻擊使用了 sniper攻擊型別,對一系列常用的 web目錄進行請求。對於這次攻擊,結果檢視顯示了預設的每次請求次數,使用的有效載荷位置,插入的有效載荷,從伺服器上接收的 HTTP狀態碼,是否產生了超時或錯誤,以及伺服器響應的長度。附加的結果列顯示了,每個請求的"received response"和"finished response"計時器,以及接收到的 cookie。許多配置選項,如 grep功能,這會讓附加列在結果檢視裡顯示出來。使用”view”選單來隱藏和顯示這些列。通過單擊結果列的相關標題頭,來對整個結果集進行排序(按住 shift單擊可以轉換排序方式)。按住 Ctrl+單擊標題可以複製該列的內容。[專業版]
一個對攻擊結果進行有效解釋的關鍵部分,定位在感興趣或成功的伺服器響應,以及產生這些響應的請求。通常情況下感興趣的響應分為下面幾種:
1.一個不同的 HTTP狀態碼。
2.一個不同長度的響應。
3.某個表示式存在或不存在。
4.一個錯誤或超時的產生。
5.接收或完成響應的時間。
例如,在一個探索內容的測試中,請求一個現存的資源,會返回一個長短不一的”200OK”的響應,然而請求一個不存在的資源時,會返回一個”404 not found”的響應,或者返回一個包含固定長度的自定義出錯頁面。在一次密碼猜測攻擊中,登陸失敗會產生一個包含關鍵字”login failed”的”200 OK”的響應,然而成功的登陸會產生一個”302 Object moved”的響應,或者一個包含關鍵字”welcome”的不同長度的”200 OK”的響應。
Burp Intruder可以提供一些幫助來確認上面的那些區別。grep功能可以用來標記那些已知關鍵字的響應,或者從頁面的關鍵部分提取感興趣的資訊。在結果檢視裡,可以通過單擊列標題來對結果排序,或者按住 shift+點選標題來倒置排序。在上面的例子裡,HTTP狀態碼是感興趣結果的主要區別,並且可以通過排序查明這些。
你可以通過新增批註和加亮來註釋一個或多個項:
你可以使用最左邊度的列表裡的下拉選單來加亮單個項:
你可以通過雙擊並編輯單元格就地對單個項進行註釋:
當你已經註釋好感興趣的請求時,以後你就可以使用列排序和顯示過濾器來快速地找到這些項。
如果攻擊被配置為儲存請求或/和響應,你就可以通過預覽表格來檢視這些,或者通過雙擊來顯示這些請求和響應的細節。這些顯示提供了細節分析和呈現出每個 HTTP訊息。"previous"和"next"按鈕可以用來迴圈結果集。如果結果檢視裡的表已被排序,則結果會以當前序列顯示在那個檢視裡。
如果攻擊是被配置來跟蹤重定向,在初始清求和最後響應的旁邊,所有的中間響應和請求都會被顯示出來。
如果你使用”action”按鈕來傳送請求或響應到其他 Burp Suite工具裡,如 Repeater。你可以在結果表裡的項上右擊來顯示一個有許多選項的上下文選單:
你可以傳送選中的項到其他工具,新增多個項到 Suite站點地圖上,使用批註和加亮來註釋這些項,或者把項標記為重新請求。如果網路錯誤或其他問題影響了一些結果,這個選項就會有用了。如果你在攻擊時修改了一些基礎請求模板或者其他的項,如果可以,要被重發的請求會使用當前的配置進行重組。於是,例如,如果你的應用程式會話在攻擊中被部分地終止了,你可以修改基礎會話模板使用一個新的會話令牌,並重新處理任何失敗的請求,使用你的新會話來執行。
在結果表的頂端是一個過濾欄,你可以使用它來隱藏一些結果,有 HTTP狀態碼,搜尋項,以及使用者使用的註釋:
和過濾器一樣,通過選中結果表裡的一個或多個項,然後選擇上下文選單裡的”delete”,你可以永久地刪除結果裡的項。
7.結果選單:
結果檢視裡包含了許多有控制攻擊命令的選單,和儲存結果,伺服器響應和攻擊自身。它們將在下面為大家介紹。
8.攻擊選單:
這裡包含了暫停,繼續,重複攻擊的指令。
9.儲存選單:
attack—這個是用來儲存當前攻擊的一個副本以及結果。從 Burp Intruder控制皮膚裡,載入儲存檔案作進一步使用。
results table —這個是用來把結果列表儲存為一個文字檔案。可以選擇單個的行或列,以及整個表來儲存。可以配置區域分隔符。這個功能是用於把結果匯出到一個電子表格上作進一步分析,或者儲存單個列(如使用提取 grep功能)到一個輸入檔案裡,用於作進一步攻擊或者其他工具上。
server response —這個是用來儲存接收到的伺服器對請求作出的完整響應。這些可以到自己的檔案(按順序編號)裡,也可以串聯到序列裡的單個檔案。attck configuration—這是用來儲存當前執行攻擊(不是結果)的配置,使你能夠載入那個配置到 Intruder主控制皮膚來配置出一個相同或相似的攻擊。
10.檢視選單:
這包含了檢視或隱藏結果表裡的每個可用的資料列 (這些列的可用性取決於當前攻擊的配置)。
若希望更多的瞭解BurpSuite的介紹,請訪問第四篇(滲透測試之BurpSuite工具的使用介紹(四)):https://www.cnblogs.com/zhaoyunxiang/p/16001087.html