想象一下你有一個很大的合作。現在有人發現只能通過自己的站點工作的CSRF漏洞(因爲該站點通過檢查Referer-Header而沒有CSRF令牌)。這可以執行關鍵操作,但前提是請求來自您的網站。這意味着一個小型XSS攻擊可能會通過此漏洞執行更大的操作。你會認爲這是一個嚴重的漏洞,應該將其作爲CSRF攻擊獎勵嗎?你會數下面的情況作爲(危險的)CSRF嗎?
1
A
回答
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是針對另一個用戶的攻擊 - 因此儘管引用者是弱保護,但在許多情況下它仍然是足夠的。
相關問題
- 1. 在什麼情況下可以免於CSRF的危險?
- 2. 是jQuery.html()危險嗎?
- 3. EVAL()。這是危險的嗎?
- 4. 靜態方法:在這種情況下使用它有什麼危險嗎?
- 5. 這會造成WAR危險嗎?
- 6. 並行寫入Ehcache會有危險嗎?
- 7. 在簡單的情況下同時寫入和讀取布爾值的危險
- 8. 矢量自動調整多線程代碼中的危險情況嗎?
- 9. Ajax的危險
- 10. `std :: string(strerror(errno))`危險嗎?
- 11. 什麼是... mysql_real_escape_string?危險嗎?
- 12. Git嫁接危險嗎?
- 13. 危險的PHP函數
- 14. c:gets()和fputs()是危險函數嗎?
- 15. 在這種情況下你會使用類型類嗎?
- 16. Ruby中的#tap方法危險嗎?
- 17. 這是危險的嗎?關於事件
- 18. 這是很危險的Javascript嗎?
- 19. ReadFully()有窒息的危險嗎?
- 20. 危險的做法?
- 21. 在Django中使用動態數據庫TEST_NAME會危險嗎?
- 22. 在Python函數中使用kwarg = kwarg會有什麼危險嗎?
- 23. 保持管理頁面管理數據庫危險嗎?
- 24. 下面的情況會導致內存泄漏嗎?
- 25. 在Python.SocketServer.TCPServer中有很長的request_queue_size會很危險嗎?
- 26. 在會話中存儲user_id會危險嗎?
- 27. android,在directory_downloads下載文件需要危險的權限嗎?
- 28. 螺紋爲什麼危險?
- 29. 爲什麼SafeHandle.DangerousGetHandle()「危險」?
- 30. 你會爲這種情況推薦一個查找表嗎?
我投票結束這個問題作爲題外話,因爲不直接編程相關。 //引用者的不可靠程度應該是常識 - 所以如果你的「安全」部分是基於它的話,那已經是個壞消息了。 – CBroe
對不起,但我發現了一個大合作中的漏洞,正是這種情況。除了XSS或使用舊瀏覽器的弱點,還有其他方法可以執行攻擊嗎?我只想爲他們可能會問的問題做準備(如果他們詢問或決定拒絕獎勵)。編輯: 他們真的是不可靠的。我在網上搜索,發現多個來源,說它很好,但不是最好的方法。 – nullexception