CSRF
原理:
CSRF攻擊利用網站對於用戶網頁瀏覽器的信任,挾持用戶當前已登陸的Web應用程序,去執行並非用戶本意的操作。
CSRF和XSS的區別:
-
CSRF是借用戶的權限完成攻擊,攻擊者並沒有拿到用戶的權限,而XSS是直接盜取到了用戶的權限,然后實施破壞
-
XSS利用用戶對網站的信任,CSRF利用的是網站對用戶網頁瀏覽器的信任
CSRF的常見特性
- 依靠用戶標識危害網站
- 利用網站對用戶標識的信任
- 欺騙用戶的瀏覽器發送HTTP請求給目標站點
- 另外可以通過IMG標簽會觸發一個GET請求,可以利用它來實現CSRF攻擊。
影響因素
CSRF攻擊依賴下面的假定:
- 攻擊者了解受害者所在的站點
- 攻擊者的目標站點具有持久化授權cookie或者受害者具有當前會話cookie
- 目標站點沒有對用戶在網站行為的第二授權
一、CSRF(get) login
進行登錄
修改個人信息
進行抓包,發現使用get請求提交參數,使用burpsuite中pocGenerate CSRF Poc進行攻擊
修改信息,點擊Regenerate,生成新poc,點擊Test in browser
復制生成連接
模擬被攻擊者訪問該網頁,並點擊按鈕
被攻擊者一旦點擊按鈕,他的信息就會被修改
二、CSRF(post) login
被攻擊者登錄
修改個人信息,進行抓包,為post,使用burpsuite中pocGenerate CSRF Poc進行攻擊
修改信息,點擊Regenerate,生成新poc,點擊Test in browser
復制生成連接
模擬被攻擊者訪問該網頁,並點擊按鈕
被攻擊者一旦點擊按鈕,他的信息就會被修改
三、CSRF Token login
被攻擊者登錄,
修改信息,進行抓包
發現存在token,其中token的值每次請求都會發生變化
使用了暴力破解繞過token的值
將包發送到Intruder模塊,修改數據,將token值添加為變量
進入Options選項,Grep-Extract中add進行添加
點擊Refetch response,選中token值復制,點擊OK
Payload type選擇Recursive grep,並將將復制token值填入
進行攻擊
查看個人信息,信息被,攻擊者修改
防御措施
-
增加Token驗證(常用做法)
對關鍵操作增加Token參數,token必須隨機,每次都不一樣
對token的控制進行邏輯功能判斷
對token的所屬賬戶進行效驗 -
關於安全的會話管理(避免會話被利用)
不要在客戶端保存敏感信息(比如身份驗證信息)
退出、關閉瀏覽器時的會話過期機制
設置會話過機制,比如15分鍾無操作,則自動登錄超時 -
訪問控制安全管理
敏感信息的修改時需要身份進行二次認證,比如修改賬號密碼,需要判斷舊密碼
敏感信息的修改使用POST,而不是GET
通過HTTP頭部中的REFERER來限制原頁面 -
增加驗證碼
一般在登錄(防暴力破解),也可以用在其他重要信息操作的表單中(需要考慮可用性)