https://www.trustedsec.com/blog/setting-the-referer-header-using-javascript/ 通過 js 僞造 referer
簡介
主要參考
是什麼?
CSRF Cross-site request forgery 跨站請求僞造。
SSRF Server-side request forgery 服務端請求僞造。
原理是?
CSRF 屬于用戶端漏洞。
我們知道,通常在網頁上執行的操作會通過 http 請求發送給伺服器。
假設使用者已經登入網站,網站有一些敏感功能(例如更改驗證郵箱)。如果攻擊者事先捕獲好這個更改郵箱的資料包,通過某種手段誘使使用者發送這個請求資料包,即更改了使用者的郵箱。
成功的 csrf 攻擊就是以受害者的身份發送 http 請求。具體來說就是 發送請求以執行某些功能,或者讀取請求的響應以擷取使用者敏感資訊。
實際攻擊中存在的限制
根據原理,可以看出條件有幾點:
-
一個敏感的功能,并且捕捉資料包。
例如更改郵箱,更改綁定手機号等等。
網上有的例子是讓網站管理者通過 csrf 添加使用者。但最大的難點是不知道添加使用者的資料包。如果是開源 cms 還可以通過自行搭建擷取資料包。要是非開源,根本沒辦法擷取資料包。
假設,當服務端收到請求後需要使用者再次輸入密碼确認,或者還存在驗證碼等,那麼 csrf 也就不起作用。
-
要能自動處理使用者憑證。
通常使用者憑證是在 cookie 中,當向目标網站發送請求時浏覽器會自動攜帶 目标網站 的 cookie。
cookie 中的 samesite 屬性會決定跨域請求是否攜帶此 cookie。
-
請求資料包不能有不可預測的參數。
若有不可預測參數,則發送的請求就是非法的,伺服器當然不認。
配置良好的 csrf token ,直接就打破這個條件。
-
如何讓使用者觸發。
GET 型比較簡單,可以通過很多方式觸發。例如直接誘使使用者點選連結、通過标簽某些屬性
<img src />
、通過 xss 攻擊執行 js 發送。
但 POST 型就隻能通過 js 發送。
如果進行跨域請求的話,要額外注意。
- sop 同源政策 和 cors 跨域資源共享,影響擷取跨域請求的響應。
- cookie 中 samesite 标志:用來緩解 csrf 攻擊。設定得當,任何從第三方網站發送的給目标網站的請求都不會攜帶目标網站的 cookie。
自 chrome 80 (2019/2)起,若未設定 samesite 标志,則預設當作 Lax 。詳情見
如何防禦?
可以從多個方面考慮:
- 從功能點上來說:
- 敏感功能二次确認,例如要求再輸入一遍驗證碼,加大利用難度。
- POST 型比 GET 型更難利用,是以可以考慮敏感功能改成 POST 型請求。
- csrf token,使資料包不可預測。
- samesite 标志,使得來自其它網站的請求不會攜帶 cookie。
- 對 referer 頭部進行檢測。
利用思路
如果不符合某一步的話,就放棄吧。。
-
首先得得到敏感資料包,觀察網站功能,有無值得利用,擷取其資料包。
功能必須是隻需要一個或多個資料包就能進行的操作,中間沒有什麼額外驗證過程。
-
資料包中是否存在随機參數。
如果有随機參數,嘗試是否能預測。例如時間戳。
如果有 csrf token ,則檢查是否存在以下缺陷:
更改請求方法 嘗試删除 token token 可重用 token 未和使用者綁定,意思是說一個有效的token 任意使用者都可使用。 頁面存在 xss 漏洞,可以擷取到 csrf token
-
是否存在其它驗證,是否存在缺陷。
如果檢查 referer,則看是否存在以下缺陷:
删除是否影響? 是否不嚴格比對,即僅比對前字尾等? 通過 js 代碼僞造 referer
- 根據資料包請求方法不同,進行利用。
- POST 型:通過 xss 漏洞。
- GET 型:通過 xss 漏洞。或社會工程學方法誘使使用者通路。
詳細利用方式
參考這篇博文
此處僅摘抄主要方法概述,具體利用代碼請參照原文。
-
提取 csrf token:
通過頁面 xss 漏洞或 懸浮标簽注入來擷取 csrf token
- 使用 img 标簽發送 GET 請求:
- 使用 表單/Ajax 發送 GET/POST請求:
- 發送 Content-Type 為 multipart/form-data 的 POST 請求。上傳檔案
- 使用 ajax 擷取 token,然後使用 ajax 發送請求。
- 使用 iframe 擷取 token,然後通過 表單發送請求。
- 使用 iframe 擷取 token,并通過此 iframe 裡的表單發送。
- 通過一個 iframe 擷取 token,然後通過另一個 iframe 發送請求。
其它
補充一下同源政策
