4.2 Cross-Site Request Forgery (CSRF)

CSRF簡介

CSRF是Cross Site Request Forgery的縮寫(也縮寫為XSRF)

直譯過來就是跨站請求偽造的意思

也就是在用戶會話下對某個CGI做一些GET/POST的事情

 偷竊使用者資訊

產生假的request

 幫使用者產生request 但使用者和伺服器端都不知道

 

CSRF (sea-surf) 別名 one click attack , session riding

CSRF經常會利用RIP及DNS來下手,讓使用者在連往目的網頁前,先被帶到attacker伺服器,並在此下手竊取資料,有點像是Pharming,只差在不會將user完全帶到有害的server上。

與XSS不同的是,CSRF有可能造成整個LAN秩序大亂,或使某個end device變成attacker所利用的router,並將同樣網域內的end devices,全部帶往attacker的server。

 

CSRF  method  

 

  上課的例子: 一個買股票的網站 正常狀況

user                                                      server

1. 輸入帳號密傳送 

                                               2.收到之後傳送一個認證(cookies)

3.可以開始買賣股票等動作

                                               4.收到使用者動作之後執行

 

不正常狀況 : 

其中在瀏覽網站時 有另外一個網頁開啟 ( CSRF page 不過他是hidden iframe)

其中 如果cookie被竊取狀況下 這個CSRF page 就在使用者不知情的狀況下利用這個

session cookie做買賣股票等其他動作

 

上面的狀況是用iframe 送出request  不一定要iframe

可以是 <IMG SRC="http://XXX.CSRF.XXX/">

可以是 <SCRIPT SRC="http://XXX.CSRF.XXX/">

只要是在tag裡面的都可以送 (簡單說只要可以連出去都可以送request)

 

CSRF 方法 >> post 和 get  投影片有詳細程式碼這邊不PO

 

Web2.0 APplication and CSRF >> 在不同2.0應用和不同資料結構,data source結合

 

  AJAX >> 這時不只可以送request , 也可以送 XHR call

意思是 假設現在user端有 XHR 的程式在執行, 其中 XHR objext 在 AJAX 裡面執行時

  他就可能一直送出

 

Data Structures>> 在使用者端,他不只用的是get post的參數

其中可能包含了 XML , JSON , JavaScript object 這些資料結構比過去複雜

(這些投影片上都有範例程式碼)


CSRF and Getting Cross-Domain Information ACcess

  CSRF主要是偷取使用者的 profile 資訊 , 前面有提到CSRF會幫使用者送出request,

也可能偷到之後不去做request ,而是傳到 attacker 自己的site

 

 

圖中可以看到  CSRF payload >> 這樣使用者就中獎了

之後 attacker 假裝使用者 對trading site 發出request 要拿 profile資訊

get profile 資訊  傳回attacker 自己的網站