* 跨站請(qǐng)求偽造漏洞利用的重點(diǎn)攻擊者了解受害者所在的站點(diǎn)
* 跨站請(qǐng)求偽造漏洞的技術(shù)重點(diǎn)在于攻擊者需要精心構(gòu)造可以完成目標(biāo)裝點(diǎn)數(shù)據(jù)修改的URL
* 跨站請(qǐng)求偽造漏洞的方法重點(diǎn)在于攻擊者的目標(biāo)站點(diǎn)具有持久化授權(quán)cookie或者受害者具有當(dāng)前會(huì)話cookie,并且目標(biāo)站點(diǎn)沒有對(duì)用戶在網(wǎng)站行為的第二授權(quán)
我們假定三個(gè)角色:攻擊者、用戶、網(wǎng)上銀行、一個(gè)論壇。
攻擊的流程主要分以下幾個(gè)步驟:
1、用戶連入網(wǎng)上銀行操作,該網(wǎng)上銀行使用持久化授權(quán)cookie,只要用戶不清除cookies,任何時(shí)候連入網(wǎng)上銀行時(shí),該銀行網(wǎng)站都認(rèn)為該用戶是有效的;
2、攻擊者在論壇上發(fā)表圖片,內(nèi)嵌有GET或POST方法的URL并指向該網(wǎng)上銀行,如果該URL由一個(gè)銀行的合法用戶發(fā)出,則該URL會(huì)使用戶帳戶被修改;
3、用戶瀏覽此論壇并點(diǎn)擊該圖片,攻擊者預(yù)設(shè)的URL被由用戶發(fā)往銀行站點(diǎn),因該用戶未清除cookie,該請(qǐng)求有效,用戶帳戶在用戶并不知情的前提下被成功修改。
我們注意到,這個(gè)過程很象跨站腳本攻擊,但實(shí)際上,是完全不同的。跨站腳本攻擊需要在客戶端寫入惡意代碼,以搜集cookie等信息,而跨站請(qǐng)求偽造則根本不需要向用戶端寫入任何東西,直接利用銀行授權(quán)的持久認(rèn)證和用戶未清理的cookie。
這里的問題在于,論壇用戶不能上傳js腳本,于是直接利用URL來誘騙用戶,以致于完成數(shù)據(jù)操作。
由此可見,該攻擊的重點(diǎn)在于要知道目標(biāo)站點(diǎn)和目標(biāo)用戶,并且該受害站點(diǎn)沒有使用更多的授權(quán)認(rèn)證。
對(duì)于web站點(diǎn),將持久化的授權(quán)方法(例如cookie或者HTTP授權(quán))切換為瞬時(shí)的授權(quán)方法(在每個(gè)form中提供隱藏field),這將幫助網(wǎng)站防止這些攻擊。一種類似的方式是在form中包含秘密信息、用戶指定的代號(hào)作為cookie之外的驗(yàn)證。
另一個(gè)可選的方法是“雙提交”cookie。此方法只工作于Ajax請(qǐng)求,但它能夠作為無需改變大量form的全局修正方法。如果某個(gè)授權(quán)的 cookie在form post之前正被java script代碼讀取,那么限制跨域規(guī)則將被應(yīng)用。如果服務(wù)器需要在Post請(qǐng)求體或者URL中包含授權(quán)cookie的請(qǐng)求,那么這個(gè)請(qǐng)求必須來自于受信任的域,因?yàn)槠渌蚴遣荒軓男湃斡蜃x取cookie的。