iT邦幫忙

2026 iThome 鐵人賽

DAY 22
0
自我挑戰組

滲透測試新手的 HTB Academy 30天學習日記系列 第 22 篇

Day 22 修改封包可以測試哪些機制

  • 分享至 

  • xImage
  •  

昨天講到一半的測試今天繼續介紹其他的測試內容。

測試種類介紹

測試後端回應示意圖 :

Client  -------  Server

正常請求 >>>>>>>

        <<<<<<<  正常回應  

========================

Client  -------  Server

異常請求 >>>>>>>

        <<<<<<<  ?? 回應

存取控制

昨天有介紹過一個場景了,大概回顧一下,若是沒有經過帳號之類的機制來做驗證,只看 GET 的參數就能夠成功存取,那基本上所有人都可以看到登記在上面的敏感資料了。所以針對這點來做測試看伺服器是否有實際在檢查權限。

輸入驗證

輸入驗證有包含很多種不同的類別,例如 : 型別驗證 . 範圍驗證 . 長度驗證 . 格式驗證 . 內容驗證 等等,礙於篇幅今天就只介紹型別跟範圍驗證。

型別驗證 :
假設原本 user 這個變數是要輸入字串,那我們可以嘗試輸入數字 ( 123 ) . 浮點數 ( 0.5 ) 或是布林值 ( true/false ) ,來觀察伺服器的回應。

正常輸入 :

user=alice

異常輸入 :

user=24
user=1.5
user=false

範圍驗證 :
舉一個常見的例子,在我們瀏覽購物網站的時候常常會有一頁顯示不完的情況,這時候就會設計出分頁,這類切換不同頁的通常會用 GET 來請求 ( 參數名稱很常會叫 page )。
![[Pasted image 20261002220850.png]]
來源 : https://ithelp.ithome.com.tw/?tab=tech&page=3

下面這個網址可以看出有個 page 的參數,可以測試修改為 0 或 很大的值,伺服器的回應會變成什麼樣。

https://ithelp.ithome.com.tw/?tab=tech&page=2

正常輸入 :

page=2

異常輸入 :

page=0
page=999999999999999

Cookie / Session 驗證

簡單介紹一下 Cookie 跟 Session 。
先提個前提 HTTP 是一種無狀態的協議 ( Protocol ),HTTP 只負責 Client 與 Server 兩邊溝通,HTTP 沒有辦法紀錄先前互動。

  • Cookie ( 存在瀏覽器中 )
    Cookie 是伺服器端在使用者登入網站後,伺服器端給瀏覽器的一個資料,瀏覽器可以利用這個資料來驗證,就不會因為每次網頁重新載入就要重新登入一次。

Cookie :

User = Alice
  • Session ( 存在伺服器端 )
    Session 是當使用者登入網站後,伺服器會記錄下來使用者的 ID 或名字 ( 驗證所需的資料 ),存成一個物件,並用一個叫做 Session ID ( SSID ) 的索引來指向這個物件,只有伺服器端才知道哪一個 SSID 是指向哪一個使用者,SSID 會包在 Cookie 中給瀏覽器,這樣下次瀏覽器就可以直接用 SSID 來做驗證。

SSID :

DJWAHDIUAWHD

Session :

User = Alice
UserID = 111

![[Pasted image 20260803165616.png]]
來源 : HTB LAB 的靶機

到這邊你可能會有個疑問同樣都是要驗證 Session 有存在的必要嗎 ?
關於這題的解答就要提一下兩者安全性的差異了,Cookie 是存在瀏覽器中只要使用者想就可以去竄改, 如果只憑這樣去驗證就會跟昨天提到的例子一樣了,所以其實 Session 是有其必要性,SSID 在 Cookie 裡面,使用者竄改 SSID 就完全登入不了了,因為 SSID 不是一個規則的字串,只是一個索引而已。

講了這麼多背景知識拉回來驗證,現在我們已經知道 Cookie 跟 Session 了,其實我們可以測試的就是修改 Cookie 中的 SSID ,把原本正常登入拿到的 SSID 改成隨機其他的字串來看伺服器怎麼回應,來確認 Session 驗證是否正常。

Header 測試

HTTP 的 Header 中有很多參數,我們可以針對每一項都做一次測試。
![[Pasted image 20260930230302.png]]
Day 20 用 Burp 來攔截請求時用到的圖
![[Pasted image 20261002230638.png]]
用 F12 的開發者工具中的網路可以看到網站回應的內容

雖然可以都測試但少少的還好說,一旦像上面那張肯定是試都試不完。

所以就有幾個比較常拿出來做測試的參數,例如我們上面剛剛提到的 Cookie 就是一種,這邊我舉一個叫做 user-agent 的參數來介紹。

user-agent 是伺服器用來判斷瀏覽器或客戶端是什麼身分。
像是下面這張圖是 Day 20 的時候截的,我是用 Firefox 來瀏覽網頁所以可以看到 user-agent 那一欄有寫上 Firefox,從這個參數伺服器就可以知道我現在用的是 Firefox ,然後可以對應瀏覽器來做出一些變化如排版之類的。
![[Pasted image 20260930232201.png]]

範例 :

user-agent = Firefox

改成
Chrome 瀏覽器

user-agent = Chrome

Python 爬蟲 ( 有些網站設有簡單的人機檢查會透過這個參數來檢查是不是人類 )

user-agent = python-requests 

CLI 的資料傳輸工具,可以用來下載檔案

user-agent = curl/8.0

有時候用爬蟲去抓資料時有些網站會不讓爬蟲抓,就會設計人機檢查的機制,檢查出是機器人的話就會 403 Forbidden 的錯誤被拒絕。

總結

今天就介紹到這邊,好像離題有點遠了原本是要介紹 Burp 的,結果剛好講到封包修改的用意就一個不小心越講越多,明天會開始回到 Burp 的內容會介紹 Repeater 這個功能,那就明天見啦!

參考資料來源 & 延伸閱讀


上一篇
Day 21 透過 Burp 修改 HTTP 封包的用意
下一篇
Day 23 Burp Repeater 使用介紹 & 使用 Repeater 來解簡單的 Lab
系列文
滲透測試新手的 HTB Academy 30天學習日記 共 23 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言