駭客眼中的 HTTP Verb Tampering
這篇文章主要說明 http request 發送的攻擊常見有哪些?
一個網站會支援基本的 http request 基本的指令,常見的有 HTTP GET , HTTP Post
駭客利用這些基本的指令就可以進行攻擊。這篇文章透過幾個簡單的例子說明。
HTTP GET
HTTP Get 用在一般網址的存取,
例如:
http://website.com/name=John&Book=1234
Http GET 的情況下,參數的傳遞透過網址來達成,
在這個例子中,傳遞兩個參數
name = John
Book = 1234
因此網站收到這樣的訊息之後,根據對應的參數,給予對應的網頁資訊
HTTP POST
HTTP POST 除了網址之外,還有參數的傳遞內容
多半發生在需要與網站後端資料庫資料更新或是執行某動作
例如:登入、轉帳、結帳、新增資料等
相關這些動作的參數就會用 POST 方式進行
以Chrome登入 Yahoo 為例:
F12 > Network > 找到 POST 的request > Headers > Form Data
Form Data 就包含許多登入時會傳輸的參數,透過 Request Method: POST 進行
HTTP GET/POST 也是最常見的兩種,那麼還有其他的嗎?
根據 HTTP 定義,其他還包含:
- OPTIONS
- HEAD
- PUT
- DELETE
- TRACE
- CONNECT
多半安全性較高的網站,這些 Request Method 都被停止,
對於瀏覽器正常瀏覽網站,也只會使用到 HTTP GET/POST
換句話說,其他這些指令,多半是有心人士或是駭客所用
駭客會嘗試這些指令,看看網站的反應,再決定下一步如何進行攻擊
快取 | 是否可重複執行 | |
---|---|---|
GET | Y | Y |
POST | N | N |
PUT | N | Y |
DELETE | N | Y |
最常見的是駭客利用 HEAD,
為什麼呢? 因為 Head 會回傳網站 http header ,
駭客可以藉此知道該網站使用的技術與版本。例如(IIS 7.0 or Apache 2.1)
因此,除非網站執行所必需的 HTTP Request,其他的 http request method 建議 disable
網站防護建議
1.Disable 不需要的 Request Method
建議只留下需要的 HTTP Request method
- HTTP GET
- HTTP Post
哪些是不需要的呢?
- OPTIONS
- HEAD
- PUT
- DELETE
- TRACE
- CONNECT
2. 防火牆
防火牆會針對所傳送的 http communication 檢查
對於不常見的 http request 發出警告,
對於大量而且密集的 HTTP Head 可進一步將該連線中斷或是將該 IP 禁止存取。