CWE-352: CSRF漏洞有幾種常見型別?
一、什麼是CSRF漏洞?
CSRF跨站請求偽造,主要表現為:攻擊者盜用了你的身份,以你的名義傳送惡意請求,對伺服器來說這個請求是完全合法的,但是卻完成了攻擊者所期望的一個操作,例如以你的名義傳送郵件或訊息,盜取你的賬號,新增系統管理員,甚至於購買商品、虛擬貨幣轉賬等。
CSRF現狀:CSRF這種攻擊方式在2000年已經被國外的安全人員提出,但在國內,直到06年才開始被關注,08年,國內外的多個大型社群和互動網站分別爆出CSRF漏洞,如:NYTimes.com、Metafilter(一個大型的BLOG網站),YouTube和百度。而現在,網際網路上的許多站點仍對此毫無防備,以至於安全業界稱CSRF為“沉睡的巨人”。
二、CSRF漏洞是如何攻擊的?
(1)受害者登入AA.com,並保留了登入憑證(Cookie)
(2)攻擊者引誘受害者訪問了BB.com
(3)BB.com 向 AA.com 傳送了一個請求:a.com/act=xx。瀏覽器會預設攜帶AA.com的Cookie
(4)AA.com接收到請求後,對請求進行驗證,並確認是受害者的憑證,誤以為是受害者自己傳送的請求
(5)AA.com以受害者的名義執行了act=xx
(6)攻擊完成,攻擊者在受害者不知情的情況下,冒充受害者,讓AA.com執行了自己定義的操作
三、幾種常見的CSRF:
(1)GET型別的CSRF
這類攻擊非常簡單,只需要一個HTTP請求:
<img src=””>
(2)POST型別的CSRF
這種型別的 CSRF 利用起來通常使用的是一個自動提交的表單,如:
<form action=" method=POST>
<input type="hidden" name="account" value="airing" />
<input type="hidden" name="amount" value="10000" />
<input type="hidden" name="for" value="hacker" /></form>
<script> document.forms[0].submit(); </script>
訪問該頁面後,表單會自動提交,相當於模擬使用者完成了一次 POST 操作。可見這種型別的 CSRF 與第一種一樣,都是模擬請求,所以後端介面也不能將安全寄託在僅允許 POST 請求上。
(3)連結型別的 CSRF
連結型別的CSRF並不常見,比起其他兩種使用者開啟頁面就中招的情況,這種型別需要使用者點選連結才會觸發,但本質上與前兩種一樣。這種型別通常是在論壇釋出的圖片中嵌入惡意連結,或者以廣告的形式誘導使用者中招,攻擊者通常會以比較誇張的詞語誘騙使用者點選,例如:
<a href=" taget="_blank"> <a/>
由於之前使用者登入了信任的網站A,並且儲存登入狀態,只要使用者主動訪問這個頁面,則表示攻擊成功。
四、如何防禦CSRF?
(1)驗證HTTP Referer欄位
Referer是HTTP頭中的一個欄位,記錄了 HTTP 請求的來源地址。這種方法的顯而易見的好處就是簡單易行,網站的普通開發人員不需要操心 CSRF 的漏洞,只需要在最後給所有安全敏感的請求統一增加一個攔截器來檢查Referer 的值就可以。特別是對於當前現有的系統,不需要改變系統的任何已有程式碼和邏輯,沒有風險,非常便捷。
然而,這種方法並非萬無一失。Referer 的值是由瀏覽器提供的,雖然 HTTP 協議上有明確的要求,但是每個瀏覽器對於 Referer 的具體實現可能有差別,並不能保證瀏覽器自身沒有安全漏洞。
(2)請求中新增token並驗證
token就是服務端返回給客戶端類似sessionid那樣一長串的類值(長是為了防暴力猜解)。 CSRF依賴於瀏覽器訪問連結時自動對應網站的cookie帶上,token不放cookie(一般form表單加個hidden屬性的input標籤來存放) CSRF就沒法獲取token,這樣我們就可以透過檢測傳送過來的資料包中是否有正確的token值來決定是否響應請求。
這種方法要比檢查 Referer 要安全一些,token 可以在使用者登陸後產生並放於 session 之中,然後在每次請求時把 token 從 session 中拿出,與請求中的 token 進行比對,但這種方法的難點在於如何把 token 以引數的形式加入請求。對於 GET 請求,token 將附在請求地址之後,這樣 URL 就變成 。 而對於 POST 請求來說,要在 form 的最後加上 ,這樣就可以把 token 以引數的形式加入請求了。另外還有一個問題就是怎麼保障token本身的儲存安全,不要被駭客截獲。
五、如何檢測出CSRF漏洞?
使用Wukong(悟空)軟體程式碼安全漏洞檢測修復工具,掃描網站原始碼,可以發現CSRF漏洞的注入點,如下圖所示:
“CSRF跨站偽造攻擊漏洞”在CWE中被編號為CWE-352: Cross-Site Request Forgery (CSRF)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2787110/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 網路安全攻擊方式有幾種?常見型別介紹!型別
- Vim常見模式有幾種?模式
- 網站有幾種常見的指令碼型別?網路安全學習網站指令碼型別
- TCP/IP協議常見漏洞型別TCP協議型別
- DDOS常見的型別有哪些?型別
- 如何應對app或者網站常見的幾種攻擊型別APP網站型別
- 常見的三種沉浸式投影型別型別
- 常見的爬蟲型別有什麼?爬蟲型別
- 常見的三種HTTP代理服務型別HTTP型別
- css選擇器有哪幾種型別CSS型別
- 資料中心代理有哪幾種型別?型別
- 代理伺服器有幾種型別呢?伺服器型別
- react常見幾種事件宣告React事件
- 幾種常見的NO SQL DBSQL
- 常見的電腦電源型別區分 電源種類有哪些?型別
- 保姆級教程--常見的內網穿透有哪幾種內網穿透
- 常見的專用伺服器有哪幾種呢伺服器
- 常見的型別命名型別
- 美國伺服器有哪幾種型別?伺服器型別
- iOS常見的幾種加密方法iOS加密
- 幾種常見的CSS佈局CSS
- 幾種不常見的DNS解析記錄型別介紹DNS型別
- 2021網站常見漏洞有哪些網站
- 滲透測試9種常見漏洞
- Python的內建函式有哪些?常見型別!Python函式型別
- 常見的資料型別資料型別
- ERP整合常見的型別型別
- mysql常見資料型別MySql資料型別
- TypeScript 之常見型別(上)TypeScript型別
- TypeScript 之常見型別(下)TypeScript型別
- SQL 常見資料型別SQL資料型別
- 幾種常見取樣方法及原理
- MySQL中幾種常見的日誌MySql
- 幾種常見的JSP中文亂碼JS
- 淺析多媒體互動展廳幾個常見型別型別
- 網路安全滲透測試常見的7種型別!型別
- 五種常見的DNS攻擊型別及應對方式DNS型別
- 鐳速傳輸:資料整合的5種常見型別型別