asp.net - 模拟CSRF攻击

标签 asp.net csrf simulate csrf-protection

我想模拟CSRF攻击来检查我的网站漏洞。我在asp.net Web应用程序上尝试了它,但是无法模拟。因此,请帮助我模拟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>

我还想念什么?
提前致谢。

最佳答案

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

因此,要进行测试,假设您有一个页面Transfer.aspx,它使用btnSubmit按钮接受POST方法和txtFrom,txtTo和txtAmount参数,并且想要尝试从帐户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值是什么,因此,在正确登录后,您需要从页面中复制该值。这假定您的viewstate是恒定的,而不考虑用户或 session 。

现在您有了一个恶意页面。如果您在一个选项卡上登录,请在另一个选项卡上打开它并提交,如果您容易受到攻击,则将进行转移。原因是发送了属于mysite.com的cookie,这意味着将使用另一个选项卡上仍处于事件状态的 session 。

要解决此问题,您需要将每个 session 的唯一值包含在帖子中。这可以通过使用ViewStateUserKey并将其设置为ASP.NET session ID或哈希值来轻松实现。这将使您的__VIEWSTATE值在每个 session 中都是唯一的,这意味着您将不再处于脆弱状态,因为没有人可以预测您的__VIEWSTATE值。

关于asp.net - 模拟CSRF攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6604114/

相关文章:

apache-flex - 弹性 : Simulate key press

matlab - 为什么我在 MatCont 中收到 "current step too small"错误?

c# - 如何在代码隐藏中从 GridView 访问选定的 Boundfield 值

ASP.NET 网站项目、Mercurial/Git、部署——一种简单的方法?

c# - 捕获数据库约束错误的最佳方法

c# - 模拟鼠标光标在 c# 中在两个坐标之间移动

c# - 用代码修复 'The DELETE statement conflicted with the REFERENCE constraint'错误

android - 无法处理 CakePHP 和 android 之间的 csrf token

python - 手动CSRF验证

django - csrf token 正在显示?