我想模拟CSRF攻击来检查我的网站漏洞。我在我的asp.net but应用程序上尝试了一下,但模拟失败。所以请帮我模拟一下CSRF攻击。我已经通过使用test.aspx进行了模拟。
<form name="form1" id="form1" runat="server" method="post" action="mysite.com">
<script type="text/javascript">
document.cookie[".ASPXAUTH"] = "someaspxauth";
document.cookie["ASP.NET_SessionId"] = "somesessionid";
document.form1.submit();
</script>
</form>我还漏掉了什么?提前谢谢。
发布于 2011-07-07 07:32:52
要模拟CSRF,您不会在恶意代码中包含cookie或会话信息。CSRF的全部要点是,执行的代码不知道您的会话或cookie信息。它只是假定浏览器将在其对应用程序的请求中包含该内容。
因此,为了进行测试,假设您有一个页面Transfer.aspx,它接受POST方法和txtFrom、txtTo和txtAmount参数,并带有一个按钮btnSubmit,并且您希望尝试从帐户1转移到帐户2。您的恶意代码可能是这样的:
<form action="http://www.mysite.com/Transfer.aspx" method="post">
<input type="hidden" name="txtFrom" value="1" />
<input type="hidden" name="txtTo" value="2" />
<input type="hidden" name="txtAmount" value="500" />
<input type="hidden" name="__VIEWSTATE" value="[PUT VIEWSTATE VALUE HERE]" />
<input type="hidden" name="__EVENTVALIDATION" value="[PUT EVENTVALIDATION VALUE HERE]" />
<input type="submit" name="btnSubmit" value="Go" />
</form>您必须事先知道viewstate和eventvalidation的值是什么,所以当您正确登录时,需要从您的页面复制该值。这假设您的视图状态是恒定的,而与用户或会话无关。
现在你有了一个恶意的页面。如果您在一个选项卡上登录,请在另一个选项卡中打开此选项卡,然后提交它。如果您是易受攻击的,则会发生传输。原因是发送了属于mysite.com的cookies,这意味着将使用您的会话,该会话在另一个选项卡上处于活动状态。
为了解决这个问题,你需要在你的帖子中包含一个唯一的每个会话的值。最简单的方法是使用ViewStateUserKey,并将其设置为您的ASP.NET会话ID或它的散列。这将使您的__VIEWSTATE值在每个会话中都是唯一的,这意味着您将不再易受攻击,因为没有人能够预测您的__VIEWSTATE值。
https://stackoverflow.com/questions/6604114
复制相似问题