Portswigger是著名神器Burpsuite的官方網站,實際上也是一個非常好的漏洞訓練平台,但在國內信安圈卻鮮有提及,因此從今天開始i春秋論壇作家「dll_s」表哥將對其進行全面系統的介紹。
官網鏈接:https://portswigger.net/web-security
以下簡稱該平台為Burpsuite學院。
為什么稱它為Burpsuite學院呢?因為其訓練內容非常側重於對Burpsuite各項功能的深入挖掘,這本身和創建該平台的初衷也是分不開的。另外,其實這也是《黑客攻防技術寶典Web實戰篇》的實戰訓練平台,配合使用學習效果更佳。
Burpsuite學院優點:
1、實驗環境多樣化,覆蓋廣內容多,同時使用真實網絡環境,具有很強的實操性;
2、針對每個實驗漏動原理有相關介紹,且針對具體操作細節也有詳細說明;
3、包含許多其他漏洞靶場所沒有的漏洞思路,總之就是內容非常的全面。
Burpsuite學院缺點:
1、訪問可能比較緩慢,需要自行解決;
2、官網頁面均為英文,對於國內的小伙伴可能不是很友好,不過對於學習信安接觸英文也是在所難免的,長期的接觸下就會自然而然的發現專業英語越來越流利;
3、需要一定的基礎,比如對於Burpsuite工具的基本操作。同時由於其每個環節下有多個實驗環境,練習進度往往會比較緩慢,還是建議新手可以先使用dvwa,pikachu等開源靶場對常見漏洞有一個大體了解再來進行進階學習。

平台概況
Burpsuite學院目前含有漏洞實驗內容160多個,基本涵蓋了各個方面的Web漏洞,並且會不斷更新。

同時還有個人專屬的學習情況跟蹤面板。

使用方式也非常簡單,使用郵箱注冊賬號登錄之后即可開始學習,下面就拋磚引玉地簡單介紹下三個用戶驗證漏洞實驗。
首先訪問Burpsuite學院,點擊進入Authentication模塊,可以看到相關漏洞背景介紹信息,下拉可以看見包含了三個實驗環節。


我們選擇第一個:基於密碼驗證的登錄漏洞,可以看到總共包含了三個實驗內容。下面依次對這三個實驗進行介紹。

實驗一:通過responses內容不同枚舉用戶名
進入實驗可以看到對該實驗的簡單介紹,該實驗的內容是用戶名枚舉和密碼爆破,同時提供了候選用戶名和密碼列表,還是比較簡單和經典的。點擊Access the lab即可進入實驗,點擊solution可以查看具體的實驗操作指南,還是建議先自我嘗試實驗內容,遇到難以攻克的問題再來這里找思路。

進入實驗后是一個簡單的博客網站,點擊右上角Account login進入登錄界面。配置好Burpsuite監聽代理,先使用弱口令進行嘗試root:123456,可以發現錯誤信息提示用戶名錯誤。

以此推測該驗證登錄會指明具體的錯誤原因,可被用來枚舉用戶名,使用Burpsuite攔截發送到Intruder模塊,配置好payload位置。這里使用的是sniper攻擊類型,固定密碼,使用網站提供的用戶名列表進行枚舉。
Burpsuit Intruder不同攻擊類型差別:
Sniper狙擊手:使用一組payload集合,一次只將payload填入一個位置;
Battering ram:同樣只使用一個payload集合,不同的地方在於每次攻擊都是替換所有payload標記位置;
Pitchfork:允許使用多組payload組合,在每個標記位置上順序遍歷其payload(payload數量對應);
Cluster bomb:允許使用多組payload組合,會循環遍歷每個payload位置組合。

對枚舉結果按responses length進行排序,即可發現可用的用戶名。

固定用戶名為枚舉結果,使用相同方式對密碼進行爆破,觀察結果可以發現一個異常302狀態,此即為正確的密碼。

注意:在此請求之后發送的請求響應均為400狀態碼是由於服務器在一次正確登錄后刷新了session cookie,因此導致了后續提交請求中csrf字段與session的驗證錯誤。所以我們在使用正確賬號登錄時也要注意需要刷新頁面csrf才可以成功登錄,登錄后點擊訪問My Account即可看到實驗狀態更新為solved也就是完成了。
實驗二:基於responses內容的細微差別枚舉用戶名
這一實驗與上一個相比,response響應內容長不斷變化的,我本來以為是通過compare模塊比較各響應差別尋找正確的用戶名,也確實發現了一些報文內容相較於其他報文多了一段注釋”<!-->“,但是存在這段注釋的報文非常多,因此並不具備可行性,下面介紹正確解法。
跟之前一樣嘗試弱口令,發現錯誤提示變為了Invalid username or password.,無法簡單枚舉。

使用Burpsuite攔截,發送到Intruder模塊,固定密碼進行用戶名枚舉,發現長度一直在變化。

點擊Option按鈕,使用Grep-Extract功能,點擊Add按鈕,選擇如圖所示區域(此步驟其實就是本次實驗的精髓,可以思考下為什么要選擇這一區域,因為這是服務器驗證用戶名密碼后的信息交互區,針對正確和錯誤可能后台程序員會編寫兩個界面,而這微小的差別就造成了信息泄露)。

設置好后返回Result界面,拖動即可發現其中一個返回語句中少了一個句號,這個角度實在是非常的刁鑽,直接觀察確實是很難發現。這里其實也可以復制交互信息區域內容到下方查找欄中,然后通過上下鍵遍歷結果,發現0 matches的即為異常請求。

后續操作就不再復述了,基本與上一實驗類似,登錄訪問賬號信息頁面即可完成實驗。
實驗三:基於響應延時的用戶名枚舉
此實驗等級為PRACTITIONER(從業者),使用了IP防爆破保護,可以使用偽造X-Forwarded-For字段繞過。對於用戶名枚舉,這里的實驗原理為:程序后台進行驗證登錄時,會先驗證用戶名是否正確,錯誤則立即返回失敗信息,正確則到數據庫中比對密碼,而通過使用超長密碼增加這一查詢時延即可對用戶名進行爆破。
進入實驗,使用弱密碼嘗試多次登錄后會發現遭到鎖定,請在30分鍾后嘗試。

發現可以通過偽造X-Forwarded-For字段繞過IP保護。

設置payload,使用Pitchfork模式,payload set1設置為1-100的數字枚舉,用於生成動態IP,paylaod set2為用戶名列表。


對於Intruder運行結果,點擊Columns新增Response received一欄,排序后時延最大的即為正確的用戶名。

使用爆破出的用戶名,同樣使用Pitchfork模式爆破密碼,成功后登錄以完成實驗。可能由於之前的多次嘗試仍處於鎖定狀態,可以抓包修改X-Forwarded-For字段或者直接替換cookie訪問賬號信息即可。
總結
平台的基本情況就介紹到這里了,這幾個實驗難度並不是很高,也會有一種刷CTF的感覺,但如何通過這些實驗,系統性地對Web安全進行深入評估是我們所應該在實驗過程中不斷思考的。
以上是今天要分享的內容,大家看懂了嗎?