Proxy Server 代理伺服器(プロキシサーバー)

代理伺服器

代理伺服器是什麼呢?

代理伺服器是一種網路代理,在我們的本地電腦(客戶端)要訪問一個網站時,會有一個像是中轉站,這個中轉站(代理伺服器)可以保護我們的真實IP位置不被網站端知道我們的IP,網站伺服器端 只會紀錄代理伺服器的IP位置。代理伺服器可保障網絡終端的隱私,甚至可以預防網路攻擊。

而代理又分成正向代理(代理用戶端)和反向代理(代理伺服器端)。

正向代理

正向代理聽起來很抽象,『Sorry, 我甚麼都不會就只會寫程式』這個部落格用把死黨比喻成正向代理,讓正向代理更好的被理解。

我偷偷暗戀班花,我不想讓班花發現我很宅很醜,當我(客戶端)要傳紙條(發送請求)給班花(網站 伺服器端 )的時候,死黨(正向代理)就很好用啦!

  • 我(客戶端)可以透過死黨(正向代理)幫我發送情書(IP地址)給班花(網站 伺服器端 ),讓他不知道是我給的。可以達到保護我的IP作用。
  • 我(客戶端)和班花(網站 伺服器端 )的座位距離太遠了,如果沒有死黨(正向代理)的幫忙,我無法傳給班花紙條。這就有點類似,牆內的大陸人想要看youtube的話,他們需要一個vpn或是設定Proxy來幫助它們連到特殊網站
  • 當我(客戶端)每次傳紙條(發送請求)問班花(網站 伺服器端 )電話號碼時得到的答案都是,你先傳照片給我看看(回傳請求).的話,死黨會覺得很煩,死黨(正向代理)只要收到我(客戶端)跟班花要電話號碼的紙條(發送請求)時,死黨就模仿班花的筆跡回我(正向代理快取),你先傳照片給我看看..。換句話說,如果回應存在代理得快取中,會直接回應給客戶端,可以提升速度

反向代理

淘寶真的很神奇,什麼都有賣,幾年前我看過有java或c++代寫的作業的服務。反向代理就像淘寶賣家,你(客戶端)只要有錢,你可以把你的需求跟淘寶賣家(反向代理)說,只要付了錢,淘寶賣家可以提供你的需求,假設,我的教授要我做一個會員系統的網頁。除了前端介面外,我還得架構資料庫和寫後端程式,我馬上跟淘寶賣家說我(客戶端)要作業代寫服務,我付10萬元,明天馬上要!!!這時候淘寶賣家(反向代理)為了賺這筆錢,集合了前端工程師(伺服器端 )和後端工程師(伺服器端 )還有資料庫工程師(伺服器端 )來幫我寫作業,結果我如願以償在隔天馬上得到一份作業。

  • 淘寶賣家請了三個剛好很閒的工程師(3個伺服器端 )來幫我完成作業,分散給3個工程師可以讓每個工程師不用負擔那麼重的工作量。這可以避免單一伺服器負擔太大,而達到平衡負載的功效。
  • 這3個工程師都有正職工作,萬一被老闆發現他們兼這種差 ,絕對會被炒魷魚,所以三個工程師(伺服器端 )拜託淘寶賣家(反向代理)不要透漏他們真實身分,除了淘寶賣家(反向代理)以外沒人知道三個工程師(伺服器端 )是誰。可以達到隱藏伺服器端IP的功能,而反向代理就像防火牆一 樣,可以保護伺服器端的安全。
  • 我原本把作業下載完了,但電腦忽然當機了…,只好再去跟淘寶賣家要一次,還好淘寶賣家有存檔,不用再麻煩工程師在寫一次了。反向代理端和正向代理端一樣有快取機制,若是需求一樣的話可以重快取馬上取出給客戶端。

Burp Suite

Burp Suite是一款Web安全領域的跨平台工具,裡面有許多抓web漏洞的模塊,例如proxy、spider、scanner等等模塊,我印象中去年用過它的Intruder(入侵者)這個模塊去暴力破解來解過HACKER101內的題目(第三題)。

這次要說的是Burp Suite內的proxy模塊,我們可以用proxy模塊來當我們的代理人,它可以幫我們攔截用Burp Suite瀏覽器開的請求。

Burp Suite的 Proxy模組內有個 Intercept is off的小按鈕,只要把Intercept is off 切換成 Intercept is on,這樣我們用Burp Suite內瀏覽器發送的所有請求都會被攔截下來。

實作PortSwigger

代理伺服器可以保護我們,但也有可能被黑客利用來當作攻擊的道具。

PortSwigger 的業務邏輯漏洞有一題Lab: Excessive trust in client-side controls就是利用WEB前端CODE的漏洞來進行資料竄改,若把商品價錢寫在POST中而不是資料庫,那就有可能面臨被竄改的危險。

具體來說,黑客可以利用Burp Suite的 Intercept is on和修改request的功能來改變商品價格後,然後用他想要的價格買下商品。

以下是具體方法

  1. 第一步 開啟Burp Suite 瀏覽器 Open browser

  1. 用內建瀏覽器進到lab題目中
  1. 確認一下任務(買夾克)並記下帳號及密碼
  1. 登入電子郵件和密碼後會登入到商品頁面 ,發現目標夾克!!
  1. 在買夾克前先到右上方My account登入一開始給我們的那組帳號密碼,順帶一提,隔壁My account旁邊那個小標示是購物車

發現我有購物金100元,但剛剛的夾克好像要1337元?

  1. 在夾克商品頁面看看的原始碼,發現夾克價錢是寫在html網頁端的 Form 這個表單內並用POST方式來發出請求,如果這邊能攔截這個請求並修改網頁端的數字的話是不是可以用更便宜的價錢買到夾克呢?
  1. 現有的100塊購物金買不起這件夾克的價錢,這時候就可以利用proxyIntercept is on和修改request的功能來攔截請求並改變商品價格,然後用更便宜的價格買下商品。
  1. Intercept is off 切換成 Intercept is on後按下Add to cart。
  1. 這時候proxy會收到一個post的請求,最下方有顯示price=133700,點開右邊的request參數,可以發現price的值被設定成13370元,這邊比網頁頁面上寫的1337元多兩個0,有可能是網頁頁面上寫的是美金,而這邊的單位則是美分。
  1. 這時候點開request參數欄內的price,price右邊有個小箭頭,點下小箭頭後把value改成1,改完後按Apply changes。
  1. 按下Forwad後再切換成Intercept is off ,最後刷新頁面後旁邊購物車顯示1,代表我剛剛的夾克已經加進購物車了。
  1. 點進購物車後發現,我成功用0.01的價錢買到夾克了!!

所以,有可能被竄改的資料我們最好放在資料庫而不要放在POST內,避免被有心人士竄改