2016-01-04 22 views
1

想象一下你有一個很大的合作。現在有人發現只能通過自己的站點工作的CSRF漏洞(因爲該站點通過檢查Referer-Header而沒有CSRF令牌)。這可以執行關鍵操作,但前提是請求來自您的網站。這意味着一個小型XSS攻擊可能會通過此漏洞執行更大的操作。你會認爲這是一個嚴重的漏洞,應該將其作爲CSRF攻擊獎勵嗎?你會數下面的情況作爲(危險的)CSRF嗎?

+0

我投票結束這個問題作爲題外話,因爲不直接編程相關。 //引用者的不可靠程度應該是常識 - 所以如果你的「安全」部分是基於它的話,那已經是個壞消息了。 – CBroe

+1

對不起,但我發現了一個大合作中的漏洞,正是這種情況。除了XSS或使用舊瀏覽器的弱點,還有其他方法可以執行攻擊嗎?我只想爲他們可能會問的問題做準備(如果他們詢問或決定拒絕獎勵)。編輯: 他們真的是不可靠的。我在網上搜索,發現多個來源,說它很好,但不是最好的方法。 – nullexception

回答

1

這就是着名的On Site Request Forgery

XSS漏洞總是勝過任何CSRF/OSRF攻擊。試想一下,如果表單不受引薦者保護,但受到令牌的保護,則XSS攻擊可以簡單地從DOM讀取令牌,然後提交表單。

因此,網站沒有額外的風險。唯一的例外是您將Open Redirect Vulnerability與作爲GET實施的不安全操作組合在一起。

說出以下網址可用:

https://example.com/delete_my_account 

處理程序驗證引薦,以確保請求來自https://example.com/*

然而,也有另一個可用的網址發出JavaScript重定向:

https://example.com/redirect_to_site 

這被稱爲站點內如下跟蹤外部鏈接:

https://example.com/redirect_to_site?https://google.com 

但是一個OSRF攻擊會可以通過構建一個CSRF攻擊重定向到如下內容:

https://example.com/redirect_to_site?https://example.com/delete_my_account 

由於引用者被選中,這將驗證請求,因爲只有delete_my_account在這裏檢查引薦者,因爲這被認爲是不安全的行爲。但是,因爲它可以通過不受保護的處理程序重定向,所以可以挫敗引薦者保護。

因此,除非網站上有這樣的功能,或者除非網站允許用戶內容構建這樣的鏈接,否則在檢查引薦者的CSRF保護方面是沒有漏洞的。

注意:在任何人提到引用者標頭可能被欺騙之前,這隻能從攻擊者自己的連接才能實現。在CSRF攻擊中,你需要欺騙受害者的連接 - CSRF是針對另一個用戶的攻擊 - 因此儘管引用者是弱保護,但在許多情況下它仍然是足夠的。