當存心不良的web站點導致使用者的瀏覽器在可信的站點上進行非意願的活動時,我們就說發生了跨站請求偽造(csrf)攻擊。這些攻擊被譽為基於web的漏洞中的「沉睡的巨人」,因為網際網路上的許多站點對此毫無防備,同時還因為這類攻擊一直為web開發和安全社群所忽視。
一、概述
當存心不良的web站點導致使用者的瀏覽器在可信的站點上進行非意願的活動時,我們就說發生了跨站請求偽造(csrf)攻擊。跨站請求偽造攻擊亦稱跨站引用偽造(xsrf),會話疊置和混淆**人攻擊。我們之所以使用術語csrf,是因為它是描述這類攻擊時最常用的術語。這些攻擊被譽為基於web的漏洞中的「沉睡的巨人」,因為網際網路上的許多站點對此毫無防備,同時還因為這類攻擊一直為web開發社群和安全社群所忽視。目前,人們尚未將csrf攻擊列入web安全威脅分類中,學術和技術文獻也鮮有述及csrf攻擊者。csrf攻擊易於識別、易於利用同時也易於修補。它們之所以存在,是由於web開發人員對csrf攻擊的根源和嚴重性的無知所致。web開發人員也可能還誤認為對更有名的跨站指令碼(xss)攻擊的防禦措施同時也能防禦csrf攻擊。
在本文的下篇中將向讀者介紹本年度在一些大型站點上發現的幾個嚴重的csrf漏洞,這些漏洞允許攻擊者採集使用者的電子郵件位址,侵犯使用者隱私並操控使用者帳戶。同時,我們還將介紹對伺服器端的改造方案,以便使站點能夠全面防禦的csrf攻擊。該方案有多種優點,這得益於它們不使用伺服器的狀態,同時不妨礙典型的web瀏覽活動。此外,我們也介紹了乙個客戶端的瀏覽器外掛程式,它可以保護使用者免受某些型別csrf攻擊。伺服器端保護措施能使站點本身具備完全防禦csrf攻擊的能力,而客戶端保護措施使使用者未雨綢繆,提前採取防疫措施,以便在站點沒有採取防護措施的情況下也能夠免受csrf攻擊。儘管現在web開發人員已經有了防禦此類攻擊的工具,但是仍希望大家能提高對csrf攻擊的防範意識。
二、跨站請求偽造攻擊原理
為了便於讀者對於跨站請求偽造漏洞的原理,下面我們用圖例進行解釋。圖1、圖2和圖3為大家介紹了csrf攻擊的一般原理。
圖1 瀏覽器和**建立認證的會話
這裡,web瀏覽器已經跟可信的站點建立了乙個經認證的會話。之後,只要是通過該web瀏覽器這個認證的會話所傳送的請求,都被視為可信的動作。
圖2 瀏覽器傳送有效的請求
上圖中,瀏覽器正在傳送乙個有效的請求,即web瀏覽器企圖執行乙個可信的動作。可信的站點經確認發現,該web瀏覽器已通過認證,所以該動作將被執行。
圖3 惡意站點偽造的有效請求
上圖中,發生了乙個csrf攻擊。發起攻擊的站點致使瀏覽器向可信的站點傳送乙個請求。該可信的站點認為,來自該web瀏覽器的請求都是經過認證的有效請求,所以執行這個「可信的動作」。csrf攻擊之所以會發生,其根本原因就是web站點所驗證的是web瀏覽器而非使用者本身。下面我們用乙個具體的示例來詳細介紹csrf攻擊。
假設某個站點存在csrf攻擊漏洞,比如乙個基於web的電子郵件**,使用者通過該站點可以傳送和接收電子郵件。該站點利用隱式認證方式來驗證使用者身份,它的某個頁面,如包含乙個供使用者輸入收信人的電子郵件位址、主題和訊息的html表單,以及乙個名為「send email」的按鈕。
recipient』s email address:
subject:
message:
:當example.com站點的使用者單擊「send email」時,該使用者輸入的資料就會通過乙個get請求傳送到由於get請求只是簡單地將表單資料附加到url上,所以使用者傳送的url如下所示。這裡假設該使用者輸入的收信人為「[email protected]」,主題為「hello」,訊息為「what』s your name?」:
需要注意的是,上面的url的資料已經過編碼,@被轉換成%40,等等。
根據收到的資料向使用者指定的收信人傳送一封電子郵件。注意,send_email.htm所做的只是提取資料,隨後用該資料完成乙個動作。它並不理會該請求來自**,它唯一關心的是收到的請求。這意味著,即使上述url是使用者手動輸入到他的瀏覽器的,那麼example.com也照常傳送一封電子郵件。例如,如果該使用者在其瀏覽器位址列中鍵入了下列三個url,那麼send_email.htm頁面將三封電子郵件(分別發給bob、alice和carol ):
這裡會出現csrf攻擊,原因是send_email.htm會把收到的資料悉數提取,然後發電子郵件。它沒有對自compose.htm頁面的表單中的資料進行檢驗。因此,攻擊者只要設法讓使用者向send_email.htm傳送乙個請求,那麼send_email.htm這個頁面就會引起example.com傳送一封電子郵件,要緊的是,該郵件是以該使用者名義傳送的,並且包含的是攻擊者任
cPanel跨站請求偽造漏洞
發布日期 2008 04 28 更新日期 2008 05 05 受影響系統 cpanel cpanel 11.18.3 build id 21703描述 cve can id cve 2008 2043 cpanel是基於web的工具,用於自動化控制 和伺服器。cpanel沒有驗證使用者通過http...
CSRF跨站請求偽造 漏洞修復
csrf cross site request forgery 中文名稱 跨站請求偽造,也被稱為 one click attack session riding,縮寫為 csrf xsrf。你這可以這麼理解csrf攻擊 攻擊者盜用了你的身份,以你的名義傳送惡意請求。csrf能夠做的事情包括 以你名義...
跨站請求偽造
跨站請求偽造 英語 cross site request forgery 是一種挾制使用者在當前已登入的web應用程式上執行非本意的操作的攻擊方法。跟跨 指令碼 xss 相比,xss利用的是使用者對指定 的信任,csrf 利用的是 對使用者網頁瀏覽器的信任。防止方法 1,利用referer判斷,但是...