iT邦幫忙

2021 iThome 鐵人賽

DAY 2
1
Security

讓Web開發者森77的Hacking Trick系列 第 2

[Day2] HTTP 基礎

前言

本來想要跳過這章直接進入正題,但如果寫那些攻擊原理的時候邊講HTTP的東西,感覺會有點混亂,於是就有了這篇的誕生。

正文

HTTP 超簡略介紹

HTTP 全稱 HyperText Transfer Protocol,是一個IPS(Inernet Protocol Suite)中應用層(Application layer)的一種協議。用作客戶端和伺服器端之間的Request和Response的標準。
另外需要知道的是HTTP URI Scheme,直接上範例比較容易理解:

http://example.com:80/index.php?id=1#section-1.1
http://<主機>:/<路徑>?<查詢(quary)>#<段落(fragment)>

  1. HTTP,這邊原本應該是protocol,但今天主要講述HTTP URI Scheme,因此其他協定就不多說
  2. 主機,持有資源的伺服器端
  3. port,一般若是瀏覽預設80 port的網站通常會被省略,而443的話在protocol那邊會變成https
  4. 路徑: 訪問主機中的特定資源的地方
  5. 查詢(quary),通常用來提供特定目的動作,例如搜尋網站某個data
  6. 段落(fragment),可以跳轉到網站的某個段落,例如RFC 7230的HTTP URI Scheme段落就可以使用這樣的方式:
    https://datatracker.ietf.org/doc/html/rfc7230#section-2.7.2
    或是也可以用#:~:text=<文字>的方式跳轉到指定的文字段落:
    https://ithelp.ithome.com.tw/articles/10265148#:~:text=OSCP

礙於篇幅 HTTP先介紹到這裡,有興趣可以看RFC文件

Request

當你對網站發起一個Request時,會遵循格式發送
先看下面的例子,這是對google發起的request,每行結尾都有一組CRLF(\r\n)

GET / HTTP/1.1
Host: google.com
Sec-Ch-Ua: " Not A;Brand";v="99", "Chromium";v="92"
Sec-Ch-Ua-Mobile: ?0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
X-Client-Data: CKLbygE=
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close

第1行是 request line,格式為:
method target http-version
對應
GET / HTTP/1.1

Method

在RFC 7231、5789中定義了以下Method,除此之外也可以客製化Method。

  • GET
  • HEAD
  • POST
  • PUT
  • DELETE
  • CONNECT
  • OPTIONS
  • TRACE
  • PATCH

Header

從第2行開始是各式各樣的headers,又依據用途分為四種類型,在後面的攻擊會再詳細介紹:

  • General Header Fields
  • Request Header Fields
  • Response Header Fields
  • Entity Header Fields

下篇預告: HTTP Verb Tampering


上一篇
[Day1] 讓開發者森77之前
下一篇
[Day3] HTTP Verb/Method Tampering - HTTP 動詞竄改
系列文
讓Web開發者森77的Hacking Trick30

尚未有邦友留言

立即登入留言