今天我們來談談Target下的另一個功能 – Scope,
Scope的中文翻譯就是「範圍」,
如同其名,這項功能用途就在於限制範圍,
讓我們能夠更加精確地去狙擊、鎖定我們的目標。

Scope對於滲透測試時是個相當好用的選項,
因為當我們對目標網站進行測試時,
可以利用Domain或是URL來限制我們要攔截與觀察的網站。
實際上也是我測試時經常(可以說是必定)會使用的功能,
除了方便觀察以外,也是要避免不小心掃到其他頁面。
簡單來說我們可以設定將某個FQDN納入我們的觀察範圍(Scope),
譬如說像是 https://google.com ;
或者是利用URL限制某個子目錄納入我們的Scope,
譬如說像是 https://google.com/xxx 。
透過這樣的方式呢,我們可以將範圍關注我們的目標上面,
減少許多我們可能不需要觀察或是測試的網站內容。
將目標加入Scope的方式通常有兩種。
第一種是我覺得最簡單的使用方式,
也就是攔截到網站之後,
在SiteMap對該節點點選右鍵,
選擇Add to scope。

這邊順便說明一下,
會跳出一個視窗問你Yes或No
這邊如果選擇Yes的話,
之後你在瀏覽器中查看的網站與頁面,
如果不是在Scope範圍中的話,
是不會被logging的,也就是不會出現在SiteMap當中。
不過如果之後有需求都可以隨時點選Re-enable,
去logging所有不管是否為Scope的流量。


第二種是在Scope的功能頁面中,
直接在Include與Exclude新增URL,
這邊的操作使用與原理其實相當好理解。
將自己想測試的目標加入到Include的地方,
Scope也可以設定排除頁面,譬如像是logout頁面。

而限定了這個Scope之後會有甚麼差異呢?
Target Scope主要影響與用途如下:
- 限制SiteMap和Proxy Hishory的顯示結果
- 限制Spider爬蟲的抓取內容
- 限制Scanner掃描的範圍
實際上的影響與操作差異,
可能還是大家動手實作的時候才會比較有感受到。
雖然Scope這項功能我是每次必用,
有些邏輯我還是不太能理解,
像是將目標加入Scope後,
其實Proxy Intercetp預設仍然會攔截非Scope的請求,
至於要怎麼排除攔截我們不要的請求,
這邊就先留個坑,待之後再跟大家說明。
我自己比較常使用到的操作是這樣的,
可以在SiteMap的Filter中勾選Show only in-scope items,
勾選完確認之後,回到SiteMap的地方查看,
可以發現SiteMap變得乾淨許多,整個世界都清靜了,
只留下了我們鎖定的目標。


前面雖然是說可以將某個domain、FQDN、URL加入Scope,
實際上可能需要稍微小小解釋一下,
Burp 對於整個網站結構的區分還是挺仔細的,
這邊就讓我們來先提到一下SOP同源政策。
同源政策限制了不同源網站間資源的存取與互動,
所以這邊就要來說說甚麼是同源?
簡單來說就是,「協定」「域名」「埠號」三者一樣就是同源,
(URI scheme, host name, and port number)
三者之間只要有一個不同,就是不同源的!
以下這張圖取自MDN,個人覺得是滿清楚明瞭的,
也順便要提一個很基礎的觀念,
以下的圖表你可能會發現為什麼有的沒有寫Port number呢?
這個必須要知道,
如果是HTTP沒有寫Port的話,就是代表HTTP的預設Port 80,
如果是HTTPS沒有寫Port的話,就是代表HTTPS的預設Port 443。

也可以參考MDN的介紹:
https://developer.mozilla.org/zh-TW/docs/Web/Security/Same-origin_policy
為什麼要提到這個SOP同源政策,
其實重點也不是同源政策,是想跟大家強調這個「源」的概念,
因為Burp其實也是會有將其作區分的。
(實際上也是一定會做區分的,因為不同源基本上就是不同的服務網站)
而Burp中的Scope可是有遵循著這個同源政策,
並且可說是青出於藍而勝於藍,
還更詳細的區分到了「路徑」這個節點層級,
所以假設我把
http://192.168.240.178/ 跟 http://192.168.240.178/dvwa
兩者加入Scope,所得到的結果會是不同的喔,
可以參考以下的圖片。




而如果我們把Scope改成了 https://192.168.240.178
也就當然不會有任何的東西出現,因為我根本沒有任何HTTPS網站。


這邊新增Scope的方式也可以選擇Use advanced scope control,
原本按新增的時候是直接輸入URL,勾選之後會改成要輸入Protocol/HOST(IP)/Port/File的方式。



今天的最後來閒聊一個稍微跟Burp與技術比較無關,
可是跟今天我們講的Scope還有實務上的滲透測試比較相關的事情。
當一個政府部門或是一間企業,或是任何一個組織單位,也就是我們所說的「甲方」。
甲方向一間資安服務的廠商,也就是「乙方」公司,委託了一項滲透測試的服務。
不知道大家有沒有想過這個時候甲方給乙方的目標範圍會是甚麼呢?
這邊隨便做個假設好了,假設我的目標清華大學要來找我幫忙做滲透測試,
總不可能是直接跟我講說,我要你對「清華大學」做滲透測試這樣吧?!
究竟是要針對清華大學的官方網站做測試,還是要針對整個140.114的網段測試,
是想逼我測到天荒地老還是打算讓我與滲透測試白頭偕老。
如果說是測學校網站,裡面也是包含了各式各樣的FQDN,
那學生自己在宿舍架的網站服務,IP也是清大的,又算不算我的目標範圍呢?
因為目標「清華大學」這個標的太過於籠統了,
所以通常在滲透測試的時候,並不會是針對這樣的範圍執行測試。
而是甲方會給定特定的「URL」或是「IP」來讓乙方進行測試,
測試人員拿到這個目標「URL」或「IP」,才針對目標進行滲透測試。
所以既然目標明確了,就可以利用Burp這個Scope功能協助我們鎖定目標,
也比較不會不小心打得太興奮,一個打歪打到了非目標的網站,
打到別人未允許你打的網站,如果客戶只是教育機構可能還好,
如果是電商網站,又不小心真的造成網站服務Crash,可能你也會Crash。
(當然實務上有時其實又也不是這麼單純XD)
本系列的文章為作者參與第 12 屆 iT 邦幫忙鐵人賽的文章修改
原文連結 https://ithelp.ithome.com.tw/users/20114110/ironman/3806