首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟CSRF攻击

模拟CSRF攻击
EN

Stack Overflow用户
提问于 2011-07-07 07:12:40
回答 1查看 3.9K关注 0票数 5

我想模拟CSRF攻击来检查我的网站漏洞。我在我的asp.net but应用程序上尝试了一下,但模拟失败。所以请帮我模拟一下CSRF攻击。我已经通过使用test.aspx进行了模拟。

代码语言:javascript
复制
  <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>

我还漏掉了什么?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2011-07-07 07:32:52

要模拟CSRF,您不会在恶意代码中包含cookie或会话信息。CSRF的全部要点是,执行的代码不知道您的会话或cookie信息。它只是假定浏览器将在其对应用程序的请求中包含该内容。

因此,为了进行测试,假设您有一个页面Transfer.aspx,它接受POST方法和txtFrom、txtTo和txtAmount参数,并带有一个按钮btnSubmit,并且您希望尝试从帐户1转移到帐户2。您的恶意代码可能是这样的:

代码语言:javascript
复制
<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值。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6604114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档