第七章 Web 應用掃描(二)
作者:Justin Hutchens
譯者:飛龍
7.7 使用 BurpSuite Web 代理
雖然它有許多可用工具,BurpSuite 的主要功能就是攔截代理。這就是說,BurpSuite 擁有捕獲請求和響應的功能,以及隨后操作它們來將其轉發到目的地。這個秘籍中,我們會討論如何使用 BurpSuite 攔截或記錄請求。
準備
為了使用 BurpSuite 對目標執行 Web 應用分析,你需要擁有運行一個或多個 Web 應用的遠程系統。所提供的例子中,我們使用 Metasploitable2 實例來完成任務。 Metasploitable2 擁有多種預安裝的漏洞 Web 應用,運行在 TCP 80 端口上。配置 Metasploitable2 的更多信息請參考第一章中的“安裝 Metasploitable2”秘籍。
此外,你的 Web 瀏覽器需要配置來通過 BurpSuite 本地實例代理 Web 流量。關于將 BurpSuite 用作瀏覽器代理的更多信息,請參考第一章的“配置 BurpSuite”一節。
操作步驟
BurpSuite 的功能可以以被動或攔截模式使用。如果禁用了攔截器,所有請求和響應都會簡單記錄到HTTP History
(HTTP 歷史)標簽頁中。可以從列表中選擇它們,來瀏覽它們或查看任何請求或響應的細節,像這樣:
作為替代,Intercept
(攔截器)按鈕可以按下來捕獲發送過程中的流量。這些請求可以在Proxy
標簽頁中操作,之后會轉發到目的地,或者丟棄。通過選擇Opyions
標簽頁,攔截器代理可以重新配置來定義所攔截的請求類型,或者甚至在響應到達瀏覽器之前攔截它們,像這樣:
工作原理
BurpSuite 代理可以攔截或被動記錄瀏覽器接受或發送的流量,因為它邏輯上配置在瀏覽器和任何遠程設置之間。瀏覽器被配置來將所有請求發送給 Burp 的代理,之后代理會將它們轉發給任何外部主機。由于這個配置,Burp 就可以捕獲兩邊的發送中的請求和響應,或者記錄所有發往或來自客戶端瀏覽器的通信。
7.8 使用 BurpSuite Web 應用掃描器
BurpSuite 可以用作高效的 Web 應用漏洞掃描器。這個特性可以用于執行被動分析和主動掃描。這個秘籍中,我們會談論如何使用 BurpSuite 執行被動和主動漏洞掃描。
準備
為了使用 BurpSuite 對目標執行 Web 應用分析,你需要擁有運行一個或多個 Web 應用的遠程系統。所提供的例子中,我們使用 Metasploitable2 實例來完成任務。 Metasploitable2 擁有多種預安裝的漏洞 Web 應用,運行在 TCP 80 端口上。配置 Metasploitable2 的更多信息請參考第一章中的“安裝 Metasploitable2”秘籍。
此外,你的 Web 瀏覽器需要配置來通過 BurpSuite 本地實例代理 Web 流量。關于將 BurpSuite 用作瀏覽器代理的更多信息,請參考第一章的“配置 BurpSuite”一節。
操作步驟
通常,BurpSuite 會被動掃描所有范圍內的 Web 內容,它們通過瀏覽器在連接代理時范圍。術語“被動掃描”用于指代 BurpSuite被動觀察來自或發往服務器的請求和響應,并檢測內容中的任何漏洞標識。被動掃描不涉及任何注入或探針,或者其他確認可疑漏洞的嘗試。
主動掃描可以通過右鍵點擊任何站點地圖中的對象,或者任何 HTTP 代理歷史中的請求,并且選擇Actively scan this branch
,或者Do an active scan
,像這樣:
所有主動掃描的結果可以通過選擇Scanner
下方的Scan queue
標簽頁來復查。通過雙擊任何特定的掃描項目,你可以復查特定的發現,因為它們屬于該掃描,像這樣:
主動掃描可以通過選擇Options
標簽頁來配置。這里,你可以定義要執行的掃描類型,掃描速度,以及掃描的徹底性。
工作原理
BurpSuite 的被動掃描器的工作原理是僅僅評估經過它的流量,這些流量在瀏覽器和任何遠程服務器之間通信。這在識別一些非常明顯的漏洞時非常有用,但是不足以驗證許多存在于服務器中的更加嚴重的漏洞。主動掃描器的原理是發送一系列探針給請求中識別的參數。這些探針可以用于識別許多常見的 Web 應用漏洞,例如目錄遍歷、XSS 和 SQL 注入。
7.9 使用 BurpSuite Intruder(干擾器)
BurpSuite 中的另一個非常有用的工具就是 Intruder。這個工具通過提交大量請求來執行快節奏的攻擊,同時操作請求中預定義的載荷位置。我們會使用 BurpSuite Intruder 來討論如何自動化請求內容的操作。
準備
為了使用 BurpSuite 對目標執行 Web 應用分析,你需要擁有運行一個或多個 Web 應用的遠程系統。所提供的例子中,我們使用 Metasploitable2 實例來完成任務。 Metasploitable2 擁有多種預安裝的漏洞 Web 應用,運行在 TCP 80 端口上。配置 Metasploitable2 的更多信息請參考第一章中的“安裝 Metasploitable2”秘籍。
此外,你的 Web 瀏覽器需要配置來通過 BurpSuite 本地實例代理 Web 流量。關于將 BurpSuite 用作瀏覽器代理的更多信息,請參考第一章的“配置 BurpSuite”一節。
操作步驟
為了使用 BurpSuite Intruder,需要通過攔截捕獲或者代理歷史向其發送請求。完成之后,右擊請求并選擇Send to Intruder
,像這樣:
在下面的例子中,DVWABrute Force
應用的登錄入口中輸入了用戶名和密碼。在發往 Intruder 之后,可以使用Positions
標簽頁來設置載荷。為了嘗試爆破管理員密碼,需要設置的載荷位置只有password
參數,像這樣:
一旦載荷位置定義好了,被注入的載荷可以在Payloads
標簽頁中配置。為了執行字典攻擊,我們可以使用自定義或內建的字典列表。這個例子中,內建的Passwords
列表用于這次攻擊,像這樣:、
一旦配置好了攻擊,你可以點擊屏幕頂端的Intruder
菜單,之后點擊start attack
。這會通過將每個值插入到載荷位置,快速提交一系列請求。為了判斷是否存在任何請求生成了完全不同的響應,我們可以將結果按照長度排序。這可以通過點擊Length
表頭來完成,通過點擊將長度降序排列,我們可以識別出某個長度其它響應的響應。這就是和長度密碼相關(碰巧為password
)的響應。成功的登錄嘗試會在下一個秘籍中進一步確認,那些我們會討論 Comparer 的用法。
工作原理
BurpSuite Intruder 的原理是自動化載荷操作。它允許用戶指定請求中的一個或多個載荷位置,之后提供大量選項,用于配置這些值如何插入到載荷位置。它們會每次迭代后修改。
7.10 使用 BurpSuite Comparer(比較器)
在執行 Web 應用評估是,能夠輕易識別 HTTP 請求或者響應中的變化非常重要。Comparer 功能通過提供圖形化的變化概覽,簡化了這一過程。這個秘籍中,我們會談論如何使用 BurpSuite 識別和評估多種服務器響應。
準備
為了使用 BurpSuite 對目標執行 Web 應用分析,你需要擁有運行一個或多個 Web 應用的遠程系統。所提供的例子中,我們使用 Metasploitable2 實例來完成任務。 Metasploitable2 擁有多種預安裝的漏洞 Web 應用,運行在 TCP 80 端口上。配置 Metasploitable2 的更多信息請參考第一章中的“安裝 Metasploitable2”秘籍。
此外,你的 Web 瀏覽器需要配置來通過 BurpSuite 本地實例代理 Web 流量。關于將 BurpSuite 用作瀏覽器代理的更多信息,請參考第一章的“配置 BurpSuite”一節。
操作步驟
任何包含不一致內容的異常通常都值得調查。響應中的變化通常是載荷產生了所需結果的明顯標志。在前面使用 BurpSuite Intruder 來爆破 DVWA 登錄的演示中,某個特定的載荷生成了比其它更長的響應。為了評估響應的變化,右擊事件并點擊Send to Comparer (response)
。
將事件發送給 Comparer 之后,你可以選擇屏幕上訪的Comparer
標簽頁來評估它們。確保之前的響應之一選擇為item 1
,另外的一個響應選擇為item 2
,像這樣:
在屏幕下方,存在compare words
和compare words
的選項。這里我們選擇compare words
。我們可以看到,響應中一些內容的變化反映了登錄成功。任何修改、刪除或添加的內容都會在響應當中高亮顯式,使其更加易于比較,像這樣:
工作原理
BurpSuite Comparer 的原理是分析任意兩個內容來源,并找出不同。這些不同被識別為修改、刪除或添加的內容。快速區分內容中的變化可以用于高效判斷特定操作的不同效果。
7.11 使用 BurpSuite Repeater(重放器)
在執行 Web 應用評估過程中,很多情況下需求手動測試來利用指定的漏洞。捕獲代理中的每個響應、操作并轉發非常消耗時間。BurpSuite 的 Repeater 功能通過一致化的操作和提交單個請用,簡化了這個過程,并不需要在瀏覽器中每次重新生成流量。這個秘籍中,我們會討論如何使用 BurpSuite 執行手動的基于本文的審計。
準備
為了使用 BurpSuite 對目標執行 Web 應用分析,你需要擁有運行一個或多個 Web 應用的遠程系統。所提供的例子中,我們使用 Metasploitable2 實例來完成任務。 Metasploitable2 擁有多種預安裝的漏洞 Web 應用,運行在 TCP 80 端口上。配置 Metasploitable2 的更多信息請參考第一章中的“安裝 Metasploitable2”秘籍。
此外,你的 Web 瀏覽器需要配置來通過 BurpSuite 本地實例代理 Web 流量。關于將 BurpSuite 用作瀏覽器代理的更多信息,請參考第一章的“配置 BurpSuite”一節。
操作步驟
為了使用 BurpSuite Repeater,請求需要通過攔截捕獲或者代理歷史來發送給它。發送之后,右擊請求之后選擇Send to Repeater
,像這樣:
在這個例子中,用戶生成的請求用于提供名稱,服務器以 HTML 響應返回所提供的輸入。為了測試跨站腳本的可能性,我們應該在這種攻擊中首先注入一系列常見的字符,像這樣:
在發送一系列字符之后,我們可以看到,所有字符都在 HTML 內容中返回,沒有字符被轉義。這很大程度上表示,這個功能存在跨站腳本漏洞。為了測試漏洞是否可以利用,我們可以輸入標準的標識請求<script>alert('xss')</ script>
,像這樣:
通過查看返回的 HTML 內容,我們可以看到,開頭的script
標簽已經從響應中移除了。這可能表明黑名單禁止在輸入中使用script
標簽。黑名單的問題就是,它可以通過修改輸入來繞過。這里,我們可以嘗試通過修改標簽中幾個字符的大小寫來繞過黑名單,像這樣:
通過使用<ScRiPt>
標簽,我們可以看到,強加的限制已經繞過了,開始和閉合標簽都包含在響應中。這可以通過在瀏覽器中輸入請求來驗證,像這樣:
為了評估客戶端瀏覽器中的響應,右擊請求之后選擇Request in browser
。這會生成一個 URL,它可以用于重新在已連接到 Burp 代理的瀏覽器中提交請求。
我們可以手動復制提供的 URL,或者點擊Copy
按鈕。這個URL 之后可以粘貼到瀏覽器中,而且請求會在瀏覽器中提交。假設跨站腳本攻擊是成功的,客戶端 JS 代碼會在瀏覽器中渲染,并且屏幕上會出現提示框,像這樣:
工作原理
BurpSuite Repeater 僅僅通過向 Web 提供文本界面來工作。Repeater 可以讓用戶通過直接操作請求和遠程 Web 服務交互,而不是和 Web 瀏覽器交互。這在測試真實 HTML 輸出比渲染在瀏覽器中的方式更加重要時非常有用。
7.12 使用 BurpSuite Decoder(解碼器)
在處理 Web 應用流量時,你會經常看到出于混淆或功能性而編碼的內容。BurpSuite Decoder 可以解碼請求或響應中的內容,或按需編碼內容。這個秘籍中,我們會討論如何使用 BurpSuite 編碼和解碼內容。
準備
為了使用 BurpSuite 對目標執行 Web 應用分析,你需要擁有運行一個或多個 Web 應用的遠程系統。所提供的例子中,我們使用 Metasploitable2 實例來完成任務。 Metasploitable2 擁有多種預安裝的漏洞 Web 應用,運行在 TCP 80 端口上。配置 Metasploitable2 的更多信息請參考第一章中的“安裝 Metasploitable2”秘籍。
此外,你的 Web 瀏覽器需要配置來通過 BurpSuite 本地實例代理 Web 流量。關于將 BurpSuite 用作瀏覽器代理的更多信息,請參考第一章的“配置 BurpSuite”一節。
操作步驟
為了向 BurpSuite Decoder 傳遞指定的值,高亮所需的字符串,右擊它,并選擇Send to Decoder
。在下面的例子中,Cookie
參數的值被發送到了解碼器,像這樣:
通過點擊Smart decode
按鈕,BurpSuite 會自動將編碼識別為 URL 編碼,并將其解碼到編碼文本下面的區域中,像這樣:
如果 BurpSuite 不能判斷編碼類型,可以以多種不同編碼類型來手動解碼,包括 URL、HTML、Base64、ASCII Hex,以及其它。解碼器也能夠使用Encode as...
功能來編碼輸入的字符串。
工作原理
BurpSuite Decoder 在和 Web 應用交互時提供了編碼和解碼的平臺。這個工具十分有用,因為 Web 上由多種編碼類型經常用于處理和混淆目的。此外,Smart decode
工具檢測任何所提供輸入的已知模式或簽名,來判斷內容所使用的編碼類型,并對其解碼。