https://www.freebuf.com/column/156238.html
上節課,我們講了如何使用burp抓取數據包,以及proxy的一些常用功能;這節課,我們主要學習scanner
、intruder
、repeater
等等。
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)
因爲被動掃描不會發送新的請求,只會對原有數據進行分析,其掃描範圍主要是請求和應答消息中的如下參數或漏洞類型:Headers
、Forms
、Links
、Parameters
、Cookies
、MIMEtype
、Caching
、敏感信息泄露
、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]