昨天講到一半的測試今天繼續介紹其他的測試內容。
測試後端回應示意圖 :
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 。
先提個前提 HTTP 是一種無狀態的協議 ( Protocol ),HTTP 只負責 Client 與 Server 兩邊溝通,HTTP 沒有辦法紀錄先前互動。
Cookie :
User = Alice
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 驗證是否正常。
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 這個功能,那就明天見啦!