1. 程式人生 > >CSRF 漏洞原理詳解及防禦方法

CSRF 漏洞原理詳解及防禦方法

隨機 讀取 跨站 管理員 right 較差 網站 關鍵字 關心

跨站請求偽造:攻擊者可以劫持其他用戶進行的一些請求,利用用戶身份進行惡意操作。

例如:請求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那麽實用,用戶體驗較差,所以這一種方式只能用在敏感操作的頁面,利用登錄頁面等。

CSRF 漏洞原理詳解及防禦方法