跨站請求偽造:攻擊者可以劫持其他用戶進行的一些請求,利用用戶身份進行惡意操作。
例如:請求http://x.com/del.php?id=1 是一個刪除ID為1的賬號,但是只有管理員才可以操作,如果攻擊者把這個頁面嵌套到其他網站中<img src=
“http://x.com/del.php?id=1”> 再把這個頁面發送給管理員,只要管理員打開這個頁面,同時瀏覽器也會利用當前登陸的這個管理賬號權限發出:http://x.com/del.php?1d=1 這個請求,從而劫持此請求,利用管理員賬戶執行了一些操作。
危害:添加管理員賬號、修改網絡配置、直接寫入webshell等
1、 挖掘經驗
CSRF主要用於越權操作,因此多發生在有權限控制的地方。
黑盒挖掘:先搭建好環境,打開幾個非靜態頁面,抓包看有沒有token,如果沒有,再直接請求這個頁面,不帶referer,如果返回數據還是一樣的,那說明很有可能存在CSRF漏洞,
白盒挖掘:讀取代碼的核心文件,查看里邊有沒有驗證token和referer相關的代碼。或者直接搜索token這個關鍵字,再去看一下比較關心的功能點的代碼有沒有驗證。
2、 漏洞防范
主流防范有兩種:增加token/referer驗證避免img標簽請求的水坑攻擊和增加驗證碼(影響用戶體驗)
(1)、利用token
Token實在頁面或者cookie中插入一個不可預測的字符串,服務器驗證token是否是上次留下的即可判斷是不是可信請求;
Token實現代碼:
通過MD5當前時間加上(1,1000)的隨機數生成token,然后檢查是否有token;
抓包,發現沒有token,返回結果faild;
生成token值,發送返回結果success;
(2)、驗證碼實現
驗證碼沒token那么實用,用戶體驗較差,所以這一種方式只能用在敏感操作的頁面,利用登錄頁面等。