iT邦幫忙

2025 iThome 鐵人賽

DAY 0
0
Security

Web 攻防實驗 — 使用 DVWA 與 Kali Linux 的攻防學習實驗系列 第 5

DAY5 — 學習 HTTP Request / Response 結構

  • 分享至 

  • xImage
  •  

主題:解析 HTTP 請求與回應(headers、body、cookies、status code),並用 Burp 與瀏覽器開發工具實作觀察、修改與重發請求

一、今日目標

熟悉 HTTP 請求(Request)與回應(Response)的主要構成:Method、URL、Headers、Body、Status Code、Cookies、Content-Type 等。

使用瀏覽器開發者工具觀察請求/回應,並用 Burp Suite 攔截、修改與重放(Repeater)請求。

用 curl 做基本請求示範(加 header、帶 cookie、POST body)。

記錄重點截圖與測試結果,並理解這些概念如何應用到 SQLi / XSS / CSRF 的測試與防禦。

二、HTTP 基本概念速記

Request line:METHOD URL HTTP/VERSION(例如 GET /index.php?id=1 HTTP/1.1)

Common Methods:GET(取資源)、POST(送資料/改變狀態)、PUT、DELETE、HEAD、OPTIONS

Headers:描述請求/回應的 metadata(例:Host、User-Agent、Content-Type、Cookie、Set-Cookie、Referer、Origin、Content-Length)

Body:POST/PUT 等方法帶的實際資料(form data、JSON、multipart)

Response:狀態列(Status Code, e.g. 200, 302, 404, 500)、headers(Content-Type、Set-Cookie)、body(HTML/JSON)

Cookies:伺服器透過 Set-Cookie 指示瀏覽器儲存,再由瀏覽器在後續請求以 Cookie header 發送

狀態碼重點:200 OK、301/302 Redirect、401 Unauthorized、403 Forbidden、404 Not Found、500 Server Error、503 Service Unavailable

三、用瀏覽器開發者工具觀察

在瀏覽器開啟 DVWA

開啟 DevTools → Network(網路)分頁,勾選 Preserve log(保留紀錄)。

執行一次操作(例如登入、點選某模組),在 Network 列表點選一個請求檢視右側面板:

Headers:檢視 Request URL、Request Method、Request Headers(含 Cookie)、Response Headers(含 Set-Cookie)。

Payload / Request Body:檢視表單資料或 JSON。

Response:檢視伺服器回應的 HTML 或 JSON。

四、用 Burp Suite 攔截與修改請求(實作步驟)

啟動 Burp → Proxy → 確認 Proxy Listener(例如 127.0.0.1:8080)開啟。

在瀏覽器設定代理為 Burp(HTTP 代理 127.0.0.1:8080)。

開啟 Burp → Proxy → Intercept → 確認 Intercept is on。

在瀏覽器執行一個操作(例如表單送出),Burp 會攔截請求並停下來顯示 Request。

修改 Method(POST → GET)、修改 Body、或新增/變更 Header(例如刪除 Referer、增加 X-Forwarded-For)

點 Forward 送出去或 Drop 丟棄

使用 Repeater:選 Request → Send to Repeater,進到 Repeater 標籤後可以多次修改並重發,觀察不同 payload 的回應差異(非常適合做 SQLi / XSS 測試)。

Burp 範例操作:攔截登入請求 → 在 body 把 password 改成 ' OR '1'='1' -- → Forward → 檢查回應是否繞過驗證(僅限 DVWA / 測試環境)。

五、用 curl 示範(命令列範例)

注意:以下範例只在測試環境使用。

GET 請求:

curl -i "http://localhost:8080/DVWA/vulnerabilities/sqli/?id=1"

-i 會印出 response headers。

帶 header 與 cookie 的 GET:

curl -i -H "User-Agent: MyAgent" -H "Accept: text/html" -b "PHPSESSID=xxxx; security=low" "http://localhost:8080/DVWA/vulnerabilities/sqli/?id=1"

POST 表單(x-www-form-urlencoded):

curl -i -X POST -d "username=admin&password=password&Login=Login" "http://localhost:8080/DVWA/login.php"

POST JSON:

curl -i -X POST -H "Content-Type: application/json" -d '{"name":"test"}' "http://localhost:8080/api/example"

觀察 redirect(顯示 Location header):

curl -i -L "http://localhost:8080/some_redirect"

六、常見 headers 與意義

Host:目標主機

User-Agent:瀏覽器 / 客戶端資訊(偽造 User-Agent 有時可測規則)

Referer / Origin:來源頁面(CSRF 防護常檢查)

Content-Type:告訴伺服器 body 格式(application/x-www-form-urlencoded、multipart/form-data、application/json)

Cookie / Set-Cookie:會話管理、認證資訊

Authorization:HTTP Basic / Bearer token

Content-Length:body 長度

七、如何把這些知識應用在攻防測試

SQLi / XSS:找到會回顯或納入 DB 的參數(看 Request Body / URL)→ 在 Burp Repeater 修改 payload → 觀察 Response body 是否有回顯或錯誤。

CSRF:觀察表單是否有 CSRF token(hidden input)或檢查 Origin/Referer 是否被驗證;若無可構造跨站偽造請求。

Session 流程:觀察 Set-Cookie 與 Cookie,確認是否有 HttpOnly / Secure / SameSite 設定;若沒設定,XSS 可能偷取 cookie(結合 XSS 攻擊)。

WAF/IDS 測試:透過修改 headers(例如刪除或偽造 X-Forwarded-For、User-Agent)觀察是否觸發防火牆/IDS 規則。

九、常見問題與解法

Burp 攔截不到請求:檢查瀏覽器代理是否設定正確,或是否有系統/瀏覽器擋掉代理(某些瀏覽器擴充套件會)。

看不到 Set-Cookie / Cookie:某些 cookie 設 HttpOnly(無法被 JS 讀取,但會在 headers 顯示);若未顯示,確認 Network 面板是否選到正確請求。

修改 request 後 server 回 400/500

curl 與瀏覽器行為不同:瀏覽器會自動處理 cookie、重定向與某些 headers;curl 需要手動帶 -b/-c 或 -L。

十、防禦要點

把 HTTP 知識寫到報告的防禦部分可以這樣表述:

強化 Session Cookie 設定:HttpOnly, Secure, SameSite=Lax/Strict。

對輸入/輸出進行嚴格驗證與編碼:Content-Type 與 body 處理要按預期解析,輸出給 HTML 時做 HTML escape。

檢查 Origin/Referer/CSRF Token:對改變狀態的請求(POST/PUT/DELETE)加入 CSRF token 驗證。

最小化敏感資訊在 header/body 的傳送:避免在 URL 或 Referer 中放敏感參數(避免在回溯 log 或 proxy 中洩露)。

錯誤處理:避免回傳過多內部錯誤資訊(500 stack traces);把詳細錯誤寫到伺服器日誌並保護日誌存取。

十一、當天成果

使用瀏覽器 DevTools 與 Burp 觀察並記錄 Request / Response 的 headers 與 body。

在 Burp 中攔截一個登入或表單請求,修改 payload 後用 Repeater 重發,觀察回應差異並保存截圖與 curl 輸出。

撰寫 HTTP 相關的防禦建議,並說明如何應用到後續的 SQLi / XSS / CSRF 測試。

十二、心得反思(範例)

掌握 HTTP Request / Response 的結構能讓我在做攻防測試時更有方向:知道要在哪裡放 payload、要觀察哪些 headers,以及如何模擬不同客戶端行為(瀏覽器 vs curl)來測試防護機制。Burp 的 Repeater 與 Intercept 是日常測試工作流的核心工具。


上一篇
Day 4 — 認識 DVWA 的登入系統 & 基礎功能
系列文
Web 攻防實驗 — 使用 DVWA 與 Kali Linux 的攻防學習實驗5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言