[Burp Suite 完整教學] Proxy 基本原理與監聽127.0.0.1

昨天的最後雖然留了一個「你的連線不是私人連線」的坑,
說今天要來帶大家安裝憑證的,
不過左思右想覺得還是先把Proxy這段先講完好了。

如果卡在使用Burp之後會一直出現,
「你的連線不是私人連線」「您的連線不安全」之類的,
就等明天再來解決,今天先來談談Proxy還有我們監聽的127.0.0.1。

接著我們來談談甚麼是Proxy,
Proxy基本上就是Burp Suite的核心,
所以對Proxy有個基本瞭解我覺得是必須的。

Proxy的意思就是代理的意思,
而Burp 其實就是實現了一個Proxy server(代理伺服器),
代理伺服器的功能用圖來講解最清楚明白,
可以看下面的這張圖,雖然簡單的但是重要!

如果你已經按照前一天的內容啟動了Burp,
也將你的瀏覽器(不管是Chrome或是firefox)設定了Proxy,
圖中You的部分就是你的瀏覽器,
而Proxy的部分就是Burp Suite所在的位置,
Internet網際網路也就是我們要訪問的網站,
譬如像是 https://ithelp.ithome.com.tw/ 或是 http://hackercat.org/ ,
這些你需要通過HTTP/HTTPS去訪問的網際網路上面的資源。

也就是說當我們開啟了瀏覽器(client端)要上網的時候,
原本瀏覽器會直接將HTTP request發給網站(server端)。
如果我們在瀏覽器設定了Proxy 127.0.0.1:8080,
我們在瀏覽器送出去的HTTP request,會直接被送到127.0.0.1:8080,
因為開啟了Burp,並且讓Burp監聽了127.0.0.1:8080,
所以HTTP request的請求是會被送到Burp去,
而Burp再負責將這個請求送給我們要瀏覽的網站(server端),
server傳回來的回應也是一樣,client收到之前,會先經過Burp。
Burp Suite就是一個位於client與server端的proxy,
我們瀏覽網站時的所有HTTP/HTTPS都會經過Burp Suite。

如果上網查詢關於Proxy用途與功能,
應該會找到關於以下的一些說法:

  1. 提高存取速度
  2. 減少網路流量
  3. 過濾特定內容
  4. 隱藏真實IP
  5. 跳板突破網路封鎖

以上這些都是一般Proxy Server的功能用途沒錯!
但是呢,並不是我們使用Burp所想達成的用途,
實際上我們也沒辦法達成以上的功能,
因為一般Proxy Server是有一台專用主機起的Proxy服務,
我們只不過是在本機當中利用Burp這套工具起了一個Proxy服務,
所以甚麼提高速度隱藏IP都是完全沒有做到的喔。
我們使用Burp代理的原因是要進行HTTP請求回應內容進行觀察與修改。.

本來打算多些內容說些關於正向Proxy與反向Proxy(Reverse Proxy),
但是想說內容比較無關,就簡單幾句話帶過好了,
在Client端的負責代理Clinet端的Proxy就是正向Proxy,
在Server端負責代理Server端的Proxy的就是反向Proxy,
還有一個透明代理,意思就是其是當使用者不需要知道有Proxy就是透明代理,
關於Proxy,以上簡單來說就是這樣。


Proxy的部分講完之後,
來說說關於我們設定127.0.0.1監聽8080 port的這件事情。
因為預設情況都是使用127.0.0.1:8080,
一般平常可能也比較不會注意到這一塊,
因為操作使用上正常的話,通常是不會動到這個設定。

首先在Windows中我們可以用指令netstat -ant來網路監聽情形,
可以注意到如果有開啟Burp Proxy的話,
就會有監聽127.0.0.1:8080,如果不勾選的話就不會有。

那這個127.0.0.1是表示我們本機Interface監聽的而已,
可以將127.0.0.1視為一張虛擬的網卡來看。
以下用兩個主機來做示範可能會以較好理解,
目前有兩台主機,
一台是Win10,也就是開啟Burp Suite的主機,
另一台是Kali,有開啟Apache的網頁服務。
假設的Win10的電腦了,目前有好幾個IP,
win10跟Kali也有同網段的IP,
Win10的IP是192.168.240.1,而Kali的IP是192.168.240.128。

如果我們現在在Win10中開啟了Burp監聽127.0.0.1:8080,
直接在瀏覽器中輸入127.0.0.1:8080 (注意這邊瀏覽器先不需要做任何設定),
可以正常的訪問的Burp的頁面,
可是如果我們從Kali當中訪問了192.168.240.1:8080,
也就是從Kali去訪問Win10的Burp是連不到的,
因為Burp監聽的是127.0.0.1這個本地網卡,
只有走內部虛擬網卡才可以訪問,走外部的IP是沒辦法訪問到的。

那我們剛剛是監聽127.0.0.1:8080,也知道了從Kali是無法連上這個Proxy,
但是如果我們改成監聽192.168.240.1:8080或是監聽All interfaces則是可以,
我們可以在Burp Proxy -> Option 中選擇左方的Add,
可以選擇加入All interfaces或是加入Specific address 192.168.240.1,
還有要注意的是,點選All interfaces的時候另外兩個是不能勾選的。
因為All interfaces也包含了另外兩個。
我們也可以確定,如果是監聽192.168.240.1:8080或是監聽All interfaces,
在Kali那邊輸入192.168.240.1:8080是可以連上Burp的頁面。

最後我們再以apache為例讓大家能夠更加了解監聽的IP。
我在Kali起了一個Apache的網頁服務之後,
利用netstat -antup來查看監聽的服務,
我們在win10也是可以輸入192.168.240.128連上apache的網頁。

因為我們剛剛從netstat看到的:::80其實就是監聽了所有的Interfaces,
當然我們一般比較常看到的與知道的可能是0.0.0.0,
0.0.0.0代表的就是所有的Interfaces,而127.0.0.1是表示本機網卡而已,
要注意兩者是不一樣的意思,而運行apache顯示的確是:::80,
是因為這個:::其實包含了IPv4與IPv6的所有Interfaces的80 port。
再稍微提剛剛說的0.0.0.0,假設我的電腦當中有好幾張網卡IP,
譬如
192.168.1.1
10.10.10.1
127.0.0.1
如果今天開啟了一個服務是監聽0.0.0.0:80,
那不管訪問三個IP的哪一個80 Port可以成功訪問到這項服務。

那順便多提一下,
剛剛我們在kali中運行的apache監聽的interface與port,
實際上是可以在/etc/apache2/ports.conf中設定,
設定的listen 80就是監聽全部的80,
如果我們要讓他只監聽127.0.0.1,
可以設定127.0.0.1:80,
可以發現我們從Windows連不過去了,
可是kali自己還是可以看到自己,
netstat -antup也可以看到有監聽127.0.0.1:80,
並且剛剛的::::80不見了。

最後還是要提醒一下不要把127.0.0.1跟0.0.0.0搞混,
0.0.0.0是全部,是ANY,是全,是一,是真理 (?!
127.0.0.1不過是其中一個interface,
就是localhost,實際上也不是localhost意思XDDDD
這又是另一個坑了,其實127.0.0.1~127.255.255.255
也就是127.0.0.0/8都是localhost,這個就大家有興趣可以看看維基百科。
https://zh.wikipedia.org/wiki/Localhost

本系列的文章為作者參與第 12 屆 iT 邦幫忙鐵人賽的文章修改
原文連結
 https://ithelp.ithome.com.tw/users/20114110/ironman/3806

發佈留言