burpsuite攔截Firefox瀏覽器https數據包及原理

一、攔截https導入證書操作步驟

 

1.配置瀏覽器對http/https都使用burpsuite代理

http和https是分開的,對http使用了代理並不代表對https也使用了代理,要配置瀏覽器讓其對https也使用同樣的代理。

當然有些瀏覽器提供“爲所有協議使用相同代理”的選項(比如這裏的Firefox),那直接鉤選這個選項也可以。

 配置完成後訪問http的網站可以發現成功訪問,但訪問https的網站一般不可訪問,報錯如下

 

2.訪問http://burp/下載burpsuite ca證書

事實上burpsuite不會真向公網訪問http://burp/這麼一個頁面,公網上也並不存在這麼一個頁面,而是burpsuite監視到訪問http://burp/後會自動重定向到自己內置的證書下載頁面。

所以,首先確認已將瀏覽器配置成burpsuite代理模式,然後訪問http://burp/。界面如下:

點擊CA Certificate  

注意這裏的證書不能是零字節,不然去找破解版(因爲這個原因,浪費了我一天的時間,才找到原因)

 

3.將下載的證書導入瀏覽器“證書機構”項

 

4.再次訪問https網站,驗證訪問和攔截都已正常

然後不用重啓瀏覽器,再次訪問https網站可發現網站可正常訪問且burpsuite已可正常攔截。

此只以Firefox爲例,不同瀏覽器原理都是導入CA證書但具體操作還有一些區別,請自行參看官方配置文檔

 

二、攔截https導入證書的原理

通過網上文章和現實觀察,感覺很多人不懂攔截https爲什麼要攔截證書,比如有些文章也在一本正經地教你怎麼導入證書,但很多步驟要麼沒意義要麼根本就是誤人子弟的,所以我們這裏有必要先說道一番。

首先是SSL握手過程:訪問https網站,瀏覽器向服務器發送ssl client hello請求,服務器進行響應發回自己的證書(是的每一次建立ssl連接服務器都會向客戶端發送證書不要懷疑),瀏覽器收到服務器的證書後檢測證書的簽發機構(即CA)是否在自己信任的機構列表中,如果不在則瀏覽器報錯並終止ssl握手過程如果在則繼續進行後續握手步驟。

其次是https代理原理:一方面,瀏覽器發起ssl client hello請求,burpsuite僞造成服務器,給瀏覽器發回使用burpsuite自己證書爲當前目標網站簽發的證書與瀏覽器建立一個連接(我們暫稱其爲C1);另burpsuite向真正的服務器發送一個ssl client hello,與真正的服務器建立另一個連接(我們暫稱其爲C2)。所以真正的請求是瀏覽器通過C1向burpsuite提交數據,burpsuite又從C1中把http數據拿出來從C2提交到真正的服務器,響應過程則反過來。(burpsuite沒有服務器證書對應的私鑰所以不能直接把服務器的證書轉給瀏覽器,而只能引入自己的證書,不然到時就解不出http的內容了;burpsuite本質上即是一箇中間人,或者說中間人攻擊說的就是burpsuite這種形式)

瀏覽器發現收到的證書的簽發機構不在自己的信任列表中則報錯,具體到burpsuite,返回給瀏覽器的證書是burpsuite自己的證書籤名的,而burpsuite自己的證書不在瀏覽器默認的信任CA列表中,所以導致了報錯。所以導證書我們本質上要做的就是把burpsuite的CA證書導入到瀏覽器的信任證書機構列表中的,使瀏覽器已後再接收到burpsuite簽發的證書時不再報錯。

至於瀏覽器默認信任哪些證書機構,這沒有一個強制的標準,主要由各瀏覽器自己決定。更多內容可參考鏈接:https://en.wikipedia.org/wiki/Certificate_authority

如果感覺上面說的太多,那我們簡面言之,導入的是burpsuite自己的證書作證書頒發機構用;burpsuite代理時返回給瀏覽器的證書是burpsuite針對該網站臨時簽名的證書,整個導證書操作就爲了瀏覽器收到該臨時證書不會報錯。

導入的證書信息如下:

burpsuite代理該問網站時,網站證書如下:

直接訪問網站時,網站證書如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章