標題:CSRF漏洞相關

taibeihacker

Moderator

CSRF 漏洞相关​

1 定义与原理​

CSRF - 跨站請求偽造

1.1 cookie 相关​

用戶登錄的數據包:
20210110111113.png-water_print

響應的數據包:
當提交了用戶名和密碼登錄後,在服務器返回的數據包中攜帶類的Set -Cookie 字段,該字段就是為當前登錄用戶設置的Cookie 的值。
20210110111127.png-water_print

瀏覽器在接收到這些Cookie 的值後會將set-cookie 字段的值存放在瀏覽器中。
通過修改請求數據包的Cookie 為管理員的Cookie,即使不輸入密碼也可以登錄網站後台。
20210110111419.png-water_print

數據包的中Cookie的值是瀏覽器從本地存儲中取出,並自動填充到數據包中如果攻擊者控制了用戶瀏覽器並且竊取了cookie.瀏覽器會自動完成Cookie的填充,目標網站會誤認為該數據包就是管理員發送的,會以管理員的權限進行相關的操作。

1.2 CSRF​

前提:數據包的中Cookie 的值是瀏覽器從本地存儲中取出,並自動填充到數據包中
攻擊者在一定攻擊條件下,利用被攻擊者的身份向服務器發起請求,服務器可以正常解析並返回結果。
原理:一般來說,攻擊者通過偽造用戶的瀏覽器的請求,向訪問用戶自己曾經認證訪問過的網站發送出去,使目標網站接收並誤以為是用戶的真實操作而去執行命令。
20210110111625.png-water_print

20210110111911.png-water_print

發生條件:
攻擊者在網站A 處於登錄狀態
必需要在網站A 同瀏覽器中打開黑客提供的鏈接
後台身份驗證不嚴格(例如除Cookie 外無其它驗證)

2 防御​

2.1 HTTP Referer 限制​

站點可以對一些敏感操作限制其Referer 字段的值,比如某站點轉賬的時候使用:
轉賬的操作一定是用戶登錄之後在本站點的頁面上操作的,因為可以將Referer 字段限制為只允許本站點。

2.2 Token​

CSRF 成功的原因在於站點對於用戶身份的辨別依賴於Cookie,因此攻擊者可以在不知道用戶口令的情況下直接使用用戶的Cookie 來通過安全驗證。
在HTTP 請求中以參數的形式加入一個隨機產生的HTTP Token,服務器接收到用戶請求後會驗證Token,如果沒有Token 或者Token 不正確都會被認為是攻擊而直接丟棄
GET 請求: http://url?csrftoken=tokenvalue
POST 請求:input type='hidden' name='csrftoken' value='tokenvalue'/
資訊
比如攻擊者可以在網站發布自己服務器的地址,當普通用戶點擊了該地址後,由於該站點會在地址後面添加Token,也就造成了Token 的洩露。
因此要對站點對內鍊和外鏈進行區分,只在內鏈中添加Token,對於外鏈就不添加Token。
 
返回
上方