问题
ASP 和 ASP.NET Web 应用程序在表单中使用称为 VIEWSTATE 的值。据我了解,这用于在对 Web 服务器的请求之间在客户端上保持某种状态。
我从未使用过 ASP 或 ASP.NET,需要帮助解决两个问题(和一些子问题):
1) 是否可以以编程方式欺骗/构造表单的 VIEWSTATE?澄清:程序可以查看表单并从中构造 base64 编码的 VIEWSTATE 值的内容吗?
1 a) 或者它可以总是被忽略吗?
1 b) 特定表单的旧 VIEWSTATE 是否可以在以后调用相同表单时重用,或者如果这行得通,那只是运气?
2)我从http://msdn.microsoft.com/en-us/library/ms972976.aspx#viewstate_topic12收集到可以打开安全性,以便 VIEWSTATE 免受欺骗。程序是否可以检测到 VIEWSTATE 以这种方式受到保护?
2 a) EVENTVALIDATION 值的出现与安全 VIEWSTATE 之间是否存在一对一的映射?
关于 1) 和 2),如果是,我可以提示我将如何做到这一点吗?对于 2) 我想我可以对该值进行 base64 解码并搜索始终在未加密的 VIEWSTATE 中找到的字符串。“第一的:”?还有什么?
背景
我制作了一个小工具来检测和利用所谓的 CSRF 漏洞。我使用它来快速证明我发送给受影响网站所有者的此类漏洞的概念。我经常遇到这些带有 VIEWSTATE 的表单,而这些我不知道它们是否安全。
编辑1:稍微澄清了问题1。
编辑 2:添加了斜体文本。