BurpSuite 代理设置的小技巧
轉(zhuǎn)載之【安全客】https://www.anquanke.com/post/id/85925
在Web滲透測(cè)試過(guò)程中,BurpSuite是不可或缺的神器之一。BurpSuite的核心是代理Proxy,通常情況下使用BurpSuite的套路是:瀏覽器設(shè)置BurpSuite代理——>訪問Web應(yīng)用程序——>BurpSuite抓包分析。本人從事Web滲透測(cè)試尚不足一年,這期間在代理設(shè)置過(guò)程中踩到過(guò)一點(diǎn)『小坑』,現(xiàn)在將我踩過(guò)的『小坑』總結(jié)一下。本文主要面對(duì)新人朋友,老司機(jī)們請(qǐng)不吝賜教~
0x01 一般情形
最一般的情形是針對(duì)采用HTTP協(xié)議的Web應(yīng)用程序的滲透測(cè)試。這種情況下,直接設(shè)置瀏覽器的代理服務(wù)器為BurpSuite即可,默認(rèn)為127.0.0.1:8080。
當(dāng)然,直接更改瀏覽器的代理服務(wù)器設(shè)置比較繁瑣,更好的辦法是使用瀏覽器插件,預(yù)先設(shè)置好代理方案,然后根據(jù)實(shí)際情況一鍵切換。Chrome推薦使用Proxy SwitchyOmega插件:
Firefox推薦使用FoxyProxy:
至于IE瀏覽器,說(shuō)實(shí)在話用得很少,不建議用于滲透測(cè)試。一方面,IE不支持?jǐn)U展插件;另一方面,IE的代理設(shè)置也就是系統(tǒng)全局代理,一旦更改了IE的代理,除了那些自帶代理設(shè)置的程序外(如安裝了Proxy SwitchyOmega擴(kuò)展的Chrome瀏覽器),其他程序請(qǐng)求數(shù)據(jù)都要走代理,給我們的測(cè)試帶來(lái)很大不便。但是,如果你非要用IE的話(比如針對(duì)某些不支持Chrome和Firefox的網(wǎng)銀系統(tǒng)進(jìn)行滲透測(cè)試),也有比較方便的解決辦法,容我先賣個(gè)關(guān)子,后文會(huì)有說(shuō)明。
0x02 HTTPS網(wǎng)站的情形
許多人在第一次使用BurpSuite抓取HTTPS網(wǎng)站報(bào)文時(shí)都會(huì)遇到『您的連接不是私密連接』(Chrome)、『此網(wǎng)站的安全證書存在問題』(IE)或者『您的連接不安全』(Firefox)的問題,這時(shí)候怎么辦?
這個(gè)問題其實(shí)很簡(jiǎn)單,安裝一個(gè)證書即可解決,想知道原因的可以自行Google一下HTTPS原理就能夠得到答案。
首先,瀏覽器設(shè)置好BurpSuite代理服務(wù)器后,訪問http://burp,然后點(diǎn)擊右上角的CA Certificate,這時(shí)會(huì)自動(dòng)下載一個(gè)名為cacert.der的證書文件。
打開這個(gè)證書文件,根據(jù)提示安裝這個(gè)證書,基本上是一路『下一步』,唯一需要注意的是,在『證書存儲(chǔ)』這一步選擇將證書存儲(chǔ)在『受信任的根證書頒發(fā)機(jī)構(gòu)』。
證書安裝好之后,Chrome和IE就能夠正常訪問HTTPS網(wǎng)站了(由于Google一直在推全網(wǎng)HTTPS,Chrome對(duì)證書要求很嚴(yán)格,我們安裝的證書不是權(quán)威機(jī)構(gòu)頒發(fā)的,因此地址欄會(huì)一直提示『不安全』,但是不影響使用)。
不過(guò),如果你使用Firefox瀏覽器的話,還需要增加一步,即將證書導(dǎo)入到Firefox中。打開Firefox的『選項(xiàng)——高級(jí)——證書』,然后點(diǎn)擊『查看證書』按鈕打開『證書管理器』。
在『證書管理器』中,點(diǎn)擊下方的『導(dǎo)入』按鈕,導(dǎo)入之前下載的cacert.der證書文件,并且在彈出的『下載證書』對(duì)話框中,勾選3個(gè)『信任使用此CA標(biāo)識(shí)的……』復(fù)選框,最后點(diǎn)擊『確定』即可。
這時(shí)候,F(xiàn)irefox也可以正常使用了。
0x03 移動(dòng)端流量抓取
有時(shí)候,我們還需要對(duì)移動(dòng)APP進(jìn)行抓包分析,這時(shí)候該怎么辦?
其實(shí)很簡(jiǎn)單,兩步即可解決。
第一步,在BurpSuite的Proxy Listeners中,選中當(dāng)前在用的代理,點(diǎn)擊左側(cè)的Edit按鈕,在彈出的對(duì)話框中,將Bind to address選項(xiàng)設(shè)置為All interfaces。
第二步,手機(jī)和PC連接同一Wifi,打開手機(jī)Wifi設(shè)置,設(shè)置HTTP代理服務(wù)器為BurpSuite所在的PC的IP地址,端口為BurpSuite的代理端口。以iPhone為例,其設(shè)置如下圖所示。
然,如果APP走的是HTTPS通道,仍然需要安裝證書才能正常訪問,方法同前,不再贅述。
0x04 多重代理的情形
在某些網(wǎng)絡(luò)環(huán)境中,訪問目標(biāo)網(wǎng)站需要走代理。比如說(shuō),為了訪問google.com,我已經(jīng)給瀏覽器設(shè)置了SS代理(默認(rèn)127.0.0.1:1080),現(xiàn)在我想對(duì)google.com進(jìn)行滲透測(cè)試,那么該怎么設(shè)置瀏覽器代理?這時(shí)候不能簡(jiǎn)單的把瀏覽器代理設(shè)置為BurpSuite,這樣雖然可以進(jìn)行抓包,但是沒有了SS的幫助,我們是無(wú)法訪問google.com的,抓包也就沒有意義了。這時(shí)候該怎么辦?
在這種情況下,我們必須借助代理鏈了。
顧名思義,代理鏈就一系列的代理形成的鏈條。像剛才那種情形,我們首先設(shè)置瀏覽器的代理為BurpSuite以便能夠抓包;然后為BurpSuite再設(shè)置一個(gè)上游代理即SS。這樣訪問google.com時(shí),請(qǐng)求數(shù)據(jù)先經(jīng)過(guò)BurpSuite,于是可以進(jìn)行抓包了;然后再流向SS,最后經(jīng)過(guò)SS服務(wù)器到達(dá)google.com。服務(wù)器端返回的響應(yīng)則剛好相反。通過(guò)這個(gè)BurpSuite——SS的代理鏈,我們就解決了本節(jié)開頭所描述的問題。
作為一個(gè)神器,BurpSuite是具備這個(gè)功能的。在BurpSuite的User options下的Connections頁(yè)面中,有『Upstream Proxy Servers』和『SOCKS Proxy』這兩個(gè)配置項(xiàng),都是跟代理鏈相關(guān)的。接下來(lái)逐一進(jìn)行說(shuō)明。
1. Upstream Proxy Servers
在該設(shè)置項(xiàng)中,可以設(shè)置多個(gè)上游代理服務(wù)器規(guī)則,滿足規(guī)則的請(qǐng)求將被發(fā)送至相應(yīng)的代理服務(wù)器。只說(shuō)概念過(guò)于無(wú)聊,還是以google.com為例進(jìn)行說(shuō)明。
為了對(duì)google.com進(jìn)行抓包分析,我們首先要設(shè)置瀏覽器的代理為BurpSuite,這一點(diǎn)是毫無(wú)疑問的。為了能正常訪問google.com,還需要設(shè)置BurpSuite的上流代理為SS(127.0.0.1:1080)。點(diǎn)擊Upstream Proxy Servers列表框左側(cè)的Add按鈕,打開『Edit upstream proxy rule』對(duì)話框。這里一共有8個(gè)設(shè)置項(xiàng),一般情況下只需關(guān)注前4個(gè):
Destination host:這里填入目標(biāo)網(wǎng)站域名或者IP,支持通配符(*表示0個(gè)或者任意個(gè)字符,?表示除點(diǎn)號(hào)之外的任意一個(gè)字符)。在本例中,我們可以填入*.google.com。
Proxy host:填入SS代理服務(wù)器的IP地址,即127.0.0.1。如果為空表示直接連接。
Proxy port:填入SS的代理地址,即和1080。
Authentication type:這里選擇認(rèn)證類型,由于SS本地代理無(wú)需認(rèn)證,這是選擇None。
如果Authentication type為None,則接下來(lái)的4項(xiàng)內(nèi)容無(wú)需理會(huì),否則需要根據(jù)實(shí)際情況設(shè)置以下4項(xiàng)內(nèi)容。
Username:用戶名。
Password:密碼。
Domain:域。僅用于NTLM認(rèn)證類型。
Domain hostname:域主機(jī)名。僅用于NTLM認(rèn)證類型。
設(shè)置內(nèi)容如下圖所示,最后點(diǎn)擊OK即可。
這時(shí)候你會(huì)發(fā)現(xiàn)google.com已經(jīng)能夠訪問了,并且BurpSuite中也成功地抓取到了相應(yīng)的請(qǐng)求報(bào)文。
你可以同時(shí)設(shè)置多個(gè)Upstream Proxy Servers,在使用過(guò)程中,BurpSuite會(huì)按順序?qū)⒄?qǐng)求的主機(jī)與Destination host中設(shè)置的內(nèi)容進(jìn)行比較,并將請(qǐng)求內(nèi)容發(fā)送至第一個(gè)相匹配的Proxy server。因此,Proxy Server的順序很重要,講究個(gè)先來(lái)后到!
2. SOCKS Proxy
與Upstream Proxy Servers的作用類似,SOCKS Proxy的功能也是將請(qǐng)求內(nèi)容發(fā)送至相應(yīng)的代理服務(wù)器。不同之處在于,SOCKS Proxy作用于TCP協(xié)議層,因此如果設(shè)置了該項(xiàng),那么所有的請(qǐng)求數(shù)據(jù)都會(huì)被發(fā)送至SOCKS代理服務(wù)器。所以,SOCKS Proxy的設(shè)置更簡(jiǎn)單。同樣以google.com為例,先在下方的輸入框中依次填入SOCKS代理服務(wù)器的IP、端口(如果SOCKS代理服務(wù)器需要認(rèn)證,還需要填寫用戶名和密碼),然后勾選Use SOCKS proxy即可。
需要注意的一點(diǎn)是,如果同時(shí)設(shè)置了Upstream Proxy Servers和SOCKS Proxy,則根據(jù)規(guī)則應(yīng)該發(fā)送至上游代理的請(qǐng)求將會(huì)通過(guò)SOCKS Proxy發(fā)送。
0x05 被測(cè)客戶端不支持代理設(shè)置的情形
有時(shí)候,我們想對(duì)電腦上的某客戶端進(jìn)行抓包分析,然而這個(gè)客戶端并沒有代理設(shè)置的功能,怎么辦?如果直接設(shè)置系統(tǒng)代理當(dāng)然也是可以的,但是這樣一來(lái)所有程序的流量都要經(jīng)過(guò)BurpSuite,一方面有可能影響非測(cè)試軟件的使用;另一方面,BurpSuite中非測(cè)試軟件的請(qǐng)求記錄過(guò)多也影響我們的分析測(cè)試。有沒有更好的解決方案?
答案是肯定的,這時(shí)候就需要Proxifier登場(chǎng)了。Proxifier是什么?且看官網(wǎng)的說(shuō)明:
ProxifierallowsnetworkapplicationsthatdonotsupportworkingthroughproxyserverstooperatethroughaSOCKSorHTTPSproxyandchains.
簡(jiǎn)單的說(shuō),使用Proxifier能夠?yàn)槟切┍旧聿荒茉O(shè)置代理的軟件設(shè)置SOCKS或者HTTPS代理(鏈)。Proxifier的體積雖小,但功能卻十分強(qiáng)大,除了有Windows版之外,還有Mac版的。因此,非常值得關(guān)注。
還是通過(guò)實(shí)例進(jìn)行說(shuō)明。有一次,需要對(duì)某微信公眾號(hào)進(jìn)行滲透測(cè)試,有些微信公眾號(hào)的鏈接復(fù)制到瀏覽器中可以直接打開,但是這個(gè)公眾號(hào)做了限制,只能在微信中打開,即使改了UA也不行。
微信網(wǎng)頁(yè)版中只能看到公眾號(hào)發(fā)的文章,而不能進(jìn)行交互。設(shè)置手機(jī)代理倒是可以進(jìn)行測(cè)試,但是一邊在手機(jī)上操作、一邊在PC上抓包很不方便,而且容易給領(lǐng)導(dǎo)一種一直在玩手機(jī)的錯(cuò)覺……微信PC版功能倒是挺全,然而卻不能設(shè)置代理!
怎么辦?貌似山窮水盡了。最后寄希望于Google,經(jīng)過(guò)一番搜索,直到Proxifier的出現(xiàn),總算柳暗花明!言歸正傳,接下來(lái)看看Proxifier怎么玩。
Proxifier的界面很簡(jiǎn)潔,我們重點(diǎn)關(guān)注其中的兩個(gè)功能,即Proxy Servers和Profication Rules。工具欄中最左側(cè)的兩個(gè)圖標(biāo)分別對(duì)應(yīng)這兩個(gè)功能。
首先點(diǎn)擊工具欄第一個(gè)圖標(biāo),打開Proxy Servers對(duì)話框。Proxy Servers對(duì)話框分為上下兩部分,上半部分用于設(shè)置代理服務(wù)器,下半部分用于設(shè)置代理鏈。
1. 代理服務(wù)器設(shè)置
我們先講講代理服務(wù)器設(shè)置。點(diǎn)擊Add按鈕,增加一個(gè)代理服務(wù)器,填入相應(yīng)的代理服務(wù)器地址和端口,這里填入BurpSuite的代理127.0.0.1:8080;Protocol中選擇HTTPS;點(diǎn)擊Advanced按鈕,設(shè)置一個(gè)Custom Label以方便區(qū)分。
設(shè)置完成之后,可以點(diǎn)擊下方的Check按鈕測(cè)試一下代理是否設(shè)置成功。如果出現(xiàn)下圖所示的Proxy is ready to work with Proxifier!說(shuō)明代理設(shè)置成功。不過(guò)默認(rèn)的用于測(cè)試的目標(biāo)網(wǎng)站是www.google.com,很有可能出現(xiàn)誤判,建議點(diǎn)擊右上角的Test Settings按鈕將Target host更改為不掛代理也可正常訪問的網(wǎng)站。
Proxy Server設(shè)置完成之后會(huì)提示你尚未設(shè)置當(dāng)前啟用的代理服務(wù)器,是否要進(jìn)入規(guī)則設(shè)置,點(diǎn)擊『是』即可進(jìn)行代理規(guī)則設(shè)置。也可以點(diǎn)擊工具欄第二個(gè)圖標(biāo)進(jìn)入『Proxification Rules』對(duì)話框。
默認(rèn)有兩條直連的規(guī)則。點(diǎn)擊左下方的Add按鈕,進(jìn)入具體的規(guī)則設(shè)置頁(yè)面。
設(shè)置內(nèi)容并不復(fù)雜,一共五個(gè)設(shè)置項(xiàng):
Name:可任意設(shè)置,建議設(shè)置有意義的名稱以方便使用。
Applications:設(shè)置代理的應(yīng)用,此處設(shè)置的是微信的主程序wechat.exe。
Target hosts:設(shè)置訪問哪些網(wǎng)站走代理,根據(jù)實(shí)際情況填寫。
Target ports:設(shè)置訪問目標(biāo)網(wǎng)站的哪些端口才走代理,根據(jù)實(shí)際情況填寫即可。
Action:這里選擇上一步設(shè)置的代理服務(wù)器即可。除了自定義的代理服務(wù)器外,這里還有Direct和Block的選項(xiàng),分別是直連和阻止連接,說(shuō)明Proxifier還可以有選擇的屏蔽某些站點(diǎn),在某些情況下還是很有用的。
規(guī)則設(shè)置好之后,可點(diǎn)擊規(guī)則列表框右側(cè)的方向按鈕,更改規(guī)則的順序。和BurpSuite的Upstream Proxy Servers一樣,這里也講究個(gè)先來(lái)后到,所以當(dāng)前在用的規(guī)則越靠前越好。如果你設(shè)置好代理及規(guī)則之后不起作用,可以到這里看看順序是不是沒有調(diào)整好。
一切設(shè)置就緒,別忘了點(diǎn)擊OK按鈕保存。這時(shí)候,在PC版的微信中對(duì)目標(biāo)公眾號(hào)進(jìn)行相應(yīng)的操作與訪問,BurpSuite就能夠抓取到HTTP報(bào)文了。同時(shí),在Proxifier中能夠看到連接狀態(tài)與日志。(PS:我發(fā)現(xiàn)每次使用Proxifier一開始總會(huì)出錯(cuò),過(guò)幾秒鐘就正常了,不知道啥原因?)
回到本節(jié)開頭的那個(gè)問題,對(duì)于那些無(wú)法設(shè)置代理的客戶端程序,可以使用Proxifier為其設(shè)置代理,進(jìn)而使用BurpSuite等工具抓包分析。此外,如果將Proxification Rule中的Application設(shè)置為IE瀏覽器,即可選擇性地將目標(biāo)站點(diǎn)的HTTP請(qǐng)求發(fā)送至BurpSuite,這就解決了使用IE進(jìn)行滲透測(cè)試時(shí)代理設(shè)置不方便的問題。
2. 代理鏈設(shè)置
接下來(lái)說(shuō)一說(shuō)Proxifier的代理鏈功能。為了實(shí)現(xiàn)代理鏈,首先需要設(shè)置多個(gè)代理(在Proxifier中,僅有一個(gè)代理服務(wù)器的代理鏈也是允許的,但那沒什么意義)。還拿google.com的例子進(jìn)行說(shuō)明,我們需要兩個(gè)代理:BurpSuite(127.0.0.1:8080)和SS(127.0.0.1:1080)。先在Proxy Servers中增加一個(gè)SS(127.0.0.1:1080)的SOCKS5代理服務(wù)器。然后點(diǎn)擊下方右側(cè)的Create按鈕,新建一個(gè)代理鏈,名稱隨意,比如BurpSuite->SS。最后用鼠標(biāo)依次將上方的BurpSuite和SS代理服務(wù)器拖到下方即可。注意,這里的順序也很重要。
點(diǎn)擊Create按鈕下方的Type按鈕可以設(shè)置代理鏈的類型,一共有3種類型的代理鏈:
Simple Chain:簡(jiǎn)單類型,請(qǐng)求數(shù)據(jù)從上到下依次經(jīng)過(guò)各代理服務(wù)器,這個(gè)是默認(rèn)選項(xiàng)。
Redundancy:冗余類型,如果第一個(gè)代理服務(wù)器無(wú)法連接,則嘗第二個(gè),以此類推。
Load Balancing:負(fù)載均衡類型,請(qǐng)求數(shù)據(jù)會(huì)隨機(jī)地發(fā)送到列表中的各個(gè)代理服務(wù)器。
按照我們的需求,需要選擇默認(rèn)的Simple Chain。有了代理鏈,接下來(lái)仍然需要設(shè)置代理規(guī)則,設(shè)置方法同前,只不過(guò)在Action中選擇剛才設(shè)置的代理鏈即可。
BurpSuite自帶的Upstream Proxy Servers和SOCKS Proxy完全可以解決google.com的問題,這里僅僅是以此為例進(jìn)行說(shuō)明。Proxifier的代理鏈功能十分強(qiáng)大,至于怎么用就看大家的腦洞了~
總結(jié)
以上是生活随笔為你收集整理的BurpSuite 代理设置的小技巧的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “指定的文件名无效或太长” 无法拷贝,咋
- 下一篇: javascript如何格式化